软件工程开发:别被“最优流程”PUA,能落地的才是好方法
前阵子跟一个创业公司的技术负责人吃饭,他拍着桌子吐槽,说花了三个月从大厂挖了个高级架构师,上来就推翻原有开发流程,什么全链路CI/CD、单元测试强制覆盖率80%、需求评审必须三轮签字,折腾半天,项目延期两个月,核心功能还堆了一层技术债。
太离谱了。
大厂流水线养出来的“软件工程迷信”
很多人对软件工程开发的第一误解,就是必须搞一套和顶级大厂一模一样的标准流程,才叫专业,才叫规范。
说实话,大厂那套流程是给万人级团队、十年生命周期的核心产品磨出来的。它解决的是「几百人改同一份代码不混乱」「线上出问题能回溯到个人」这种大团队才有的问题。
大厂软件工程开发标准流程看板
你一个十几个人的创业团队,做的产品说不定三个月就要转型调整,套上几十层流程枷锁,那不就是削足适履吗?
我之前帮朋友捋烂尾项目,打开项目管理后台,光审批节点就有17个,一份需求文档写了五十多页,字数比核心模块的代码还多。整个团队一半的时间花在走流程开会,四分之一的时间花在填各种合规表格,真正写代码改bug的时间,不到四分之一。
太多人把软件工程开发做成了流程本身。忘了最开始的目的:高效交付能用的产品。
新趋势下,轻量迭代比完美更重要
北大软件所去年发布的国内软件工程行业调研报告显示,超过72%的开发团队,最近三年都在做流程减法,把原来的重评审、长周期,改成了小迭代、快验证。
敏捷软件工程开发团队站会现场
AI辅助开发普及之后,这个趋势更明显了。原来写一个核心业务模块要一个月,现在GitHub Copilot能搞定六成以上的重复代码,开发速度直接翻了倍,流程如果还停留在十年前的标准,那不就活活卡住了吗?
很多老工程师喷敏捷开发是散养,不对。敏捷不是没规矩,是把规则用在风险最高的地方,不给全流程套枷锁。
比如涉及资金的核心支付逻辑,该走的评审一个不能少,该写的覆盖率测试一个不能落,出问题就是顶量级的事故。但你改个首页按钮的位置,调整一下个人中心的UI,还要走三轮评审签字,这不是没事找事吗?
我见过做得最顺的小团队,十个人,做SaaS年流水过两千万,整个开发流程就三条:每天早上五分钟站会说清进度,每周五下午一起测一遍本周新功能,核心代码上线前双人走查。没了。
人家项目跑得比很多三十个人的大团队还稳,线上bug率比行业平均还低一半。为啥?因为时间都花在解决问题上,不是花在走流程上。
软件工程开发的核心,从来都不是工具,是人
软件工程开发的核心,从来都不是工具,是人
现在网上动不动就吹这个新框架那个新工程化工具,好像用上了就是顶级团队,不对。工具是帮人省时间的,不是供起来当门面的。
我之前听过一个真事,某中小公司的技术总监为了赶时髦,强行把整个稳定跑了三年的项目从Vue迁到React,就因为说React的工程化能力更强,折腾了三个月,业务一点进展没有,最后老板忍无可忍把人开了,项目又迁了回去。
可笑吗?可笑。这种事每年都在发生。
软件工程开发,本质上是把一群人的智力劳动有序组织起来的艺术,不是有唯一标准答案的数学题。一百人的团队和十人的团队,做ToB交付和做ToC互联网产品,需求稳定和天天变的项目,方法完全不一样,哪来放之四海而皆准的最优解?
不过话说回来,不管流程怎么变,工具怎么更新,有些底层小事从来没变过。代码要写让人看得懂的注释,变量名要起得能说明用途,提交代码要写清楚改了啥,改完功能要自己先测一遍。
这些不起眼的小事,比你搞多么复杂的流程、多么时髦的工具都有用。我见过太多流程完美的项目,打开代码一看,全是a1b2c3的变量名,注释全是//TODO,提交信息全是update,这种项目,迟早崩。
现在很多人说AI会取代开发者,未来软件工程开发不需要人了。哪有这回事。AI能写单个的功能模块,但是谁来梳理用户模糊的需求?谁来把乱糟糟的产品想法拆成可开发的模块?谁来拍板这个功能先做那个功能砍掉?
还是人。AI只是帮你把重复的体力活干了,让你把更多精力放在人和需求的沟通上,这才是未来软件工程开发真正的方向。
别迷信什么银弹。软件工程开发从来就没有银弹。能让你的团队舒服,能按时交出来能用的产品,能少点莫名其妙的线上故障,那就是好方法,对吧。