2 从打造产品到打造敏捷团队

将者,智、信、仁、勇、严也。优秀的经理打造产品,卓越的经理打造产品的平台,伟大的经理打造团队。 十个强将可能组成一支内耗严重的团队,而十个平凡的队员如果能组织起来,领导以言传身教鼓励一种敢于冒险、 及时反馈沟通,简单直接的团队文化,那么非线性的化学反应将使这个团队迸发出巨大的能量。

2.1 智能团队的表现是敢于犯聪明的错误——为什么敏捷开发的团队总是很难成形?

智能的本质表现不是信息的有效无损压缩,那是没有生命的GPT干的事情。智能的表现是敢于聪明地犯错,探索未知的边疆。 在大型的陈旧组织中,巨大的中层总是喜欢明确的计划与控制以及少犯错。毕竟,他们的任务是避免风险与执行命令。 这也是为什么瀑布式开发(Waterfall Development)总是会一次次地死灰复燃。它给予管理层一种虚幻的确定性,所有的不确定性都被提前 调研过、分析过、测试过,程序员只要执行出来就行。

更糟糕的是,有时公司还会从第三方雇佣一些“敏捷”教练,一群既没有业务经验,又没有工程经验的人,来布道计划游戏(Planning Game)、 全团队沟通(All Team)、小而美的发布、可接受测试、可持续的节奏(Sustainable Pace)、 隐喻(Metaphor)、持续集成、共同拥有(Collective Ownership)、 殊不知这些美好的概念必须建立在程序员已经熟练掌握测试驱动开发、重构、简单设计和结对编程的基础上。试想,没有结对编程文化的团队 要怎么可能共同拥有代码?没有高单元测试覆盖率的代码库如何重构、如何持续集成和发布?每个程序员在技术领域只有通过测试先行去智慧地冒险,才能获得及早的反馈,更频繁地与业务沟通,不但执行高价值的任务, 同时又在前线为信息的发现者和知识的拓荒者,否则只是为团队添加了琐碎的文书和行政任务。

2.2 志于道、居于德、依于仁、游于艺

好的品德是穿越大时间周期自然选择的生存策略。如果我们从进化论的角度把人类社会共同的流传了几千年的美德看成 一种策略而非死死依从的人伦纲常,突然会有知其所以然的豁然开朗感。团队里的新手才能一开始有所欠缺,良好的品德会让他迅速成长。 如果你发现一个团队中充斥了以下这些文化觅母,战斗力起码不会弱。

比如,谦虚。谦虚的工程师深知大型项目的复杂度以及自己的局限。所以他会主动谋求队友的批评与检查, 缩短反馈回路,遵循已经被证明的最佳实践,面向领域问题和交互界面而不是执行细节编程。

比如,诚实。诚实的队友在犯错的第一时间会承认错误,及时止损并且内省。他会提供解决方案;丰富自己的经验;思考如何从错误中获利。 相反,不诚实的队友会和你说这一切都是天气不好或者老板的某个阴谋。知错能改,善莫大焉。

比如,好奇。在日新月异的应用人工智能领域,好奇的队友拒绝自我重复,他会感到深深的不满。如果他感到自己一直在做紧急而不重要的事,只在做行为改变而不是结构调整,他会抗议。他的好奇会促使他: 动手做实验。发现最适合当下自己的开发模式。阅读如何解决问题和认知科学相关的元知识。他始终好奇同样的任务有没有更好的解决方案。

比如,纪律。纪律非但是降低错误率的手段,也是创造力的来源。纪律不是让你做更多的事,而是戒律,剥夺你做某些事的权限。比如测试驱动开发的纪律不让你在没有单元测试 的情况下开始生产产品代码。乔布斯说过,创新是对一千件事情说不,只有纪律和给自己约束,精力才能在重大的创新上燃烧。 知止而后能定。为自己的工作制定纪律,比如:测试驱动开发、重构、写短小的模块化的函数、用简单的设计,似乎是给自己上了枷锁,但其实打开了创造力的大门。

比如,乐于合作富有同理心,所谓依于仁。己所不欲勿施于人,他不会直接把一团乱麻的代码交给同事去修改。对一个优秀工程师而言,代码是写给人看的,接着才是机器执行的。 对自己踩过的坑,他会及时把解决方案写在公共文档里。

团队的文化如果单单依靠情怀与热血必然会走向衰亡。斗志十足、乐于冒险、敢于胜利、不怕牺牲没有了合同与机制保障会变成空中楼阁。上级与下属之间,成员与成员之间, 尤其是不同工种的成员之间要以契约形式将风险与利益挂钩,风险与权益匹配。谁主张,谁就要承担责任,负责拿出建设性的方案,否则团队里乱哄哄谁都能发表意见,谁都 无法说服谁。奖励以后要重赏,错误以后要受罚。如果团队中有人能系统性地通过风险转移的手段成为寻租者,以牺牲更大的集体的代价承担有限的风险去博取巨大的收益, 团队中恶性的勾心斗角必然会如野草般滋生。

2.3 思考题

  1. 如果定量到以秒为单位,在测试驱动开发中(TDD)缩短反馈回路该如何实践?

2.4 提示

  1. 多少秒应该写测试,多少秒应该切换到生产代码模式?