敏捷训练的回顾
这两个月的学习, 除了看书和读书分享以外, 还参与了很多ThoughtWorks同事的分享. 如: 看板的方法, TDD, DDD, 持续交付, 重构, 如何做一个教练, 如何搜集和提供反馈等等。它们涵盖了方法论、技术的应用和管理、沟通的方法等。有他们丰富的经验和从旁点拨, 让我刷新了很多认知,并让我对敏捷在项目中的应用有了更深的体会。
学习的过程当然少不了实践。在每周的练习中,我一共完成了三个代码重构的视频,travis-ci在持续集成中的应用,Gilded Rose的TDD练习;还做了三次分享,包括整洁代码的读书分享,node.js项目代码的重构分享和以及GitLab和Docker在当前项目中的应用的分享。在公司的技术嘉年华中,我也担任后端会场的主持,负责收集话题以及协助分享者提升分享质量的工作。最后会场的分享圆满完成并得到许多积极的反馈。
而让我觉得更大成就感的是把学到的东西应用到项目组中。我的策略是根据team当前的项目情况和人员配置,抽取出几点能产生最大作用的敏捷实践逐步应用到项目中。我的顺序是在现有的看板管理上加入估点的步骤,然后借组内每周分享的机会,分享了番茄钟工作的方法和原理,并推荐引入到pair programing 中。接着,找到项目进度压力较小的一周,分享了node.js的重构视频,提升了组内人员对代码重构和TDD的理解和重视,并开始应用到项目开发中。目前我们项目中,新的需求都开始编写测试用例,并且所有项目都加入了CI和sonar scan的流程,团队成员不再只关注编写代码,还会关注CI的结果,代码质量的检测和环境的部署成败。再接着,我在组内开展正式的回顾会议,让每个人回顾项目实践中遇到的问题和总结改进的方法。会议中总结出来的待跟进的条目,都有相关的队员主动承担,使得工作的积极性进一步提升。现在组内除了每日站会外,每周都会展开需求讨论和组内分享,每个release都会展开retrospect. 相信只要继续坚持下去,我们定会变成一支成熟的敏捷团队,从容地面对各种变化和挑战。
期待未来可以参与到更多的项目,与更多的团队成员去实践敏捷,学习和累积更多的项目经验。
敏捷方法
当然,两个月的训练时间,对成为一个敏捷教练来说,实在太短了。我还有很多要学习、改进的地方,也需要很多实践的机会。不过,每个阶段都需要总结。学习到这个阶段,我不禁要回过头来,问问自己一些问题:
- 敏捷是一个什么样的方法论?
- 项目管理方法?
- 开发的最佳实践?
- 团队激励?
- 敏捷的对象是什么?
- 项目管理?
- 开发流程和方法?
- 人 - 团队?
- 敏捷的目标是什么?
- 项目的顺利交付?
- 高效的开发方法?
- 团队的生存进化?
项目价值、技术的改进和团队的质量到底哪个是因哪个是果呢?
我的个人看法
也许,不同的项目环境、不同的队员,它们的侧重点可以会不一样。但目前,我的理解,他们是有层次的:
- CI、重构、TDD、Scrum的流程等。它们都是为了给予团队一个容易理解、可供执行的规范;
- 风险、价值的管理。以上的规范,只是为了让项目的进行得到有交的监控,平衡风险和投入,最大化地产生价值;
- 团队的自管理 (包括对外的甲方, 对内的各个部门-BA, DEV, QA, OPC, 和 DEV等各个团队内部的不同人员)。最终,还是回归到“以人为本”上。无论方法和技术怎么地演变,最终人是最难把握的。我们既希望团队、系统都能像一个人那样会思考如果生存、如果进步,但我们又害怕把人聚集起来在一个体制中协作所引起的惰性和风险。所以,我们现在看到的方法论,不再条条框框那样定制好每一个规范,相反,而是把更多的重心放到人身上,包括:
- 满足人、激励人
- 建立良好的工作习惯
- 营造积极的氛围
- 相互促进
- 自管理
你会发现无论是敏捷、培训师、管理、DDD等流行的课程,它们都免不了说到如何激励人、怎么有同理心。这些都是期望把一个团队,变成像一个个体那样灵活地去思考和演进。当理解到这里,我发现很多技术和方法论,如:TDD、DDD、系统架构和敏捷管理,似乎背后有很多相关之处。期待未来有更多的发现!