我们常说做为一支研发团队,需要是跨职能的全功能团队,是特性团队,这样,软件产品的某个特性,落到这个团队,这个团队都能完成,我们于是朝着这个方向去设计和改进研发团队。
如下图,如果一个开发团队所拥用的能力水平是处在左下角,那么这个团队充其量只能对某个文件的做代码的修改。而处于理想的右上角,团队业务能力范围是整个产品,技能是全栈。我们知道,单个个体达到最右上角是有难度的,但是团队是可以通过成员能力的相互补充是可达的,这就需要团队管理者有意识地去设计和构建这样的团队。
另一方面,从协作的角度,不同的协作体量,其所需要的协作方法也是不同的。比如,对于一个个体而言,能做得持续开发,就很不错了,而随着协作的体量在增大,如团队一起开发,我们希望能做到持续集成,以此类推,得出以下象限。
做为对软件研发做出指导的教练团队,我希望他们既能覆盖象限一,又能覆盖象限二。我希望的教练团队能够从左下方出发,最后到达右上方。从研发协作的指导来看,做为教练团队的职能,是为了指导个人、团队、组织、公司、以至于行业中的产品的探索和交付。那么,从范围的维度上,应该是个体 ->团队->组织->公司->行业,那么,从需要支持到这能力技能维度来看,分别需要关注个体研发技能,团队的持续集成能力,组织的持续交付能力,公司的开发运维,乃至于行业的精益创业。
我以为,影响软件研发协作方式的三大因素:产品特性、组织结构和软件架构。象限二,充其量是关注在组织结构中的体量范围。如果从软件架构及技术实现的角度,或许我们又得参考图一,因为不同的业务范围,也需要教练从不同的角度给出团队或个人相应的指导。
那么教练就分了两类,关注象限一的技术教练和关注象限二的协作流程教练,而他们的连接点,都落在技术实现上。无论是关注技术方法、效率工具或组织转型,其都能落到对应的象限位置上。
另一个问题是,教练团队一旦水平达到了最右上角,组织内部没有内部教练的职业路径,他们该何去何从?这个我想留到后面来阐述。