敏捷教练需要懂技术吗?在扣题之前,我觉得有必要对“敏捷教练是否需要懂技术”这个话题做一个简单的讨论。我亲眼见过敏捷教练在指导团队。当团队问到技术相关的问题时,他直接告诉团队,技术问题需要咨询技术教练,但当时听到的显然是最基本的技术概念,不需要太多的研发经验,也不需要高级的技术基础。甚至在最后,他还不忘补充一句:“遇到问题的时候,多想想敏捷的价值观和原则。”我心想:“这个问题跟敏捷价值观有什么关系?”。自从接触敏捷以来,我一直认为敏捷教练需要懂技术。至于原因,我认为有以下几个方面:1、敏捷宣言的第一句话是什么?“我们一直在寻找更好的方法来在实践中开发软件……”。所以从一开始,敏捷就一直致力于寻找更好的软件开发方法。作为一个用敏捷方法帮助团队成长和改进的敏捷教练,如果他们根本不懂软件开发,那谈何意义?曾经听过一个观点,敏捷教练是帮助团队成长的,解决问题应该是团队的责任,而不是敏捷教练的责任。看似有道理,但如何与团队对话,帮助团队成长?是靠说话,还是靠吹牛?2.更好的创业团队进行敏捷转型时,首先要调查分析团队的现状。从团队转型本身来看,调研是后续工作的基础。只有明确了团队的问题和痛点,才能规划出适合团队的敏捷转型方案和路径。从组织变革八步法来看,调研是建立紧迫感的有力手段,只有让团队意识到问题,才能带动团队产生变革的意愿。那么回到敏捷教练懂不懂技术的问题。如果敏捷教练不懂技术,那就意味着研究只能问一些面向过程、面向管理的问题。问题识别的局限性制约了解决方案层的输出。从团队的角度来看,他们认为敏捷教练是来提要求的,让我们按照既定的流程去做事,开好会议就可以了。3.团队辅导敏捷教练帮助团队在不断的辅导过程中成长和提升,而辅导过程自然会涉及到很多技术相关的问题。我同意很多技术问题不需要敏捷教练自己解决。然而,精通技术的敏捷教练通常可以与团队建立信任。而信任是将敏捷实践融入团队的基础。另一方面,团队敏捷转型过程中涉及的很多问题,往往需要敏捷教练的判断。帮助团队明确工作投入的重点和方向的正确性。比如,团队要引入持续集成实践,敏捷教练至少可以根据团队现状,判断实施实践的时机和步骤是否有问题。与其认为这与敏捷无关,团队可以自己决定。所以,也许敏捷教练不需要自己做太多,但是他必须知道适量的技术,才能保证敏捷教练更好的整合,帮助团队实现提升。敏捷教练需要了解多少技术?目前,敏捷教练逐渐分为以管理为导向的敏捷教练和以技术为导向的敏捷教练。技术指导是敏捷教练在技术方向的工作,自然不在本文讨论范围之内。而且即使有管理教练和技术教练之分,两者之间总会有很多技能的交集。比如技术教练也需要了解一些管理实践,管理教练也需要了解一些技术知识。管理教练需要掌握哪些知识,掌握到什么程度?从宏观上看,一个管理教练至少要对R&D的基本概念有一个基本的了解,比如:1.R&D过程涉及哪些环节?各环节合作中的难点和典型问题是什么?有什么好的对策?2、研发团队各个角色如何配合?技术合作是什么样的?3、常见的软件架构有哪些?优缺点都有什么?适合什么样的团队?从微观上来说,首先需要对研发流程进行拆分:1、开发阶段的核心实践是什么?使用了哪些工具,它们解决了什么问题?2.测试阶段的核心实践是什么?使用了哪些工具,它们解决了什么问题?3、运维阶段有哪些核心实践?使用了哪些工具,它们解决了什么问题?其次,还要了解典型工程实践的原理和常用工具。可能涉及到的知识包括:代码分支管理、测试分层策略、代码分析与扫描、持续交付流水线、配置管理、环境管理等,归根结底,不需要一个敏捷教练(管理方向)精通技术细节,但必须对技术相关的基本概念有足够的了解。懂技术的敏捷教练能尽快与团队建立信任,也能帮助敏捷教练站在全局的角度看待团队遇到的各种问题,从而更好地制定团队敏捷教练计划。记得听过一个观点,敏捷教练对技术的理解会让他陷入技术细节,无法控制敏捷教练的状态来指导团队提升。而我想说的是,控制角色职责的边际应该是每一个合格的敏捷教练必备的能力,不能怪“技术知识”!
