上文介绍了我对前端领域的一些杂七杂八的认识,
让我们看到了这个岗位产生之背后的原因,
以及在内忧外患情况下,前端领域是如何发展到今天这个状态的。
我们可以模糊的看到,前端的发展是有不同阶段的,
在不同的阶段,前端同胞们各自在忙着不同的事情。
然而,除了前端之外,其实还有两件事也是与阶段有关的,
一个是团队的发展阶段,另一个是技术的发展阶段。
所以本文那就从阶段的视角横向来看团队、技术和个人。
阶段的概念在软件开发领域,尤其的明显。
团队的不同阶段
意识到事物有 “发展阶段” 的概念时,我正在参加团队的一个复盘会议,
所处的团队是一个老部门的新团队,
那时很多同事都在发言,提到了团队流程混乱的问题。
我当时并没有考虑 “流程混乱” 这个结论对不对,而是在想,造成混乱的客观原因是什么。
于是我的发言就变成了以下这个样子了。
我知道很多同事都非常优秀,从毕业开始就在大厂工作,
或者在一个成熟的团队工作,
那么日常所接触到的软件研发流程,必然是经过了几代人打磨后的,顺畅高效的。
然而,每个团队其实都有其发展阶段的,在不同阶段的团队就会遇到不同的问题。
新团队所遇到的问题之中,流程方面的问题也许是最突出的一个,
混乱是正常的,关键是如何解决混乱。
所以现在应该承认,团队当前正处于一个这样的阶段之中,
过了这个阶段以后肯定还会有别的问题,不过那就是另外一个阶段要解决的问题了。
团队在不同的阶段,就应该关注不同的事情,
有很多问题,并不是人为造成的,而是每个处于这个阶段的团队都会遇到。
解决后就跨过了这个阶段,互相指责最终也得跨过,只不过更痛苦一些罢了。
外部压力的阶段性
团队或个人的状态,也许会受自驱力影响,但我觉得影响最大的,还是外部压力。
就拿团队来说,外部的业务压力,会催生出一系列优先级极高的事情。
而内驱力所产生的事情,虽然也有,但是总难敌得过外部压力。
比如,初创团队所面临的最大的问题就是 “活下来”,
活下来后的团队,面临的问题则是扩大规模,
规模足够大的团队,面临的则是效能、成本和稳定性问题,等等。
所以团队所关心的问题,取决于当前面临着哪些外部压力,
不同阶段的团队,也会遭遇不一样的外部压力。
个人也是如此,不同的年龄阶段所烦恼的事情也不一样。
儿时烦恼的事情,可能是怎样有能力购买自己想要的玩具,
读书时烦恼的事情,则是学习成绩,以及怎样顺利完成学业。
随着年龄增长,还会有其他的烦恼,这些烦恼大多是外部环境造成的。
这正是外部压力的阶段性表现。
技术方案的阶段性
方案总是为目标服务的,所以承受了哪些压力,遇到了哪些问题,
就会导致什么样的技术方案出现。
记得之前向朋友介绍如何读懂 JD(岗位描述)时,我也分享了这样的阅读方式。
每个团队的招聘要求,不是乱写的,它恰恰体现了团队当前正处于哪个阶段。
拿前端来说,如果要求有创新性,基本功扎实,那么也许这是一个初创团队。
如果要求有抗压性,写代码规范整齐,那可能团队已经到了青年阶段。
如果要求有老旧系统的迁移经验,同时掌握一到多个库或框架,
那么这个团队可能已经到了成年阶段了。
所以,考虑一个团队或团队成员他所关注的技术问题,
就能大致猜测出,他所属的团队正处于什么阶段了。
不同阶段的团队所遇到的问题,需要用能处理那个问题的方案去解决。
职业的不同阶段
一个软件工程师从零开始到熟悉、掌握软件的开发技巧,需要几年的时间,
在这个过程中,也会经历不同的阶段。
前几年所面临的问题是,
对上游工具和库的掌握程度,基本的编程技巧,以及工程流程方面的协作和配合。
这个阶段还是行业的小白,主要面临的问题是把活做出来。
随后几年的工作特点就会发生变化,这是因为把活做出来已经不成问题了,
要解决的问题就变成如何把活做好,如何创造更大的价值了。
因此,就会开始关注代码的整洁性、设计模式、业务和架构了,关心投入产出比了。
再过一段时间后,就会发现仅凭个人努力,已经无法再提高生产力了,
这时候,就会迫使工程师向两个方向转型,一个是去带项目做管理,另一个则是做架构搞技术。
关心多大层面的事情,就处于哪个上升阶段。
所以,看一个人的谈吐,也能大体的推断出他所属的职业发展阶段了。
一个 CTO 仍然在纠结代码如何写会更好,虽然也不是坏事,但总会觉得哪里不太对劲。
在职业发展的不同阶段,紧要解决的问题也是不同的。
结语
本文从发展阶段的角度,横向讨论了软件开发相关的团队、个人和技术,
结论是:在不同的阶段,就应该关心不同的事情。
反之:当前所关心是事情,也恰恰反映了所属的阶段。
有了阶段视角之后,很多事情都不会操之过急了,
会更加客观的考察现象背后的原因。
正所谓,夏虫不可语冰,井蛙不可语海。
这可能是一件有趣的事情吧。