为什么说程序员不再单纯了,当然大家别想歪了,我这里指的是为什么现在越来越要求开发同学有业务思维。
其实在互联网早期发展的时候,你会一点技术,就非常牛逼了,比如说你能做一个网页,或者你能操作数据库或者你能做一套客户端带图形界面软件。
我现在还记得,我上大学时候认识的一个朋友,算是自由职业者,他就告诉我,说小蒋啊,你只要掌握了VB,以后就能吃香的喝辣的。
早起的时候,很多人觉得你懂点技术,就是天才了,哪怕你只要在网上能挂出一个个人主页或者搭建一个留言板,那大家都会觉得你这个技术非常牛逼,如果你有这一套这样的杂耍技能,你基本上可以拿到很多互联网公司的offer。
但是随着时间慢慢过去,大家对技能的要求也越来越高,我记得我刚毕业的时候就已经开始要精通JAVA、精通数据库,并且要对缓存中间件要有一定的了解,还要求了解分布式调用。这个时候就不仅仅停留在你会做一点皮毛就够了,还需要你对很多业务系统和技术系统的技术实现要有一个比较清晰和广泛的了解。
比如我们那时候我记得如果你会懂得分布式或者懂得数据库原理,或者你懂得各种间件的一些极致的使用方式,那么你就会变得非常有竞争力。
我到了公司的时候,那个时间节点大概在15年左右,当时我们这一群毕业生步入职场的时候,对公司里面的一些中间件底层技术非常感兴趣,比如说我们内部的RPC框架,比如说我们内部的缓存中间件、调度中间件。有很多实习生或者在转正的时候都会有一项或者若干项对于这些技术的研究,并且乐此不疲。
我记得我在来公司的一年左右的时间就研究了好几个系统框架,包括了我们部门自研的一个调度工具,基本上我是每个代码DEBUG过去看的,一行行分析代码的执行逻辑。
所以在我毕业工作的2~3年内,其实技术思维和技术导向还是占据了一个主流,包括我们那个时候都以加入中间件的团队为目标,很多人那个时候都非常想去中间件团队。
在那个背景下,公司也提出了大中台小前台的模式,那很多人觉得去做系统的中间件或者数据库都是有技术含量的。所以那个时候不需要你有多少的业务,现实或者商业思维,你只要懂一些中间件的技术,你就很牛逼了。
而对于业务团队的同学来说,其实也差不多类似,除了少数的同学对业务现实比较好之外,大部分同学还是停留在技术实现上面,不会管业务是好是坏,能不能做起来。
当时的大环境,只要是公司发展的业务,也没有做不起来的,基本上都是对已有功能的延续性落地,所以也不用要求程序员能发挥多大的业务主观能动性。
主管要求一般也会比较低,只要你能够保证完成了业务上线,其实不会对一个开发同学有太多关于业务上的思考,或者说是商业上的思考。
但是到了现在也就是差不多二零年到二二年这个期间,大环境发生了很大的变化,整体的商业模式框架就发生了变化。原来好像是香饽饽一样的中间件团队已经开始变得支离破碎,很多中间件产品也基本上没人维护了。我也经常看到原来中间件里面答疑的同学已经开始陆续的转岗到各个业务线。
而我们业务团队不管是大领导还是小领导在我们每次的业务规划上都会明确的强调我们怎么样能够提高程序员的业务思维能力。
所以原来从技术导向到现在从业务导向好像整体系统升级了一样,原来从技术内卷到现在开始业务内卷,要求研发同学应该具备业务的思维。
这个实际上是对所有职业人提了更高的一个诉求,也是这个时代发展的必然。
一个人的职业技能和要求其实跟经济一样,也会有通货膨胀。对一个人的要求和综合素质也会越来越高,所以其实每个职场人在这个环境下不管愿意和不愿意,都要去接受这种变化。
那话说回来,这种通货膨胀升级是一个必然的现象和趋势。那我们回答问题本身为什么要求一个研发同学需要具备业务业务思考力呢?
对于发展了这么长的底层技术来说,已经相对来说比较稳定了,其实不需要投入过多的资源继续深入优化,除了一些高精尖的行业,而且这些行业也不需要这么多的人员投入。所以现在整体社会会把更多的精力和资源投入到上层的业务发展里面,也就是怎么样最大化的使用这些底层技术来使商业成功。
所以从最上层的顶层设计来说,就需要更多的人专注于怎么样基于已有能力的组合或者创新实现更好的业务结果发挥更大的业务价值。
而传统的商业模式,由一个高层领导或者产品经理来规划整个业务方向的模式,已经变得不合时宜。
原来互联网商业模式可以认为是,只要你方向对了,你基本上碰到的都是蓝海。但是现在基本上没有这种所谓蓝海的方向,只要你做了就一定能成功的模式已经一去不复返了。
现在整个市场上变化越来越快,需要公司抓住每一个稍纵即逝的商业机会。而且从原来的集团大部队作战变成了现在的小团队作战,要求整个组织更加敏捷,更加数字化,更加精细化。
所以要求每个小团队都有充分的市场竞争意识。原来的竞争格局从公司到公司间的竞争,到了团队与团队之间的竞争。需要团队里面的每个人都要有一定的业务思考能力。只有每一个团队的同学都有商业思考能力,才能让整个小团队能够更快速的抓住稍纵即逝的业务机会。
而对于开发同学来说,负责的首要任务就是核心业务的落地。所以在变化这么快的市场环境下要求你的系统设计能力就要与敏捷能够快速支持业务场景,快速迭代试错。
想象一下,如果对业务一点都不懂的,或者对业务一点兴趣都没有的研发工程师怎么能够设计出一个良好的,稳定的,敏捷的系统来支持快速变化的业务呢?
而且到了现在这个社会也根本不是传统的大锅饭。并不是说你把系统做好了,你就一定能够得到相应的业务结果和奖励。相反,到现在一定是所有同学共背一个业务目标,只有在整个业务都活下来,并且活得很好,你技术才能够说自己做出了多大的贡献。
就像很多没有业务结果的系统,其实它的价值就是零,不管你一个技术工程师在里面设计了多优良的架构,有多好的稳定性,最终的商业价值和技术价值都是零。
而且现在越来越多的技术和算法,从本质来说,它只是一种工具,工具的本身就是为了实现你的业务目标,快速达成你的业务决策能够帮助更好的支持好业务,这就是技术它最根本的能力,而非炫技。
所以大部分的工程师核心的任务是利用技术来解决问题。而不是研究技术本身。
所以这个变革看起来是必然的,也是整体社会的大方向。这些给了很多同学一种全新的视角和机会。可以让研发同学跳出技术来看待技术,真正实现解决问题,定位问题。
所以为什么会说程序员不应该再单纯了?意味着未来只单纯研究技术的开发,它并不是一个合格的开发,开发应该是里面非常懂得利用技术来解决问题的,这是一种全新的思考方向这也给了开发一个更高的视角和机会,否则这样的程序员,迟早会被社会淘汰。