“如果没有从事研发,学习自动化的我可能在装水表”
随着 Z 世代步入职场,曾经不可一世的 80、90 后逐渐成为各行各业的中流砥柱,特别是在年轻化尤为显著的 IT 行业。
出生于 1991 年金牛座的梁灏,是一位在前端领域小有名气的 UI 组件库 View Design(前身 iView)作者。他的身上有着属于金牛座鲜明的特点,有主见、意志坚定、热情、有耐心和责任感。
他曾仅用了半年的时间,一个人搞了一个产品,覆盖前端、后端、运维、产品、设计、iOS & Android 客户端;更因为偶然间参加一次创新大赛,独立开发了如今被 CSDN、小米、三星、京东、BOSS 直聘等诸多 IT 公司广泛应用的 View Design 框架;除此之外,他还是一名拥有近 8 年开发经历的资深开源爱好者。
在本次采访中,梁灏与我们分享了不一样的程序人生成长历程,同时,属于独立开源开发者的抉择与思考,也希望本文能给正进入 IT 行业的开发者、进行产品研发的程序员、独立做开源的从业者们带来裨益。
梁灏,iView(现 View Design)创始人
来自网页设计的技术启蒙
从一个偶然的兴趣,发展到未来的职业。
2004 年,刚上初一的的梁灏得益于父亲购买的网页设计三剑客的光盘,首次接触计算机相关的技术。现回顾,那时的学习算不上真正的编程,更应该叫做网页制作,类似制作 PPT。
就这样,怀揣着对互联网的好奇心,梁灏开启了属于自己的计算机启蒙。
学习过程中,偶然间,梁灏在彼时刚流行起来的 QQ 上认识了一位大自己几岁的网友,二人相互帮助相互学习。没过多久,梁灏便知道了如何用 1 元钱购买域名,如何获取免费的虚拟主机,如何部署网站。
经过一段时间的积累,梁灏成为了同学眼中的计算机学霸。有一次在高中的微机课上,当用 IE6 浏览器打开自己设计的网站,并告诉旁边同学这网站是自己做的时候,梁灏直言,“感觉当时酷极了”。
也就是在那时,未来想要互联网工作的想法便深深地印在了梁灏的心中。
“如果我没有从事研发,现在可能在装水表”
人生面临着很多选择,无论哪一种选择,都不会是终点。
高中毕业之后,梁灏考上了天津理工大学的自动化专业。时隔多年,再回首,我们都清楚地明白,高考只能算是人生的一个重要的转折点,并不是人生的终点目标,决定未来走向的是我们接下来一次又一次的选择。
因此,在谈及对于高考毕业生如何做志愿选择时,很多人觉得专业的选择大于城市、学校的选择,但梁灏有着与他人不一样的看法。相较于专业,梁灏认为,学校和城市实则更为重要。因为专业,只有学了才知道怎么回事。“大学教给我们的,不应该只是书本上那些知识,最重要的是提供了一个自由的平台,在这四年,有的是时间奇思妙想,可以结识志同道合的朋友,放开思维,做自己认为对的事就可以了。经历是大学最宝贵的财富。"对于想要走程序员这条路的学生而言,还是需要靠兴趣驱动。
如果说梁灏本人选择自动化是屈于现实,那么,忠于兴趣的计算机之路即使是咬着牙也要继续走下去。
2010 年,梁灏正式踏入了大学的校门。也正值 QQ、飞信、人人社交平台蓬勃发展,手机市场迅速从诺基亚转向 Android,移动开发迎来鼎盛时期。从初中时就开始接触网页制作的梁灏,入学不久就加入了大学期间很出名的神秘组织 6green (理工人,创建于 2002 年 8 月,现已关停,是天津理工大学的学生综合服务网)网站,开始系统地学习前端开发。
6green 工作室
在”兴趣和一颗想做产品的心“的驱动下,梁灏对于编程的执着,可以说已经达到了”疯狂“的程度。
正如其自己所述,「从大一下学期开始,直到毕业,我就没听过一节课,每天都是抱着犀牛书(《JavaScript权威指南》)和小红书(《JavaScript高级程序设计》),坐在教室最后一排的角落,像一个“孤勇者”。写代码从早上写到深夜两、三点,在工作室打地铺住一个月,都是常有的事情」。
大学时的技术书籍
功夫不负有心人,付出也终有了小收获。那个时候智能手机刚开始普及,但学生查询课程表、成绩都是在电脑上登录教务处系统,而且教务处的课程表很难用,不是按时间排序,而是按课程排序。发现这个问题后,梁灏便着手开发了一款 App——“校信”,模拟登录教务处系统,爬取数据后,再将课程表整理成“给人”看的按每周时间排序。这个 App 研发完成之后,很快在校园传开,一个星期就积累了 2000 用户。稍显遗憾的是,后来由于去腾讯实习,梁灏就没再继续维护这款 App,而之后出现了一个叫“超级课程表”的明星 App。
校信 App
不过,对于一名普通且自动化专业的学生而言,一方面要想着让本专业顺利毕业,一方面又要自学感兴趣的东西,梁灏感慨道,”其中最大的挑战那可能就是没有老师教,没有计算机学院的环境,毕竟自己的专业跟这关系不大。“
好在最后顺利拿到了本专业的双证。
在后来选择互联网从业方向时,梁灏打趣地说道,“记得毕业前夕,学校组织自动化学院参观了一个水表工厂。如果我没有从事互联网研发工作,现在可能正在装水表。”
Vue.js 启蒙,View Design 应运而生
择业伊始,梁灏表示,“坦率地讲,我在毕业后找工作并不是很顺利。”
与大部分应届生一样,梁灏的第一份工作也想进 BAT,遗憾的是,当时他几乎把校招的大厂面了个遍,还是一个 offer 也没有拿到。于是在职场的前几年,他在各种创业公司实践中不断地提升自己的能力。无论是前端,还是后端、运维、测试,只要工作有需要以及有兴趣,他都愿意去做尝试,由此也练就了一身「全栈」的本领。
时间来到 2015 年,当尤雨溪开发的 Vue.js “杀”出被 Angular、React 等国外技术重围的前端框架领域,梁灏发现它非常适用于移动端。于是,抱着试一试的目的,他用 Vue.js、Tornado、Python 等技术做了个程序员社区 TalkingCoder,产品有点像 CSDN 博客加知乎问答。从产品、设计、前端、后端、运维、iOS & Android 客户端,几乎都是他自己完成的,这也是他第一次一个人做出一整个产品。
梁灏,早年间创业照
虽然 TalkingCoder 的结局和校信 App 一样,都是昙花一现,但通过这次愉快的尝试,梁灏深刻地感受到编程带来乐趣的同时,也得出了一个结论:Vue.js 未来会成为主流的开发框架。这也为日后的 iView 奠定了基础。
在 2016 年,作为一名小有经验的前端工程师,梁灏偶然参加了所在公司组织的一次创新大赛,在这次大赛上,他围绕 Vue.js 框架带来了组件库 iView(现更名为 View Design,https://www.iviewui.com/)。
之所以要开发这样一套组件库,梁灏表示,View Design 的诞生离不开 Vue.js 的流行,而 Vue.js 的流行,离不开当时前端开发模式的变革。在彼时的前端环境下,一款名为 Webpack 的工具开始被越来越多的团队使用,主要用来构建 SAP(单页面富应用)的工程。借助轻量级、渐进式的理念和独有的 .Vue 组件化模式,结合 Webpack 可以很快速地开发出前后端完全分离的 Web 应用,正因此 Vue.js 迅速崛起。而从根本来看,Vue.js 的核心,就是组件。
在这样的契机下,View Design 瞅准了机会,提供了一系列封装好的基础组件和 UI 样式,帮助企业快速构建网站。
相比行业中大厂背书的 Ant Design、Arco Design、TDesign 等框架工具,View Design 虽然属于个人开源项目,但在 Vue 生态中入局时间相对较早,抢占了第一批客户,并且长期迭代,发展生态,树立了自己的口碑。
与此同时,View Design 最核心的基础组件库产品 View UI Plus 采用了完全开源、免费的模式,在提供近 100 个组件数量的同时,也于近期完成了向 Vue.js 3.0 的大升级与优化。除此之外,它还为企业级用户提供了 Admin Plus 和 iCRUD 两款更上层的产品,进一步提高开发效率。
View Design 首页(http://iviewui.com/)
依靠开源,View Design 被越来越多的企业使用和认可。至于选择开源这条路,梁灏称,当时做开源纯粹是为了兴趣和提升技术。一方面可以使用最前沿的技术栈,一方面也是提升团队和公司的开发效率。那个时候同类产品还比较少,竞争也不激烈,所以 View Design 才得以快速开辟市场,成为 GitHub 中的热门项目。
在梁灏的愿景中,他希望 View Design 整个生态要做的事,就是把原先一个团队的工作,精简到由一个后端或全栈人员就能完成。也是因为找到了自己真正的兴趣方向,他在耕耘 View Design 产品和开源领域一干就是 6 年,过程虽然辛苦,但是结识了很多志同道合的人。梁灏回忆道,曾经有两位瑞典工程师接连贡献了小半年的代码,为了方便沟通,他们还下载了微信。有趣的是,他们当地法律规定,使用开源项目到生产环境时,开发者有义务来修复开源项目的 Bug,其实,这点非常值得国内公司学习。
两位瑞典开发者照
在创业公司工作的几年间,忙碌且充满挑战,现在回想起来,梁灏觉得那段经历非常幸运,因为在那几年,真正地学到了技术和如何做产品,并锻炼出认真和追求细节的性格。
很多“用爱发电”的个人开源开发者现状
众人皆知,对个人开源开发者而言,开源很难。一方面,开源需要持续付出;另一方面,除了开源项目作者,很少有贡献者能长期贡献代码,往往就是陪伴一程之后,不少人就会慢慢“潜水”。
对于这一点,梁灏也直言,中国个人开源很惨,很多人真的是在“用爱发电”。
现实来看,不少身处北、上、深等一线城市的优秀程序员,在面对高昂的房价和物价时,不得不让兴趣妥协。此前,也有开源圈的技术人称,把北京的房卖了,回老家买套房,这样就可以专心做开源了。这也是为什么现在大多开源项目都是依托于公司的主要原因,很多开源爱好者难以全职的根本问题就是生存问题。很多开源作者,能写好代码,但却没法得到应有的回报,毕竟是程序员,不是商人。对此,梁灏指出,“只有中国程序员的付费意识得到根本改变,个人开源者才能更好地生存,也会有更多好的开源产品。”
不过,这并不代表个人就不能做开源产品。好的开源项目应该不需要在乎背景。以 Vue 为例,彼时靠着尤雨溪一个人支撑起来的 Vue,现在和 Facebook 的 React、Google 的 Angular 三足鼎立。只是相对而言,如果开源项目能够有大厂的背景,确实能在运营层面带来一些支持和影响力,但这不是决定性因素,产品质量才是最重要的。
立足开源,最难的是解决客户核心痛点和持续维护。在 Vue 组件领域,梁灏表示,同类产品数不胜数,各家也都大同小异,所以谁提供的组件丰富,谁的功能多、Bug 少,甚至谁更好看,就更受客户青睐。
作为独立开发者做开源,最难的还是权衡技术的付出和收益,毕竟资金是一个开源项目能持久发展的动力。
对开源开发者的建议
因此,如果想要进入开源领域的开发者,梁灏立足自身的经验,分享了几点建议:
首先需要明确好自身做开源的目的。如果是抱着兴趣做开源,不在意别人是否使用,自己用就好,那么自身投入的整个过程必然是最有意思和放松的。如果是以当下主流的兼职方式参与开源,由于也需要工资养家糊口,单靠开源来盈利,太困难了,成功的案例也相当少。在梁灏看来,除去那些 KPI 的开源项目,大多开源作者对自己开源项目还是很有感情的,所以牺牲自己工作外的时间做开源,并不会是一种负担,反而是一种享受。有的人喜欢逛街,有的人喜欢打游戏,有的人就是喜欢做开源。
其次,面对日新月异的新技术,开源开发者也应该放平心态。回顾过往,在 Vue 和 Webpack 诞生前,开发网页都是 jQuery 一把梭,现如今,恐怕很多前端工程师连怎么操作 DOM 都已不会。梁灏表示,Vue 早晚也会成为下一个 jQuery,到那时,View Design 自然也会被淘汰。永远都会有新的技术和框架出现,作为程序员,如果不想被市场淘汰,除了不断学习新知识,还应该深刻理解编程的本质和业务。技术永远是为业务服务的,单纯的为了改变技术而改变,是没有意义的。
继而,梁灏也引用自己曾在《如何做好一个开源项目》文章中的片段以此分享给更多的开发者们:
1.不要盲目造轮子。
每一个做开源项目的开发者,都是有目的的,如果你做一个开源项目没有任何目的,那你的目的多半是要造个轮子来提升下技术。一般来说,在决定做一个开源项目前,都要做市场调研,自身要很清楚地知道所做的项目弥补了同类产品的哪些不足,或者有哪些新的特性,因为它们是用户选择你的开源项目的主要依据,否则内容都一样,为什么不选一个成熟的呢。
2.做了东西要用
如果你足够重视你的开源项目,应该亲自使用并且安利别人使用来收集反馈。你虽然是开源项目的作者,也熟悉项目的每一行代码,但你的使用经验不一定比用户强,只有用了才会发现问题。
3.第一批用户
开源项目做好后,要获得第一批使用者。现在的环境,大多是公司或团队主导做开源,个人的很少,所以你的公司或团队自然就是第一批用户,做开源的主要目的,也是服务他们。
4.生态
生态不是与生俱来的,当你的开源项目有了一定的规模后,可以考虑发展生态体系。完善的生态体系对于新用户来说,可以最快速搭建产品,减少学习和开发成本;对于观望者(正在决定是否使用的人)来说,更愿意选择生态完善的开源项目。所以,你的开源项目生态越完善,使用者也会越多。
5.让更多的人参与
开源项目从来就不是一个人的事,一个健壮的开源项目,需要不断有人贡献代码。在项目有了一定知名度和使用人群后,自然会有不少 PR 进来,知名的开源项目 contributors 都有几百人,哪怕修改一行代码,只要被 merge,就算一个 contributors。最核心的维护者一般不会超过 5 人,而且除了作者本人,很多都是阶段性的,毕竟是开源,大多数人还是兼职做的,能贡献一点是一点,业务忙了就没顾不上了。
最后,「做开源,兴趣应该是第一位,放平心态,享受编程带来的乐趣」。