前端研发体系的思考

1. 开发者服务

近年来 IT 研发行业蒸蒸日上,越来越多的人们加入到了开发者大军之中。然而,开发者服务领域,却还是一片荒芜,有很多工作要做。国内外有很多探索这个领域的先行者,老牌的比如 微软,有很多围绕开发者提供服务的产品,从编辑器、包管理器、云计算 到 编程语言、浏览器 提供了一系列解决方案,通过 Github 收购 npm,加上 TS、新版 Edge、VSCode,拿下 js 语言的生态系统


另一方面,开发者增多了之后,很多事情都从个体问题转变了成社会问题。比如说 大家如何高效的协同、沟通和互动,团队与环境如何对开发者的工作产生影响。温伯格 在 2004 年就写了一本书《程序开发心理学》,开始从 人的角度、心理学的角度,研究开发者这个群体。我们意识到,开发者们并非孤军奋战,他们之间会建立各种形式的关系。这些关系是需要疏导和管理的, > 当把所有人的意愿都聚集到一点时,才会产生巨大的能量,并实现最终的目标。


总而言之,开发者服务领域是一片蓝海,虽然大家还未感觉到自己支付了这样的服务,实际上任何一家追求研发效能、追求软件产品竞争力的企业,都在背后对研发者服务进行了投资。随着开发者的收入水涨船高,这将是一项非常划算的买卖,假设可以用系统化的办法,为每一名开发者每天节省一小时,那么,按每天十小时工时来算的话,这相当于每十个人可节省一个人的工作量。当开发者人员的数量比较大时,这将是非常可观的数字。

2. 做事的原则

(1)问题驱动

要想打造前端研发体系,首先要明确的是要问题驱动,理想主义者可能更适合打造一件艺术品,然而在工业角度来看的话,人们更希望看到工作有成果,并且它是切实有用的。这其实是知识生产活动与体力生产活动的异同点之一,知识成果必须与外界产生关联、进行转换,才能创造价值,否则就只是一堆参考资料罢了。

(2)考虑定位

其次,一群人要做一件事情之前,需考虑合适的定位,考虑哪些事情是对当前团队来说,是最有竞争力的,最有可能脱颖而出。不合适的定位,会让大家活在努力的假象之中。这就需要对当前所做的工作,做出长远的规划,考虑自身团队的特点,考虑如何与大环境的需要进行结合。

(3)团队作战

最后,在军队中最小的作战单位不是个人,而是 “班”,在软件行业我认为也是如此,要想做出比竞品更有优势的产品,“班” 的运行和管理非常重要。很难想象一群音乐家凑在一起,没有指挥的话,能演奏出什么样的作品,团结在一起,以一定的步调进行演奏,是非常重要的。

3. 研发体系

那么要想做出一套为前端开发者服务的研发体系,需要考虑哪些方面呢?其实每个时代,这个问题的答案都是不同的。它取决于前端开发者们所面临的问题规模,以及业务压力

(1)研发平台:应用的生命周期管理

开发者们有管理自己或他人所创建的应用的诉求。从原始的人工管理到工具化、系统化的解决方案,只不过是这个问题的不同解法。应用如何被创建?如何构建和打包?如何进行部署?运行状态如何?只有这些问题解决了,产品功能才能有条不紊的演进下去。DevOps、CI/CD 只是大家对应用生命周期管理,在历史不同阶段提出的不同诉求。

(2)项目管理:如何更快更安全的交付价值

很多人也许认为有了研发平台之后,例如支持了 持续集成和持续部署,自然而然的大家的项目交付效率就会提高,这其实并非是一个充分必要条件。我认为提高交付效率,是一个从无序到有序的 “熵减” 过程,只能通过外部干预,才能让它不断的朝着更快更安全的方向发展。如何启动一个项目?项目的可见性如何保证?瓶颈点如何消除?项目的健康度如何?所以项目管理就是不遗余力的消除短板的过程。

(3)内容平台:如何将知识资料沉淀下来

开发工作是一项知识生产活动,这些抽象的知识往往存在于每位开发者的大脑中,如果不能以一种可重现的方式分享出来,就会极大的增加沟通成本,所以,我们需要一种载体,将所有人的知识成果保存下来,这是一种无形资产。我个人有记录想法的习惯,这个习惯给我带来了两个好处,一个是帮我向前看,旧想法会催生新想法,如果没有沉淀就很难向前思考。另一个是,帮我总结回顾,看到历史记录会重新进行反思,从而更新自己的认识。所以记录就是一个帮助思考的过程。

(4)编码辅助:如何更便捷的产出编码

开发者的工作过程,就是经过不断的思考、沟通和讨论,将想法转换到特定的编码中。然后将这些编码进行自动化的处理,经过发布得到最终的产品功能。但编码的过程是可以优化的,从人们发明高级编程语言,发明集成开发环境,到各种智能化的辅助工具,甚至开箱即用的开发框架,这都是大家考虑对如何更便捷的得到编码产物的优化手段。目前低代码平台也许是一个趋势,云 IDE 是另外一个趋势,开发框架也层出不穷,我倾向于认为他们是一体的,是解决同一个问题的不同办法。

小结

综上所述,我认为 研发平台、项目管理、内容平台、编码助手,构成了研发体系的四大支柱,这也是个人参与软件开发过程,每天要做的事情的总结。所谓万变不离其宗,任何花哨的酷炫方案,都离不开 开发者日常的工作内容,当然要想把这几件事做好,并不容易,会衍生出一大堆对更底层设施的需求,比如,代码仓库应该如何建设、数据应该如何存储、系统的稳定性如何保障、效能的提升如何衡量,等等。因此,虽然目标可以明确,但却会是一大盘子事情,要做好非常的困难。

4. 前端领域

前后端分工已经有很多年了,前端开发与后端开发的边界虽然每年都会有所调整,但作为前端研发这个群体而言,他们是需要专门的有针对性的来考察的。


我认为任何分工的产生,并不是先从事情本身的分化开始的,而是先从人们想让事情分化开始,这就好比一段很长的代码,由于代码管理方面的诉求,我们才会想着将它拆分成多个函数。拆分之后,每个组成部分的专业性才会随之提高。所以前后端分工,是人们如何管理越来越复杂的软件系统,得到的一个解决方案。这也能看明白为什么近年来,前端开发领域又产生了一些新的专业划分,比如端上的开发、小程序、Node.js 等等。


面向前端开发者打造的研发体系,会紧密的结合前端的特点。(1)前端开发者的合作方:前端工作所涉及到的合作者,与后端不同,前端离产品更近一些;(2)技术工具的差异性:技术栈不同,需要有针对性的提供流程、用法等方面的定制化方案;(3)业务压力:前端业务因为与视图层更接近,不确定性更高,所以需要能够更快的做出调整。


目前前端领域的基础建设还很薄弱,源于很多基础设施都需要后端能力的支持,而前端在后端能力的积累方面还很薄弱,需要一段时间来补齐。结合上面提到的几点,产生了的不同的解决方案,例如,serverless 可看做是前端应对业务压力的方案;前端 BaaS 层的建设,是对后端能力的补齐。研发平台对前端的不同场景提供不同的应用类型,也是看到了前端技术、工具的差异性。

结语

前端领域的基础建设处于一个百家争鸣的阶段,即便是中小型公司,都会比以前更看重前端开发这个群体,这恰恰说明了这方面需求的紧张程度。但打造一套完整的前端研发体系,仍需要很多事情要做,不仅需要对领域相关的内容重新理解,还有合理的利用现有的前后端基础设施。这样才能服务好前端开发者,帮助他们用产品为公司赢得市场。


略有所感,记录留存。