今天一个小伙伴问我,如何「快速提升」一个团队的软件开发成熟度?我犯难了。我个人理解一个团队的软件开发成熟度涉及的东西很多,但最简单最直接的方法就是发钱涨工资,可是估计很多公司不愿意,那就只有扣了。
快速提升的目标
短期制度解决
如果想短期快速提升,那就直接梳理好最关键点,制定规章制度,然后通过奖惩制度让大家遵守。这种做法成本不高,也许还能创收给团建攒点经费。这种做法优点就是见效快、直达痛点,但是副作用也很大,不厚道不人道,无法持久,毕竟工作合同里可没写扣钱的事儿。一天两天一周两周还行,时间一长人都跑了。1-2个月内可以考虑这种做法。
举个例子,服务稳定性问题。一段时间公司的某些服务经常出现问题,根因也有很多,比如上错代码、上线后配置没改、容器状态不对,告警误报等等。然后成立了一个服务稳定性小组,对每次事故进行复盘定责。人为原因直接罚钱,轻罚一线重罚领导。某种程度上解决了一些问题。但是时间一长这种方法就不灵光了,因为涉及到个人的收入,所以在最后查原因、影响范围的时候下面有的人就开始糊弄了,把影响功能、时间、人数、对外影响往轻了说。同事之间总不能天天拆台互相揭发吧?那这活还怎么干。尤其是大领导自己关注度降低,找个不熟悉、不深究、职位低的人来盯这事的时候,慢慢也就形成了虚设。(BTW,一把手业务助理做这事其实是个不错的选择。手拿尚方宝剑,领旨办案,且没有利益牵绊。)
中期流程和工具解决
但如果我们把时间放到3-6个月这个长度,那么可以选择的方法就很多。
我们以《百度工程能力白皮书》中涉及的 Server 端工程能力地图为例,涉及的 33个能力,如果想短时间内提高这么多能力是不可能的。3-6个月内挑一些关键的实践还是可以做一些事情的。
首先为每个团队指定一名全权负责人,也就是我之前的一篇文章提到的 FTO。效能不好 K 他就行,团队内合作不畅 K 他,结果不满意 K他。经过一段时间团队产研效能就有所提高。K 他之前记得授权,别瞎 K。明明自己没授权什么都揽在自己手里,结果出了问题说成是别人的问题就虾扯蛋了。
其次把团队的职责,团队中每个人的职责都明确出来,梳理出团队和个人的目标,让团队和个人都知道自己的权利和责任,知道自己的工作边界,知道自己的目标。不合理的团队组织架构和混乱不清楚的工作边界往往是产研团队效能低下的根本问题,且这个问题往往不能自查或不愿意承认。
然后,我们帮各个 FTO 梳理团队内一个个的流程和规范,对团队内的每个成员进行培训,把流程和规范融入到产研协作流程的过程中,针对目前最痛的点设置成检查点,从流程和关键点提高团队的研发效能。这个过程需要团队内的成员、团队外的管理人员都形成共识。
接着专人搭建工具和平台支撑流程和规范。所有的流程和规范不能只停留在嘴上,停留在纸面上,要有工具和平台的支撑。没有一站式的,就先单点满足。没有中文的,就先英文顶上。唯一的要求就是快。如果公司觉得这方面的投入值得,能采购商业软件那就太好了。把流程和规范落到工具和平台上,进行培训,让大家熟悉。
同时,我们要招人。招更能满足业务需求的各种人才。包括替换不合格的产品,能力不强的研发,没责任心的运维,经验缺乏的PMO,不负责的领导等。把团队的短板补上。
小文总结
简单总结下,短期通过制度解决痛点问题。优点是直接、快速,缺点是不可持续,效率低。中期通过流程和工具解决,通过不断优化流程,搭建工具和平台支撑流程和规范的落地, 同时不断地优化流程和改进工具形成正循环,劣势是需要时间需要人力物力的投入。公司的实力终究还是体现在人才上,不断提高人才质量和密度才是根本。
最后感谢「无散人」的提问,让我有机会回答,谢谢。