开发团队里,真正善战的人到底是什么样的人?
我以前很崇拜那些能修复各种软件缺陷的“救火”高手。
很多年前,我曾经在一个维护遗留系统的团队做过开发。
团队的每个开发,都轮流带一个7x24小时开机的手机,处理用户问题。
团队里有一位英雄。他戴眼镜,经常身穿一件白大褂。
我们要是有搞不定的各种疑难杂症,就会找他。
他能搞定80%的问题。所以过去了十多年,我依然很佩服他,觉得他是英雄。
但当年团队还是火情不断,我们这些普通水平的开发人员,还是救不了火。
这两天在“得到”听华杉的孙子兵法。
孙子说:善战者,无智名,无勇功。
因为善于作战的人,会始终设法让自己在局部能比敌人更强大,又不错过敌人犯错的机会,所以每次胜利都轻轻松松。
“战胜而天下曰善,非善之善者也”。
如果你打了一场漂亮战,全天下的人都说太漂亮了,那不一定是什么好事。为什么?因为这是侥幸,重复不了第二回。
华杉讲起了扁鹊的故事。
扁鹊是一个名医,有一次魏文侯问他:“听说你们家兄弟三个人都是医生,那谁的医术最好?”
扁鹊就说,“我们家大哥医术最好,二哥差一点,我是最差的。”
魏文侯就不明白了:“你是天下名医啊,你大哥和二哥都没有听说过。”
扁鹊就解释:“我大哥治病是在病情发作之前,病人自己还不觉得有病,大哥就下药,铲除了病根。所以他的医术很难被人家认可。”
“我的二哥没有大哥那么大本事,在病情发作之前他发现不了。但在病情初起症状不十分明显的时候,二哥能够药到病除,所以村里人会觉得二哥还能治点小病。所以他的名气只能在本村,邻村的人都不知道他。”
“我的动静就会比较大。我治病都是在病情十分严重,病人痛苦万分的时候。我在病人的经脉上穿刺,有时候甚至还敷上毒药来以毒攻毒。最后这个病人可能得到了缓解,甚至还有治好的。所以我就名闻天下了。”
要每天治小病,而不要每年治大病。
每天治小病,花钱少,痛苦少,治得好,百岁老。
以前听到这个熟悉的故事,并没有什么感受。但最近这一次听,却颠覆了对英雄的认知。
英雄其实不善战,而只是运气好。
对于开发团队来说,什么是“善战”呢?
开发团队的善战,其实就是没有软件缺陷所导致的意外的“火”去救,从而有时间完成眼下计划内的事情。
为何“救火”危害大?因为“救火”会挤占开发团队完成计划内事情的时间,导致加班和项目拖延。
能避免“救火”的法宝是什么?质量内建。
如果按照“投入少、成效大”来大致排序,那么开发团队常见的质量内建排行榜可以是:
- 开卡和验卡
- 团队每日代码评审
- 技术债墙
- 频繁合并代码到主干
- 持续交付流水线
- 自动化部署
- 自动化测试
团队里真正善战的人,不是那些能各种花式“救火”的超级英雄,而是每天能做好普普通通质量内建工作的“平凡人”。
每天做好上面的质量内建,就是每天治小病,不需要能救火的高手来帮忙,普通水平的开发人员就能处理。
而这样的“平凡人”,其实是最善战。