硕大的汤姆

硕大的汤姆

The official website of Minhua Chen

12 Sep 2018

敏捷开发

在 2001 年,十七名软件开发人员在犹他州的雪鸟度假村会面,讨论这些轻量级的开发方法,并由 Jeff Sutherland,Ken Schwaber 和 Alistair Cockburn 发起,一同发布了敏捷软件开发宣言

敏捷开发宣言

个体和交互 胜过 过程和工具 可以工作的软件 胜过 面面俱到的文档 客户合作 胜过 合同谈判 响应变化 胜过 遵循计划

敏捷开发就是在一个高度协作的环境中,不断地使用反馈进行自我调整和完善。

核心

  1. 迭代开发,价值优先。你需要经常性的交付对用户有价值的软件。工作的软件是首要的进度衡量标准,你应该使用短迭代,增量发布,不停交付你的软件,让客户做决定。

  2. 分解任务,真实进度。你需要分解你的项目工作,准确把控项目的进度。

  3. 站立会议,交流畅通。立会能够让团队之间交流更顺畅,彼此知道对方正在进行什么工作,进展如何,是否遇到一些障碍。最有效的交流方式就是面对面。

  4. 用户参与,调整方向。同 1,我们不能闭门造车,而是要和用户一起,让用户的需求反映进来。

  5. 结对编程,测试驱动,代码评审,保证质量。代码质量非常重要。

  6. CI/CD。CICD 要尽早搭建起来,持续集成,持续发布,一切都要自动化。

  7. 定期回顾,持续改进。定期反省和调整。

  8. 不断学习,提高能力。关注优秀的技能和好的设计。 对团队投资,分享你的知识和你获得知识的方法。 定期举行读书会和讲座。 打破砂锅问到底。为什么用于比怎么做重要。

关于会议

会议一定要设立最终期限,防止陷入无休止的辩论。每个会议都要有一个负责人。

每天早上都要有立会。立会要足够简单有效,每个人需要回答三个问题:我昨天干了啥,我今天准备干啥,我遇到了什么阻塞。猪和鸡中,只有猪可以参加立会。

关于技术和代码

防微杜渐,不要只想着骗过测试。

如果你看到别人的一些代码很傻逼,重写掉它。

如果有人误解了需求,那这个误解可能会被传递下去。确保尽快消除这些误解。

指责不能修复 bug,我只关心解决问题。提出你的顾虑,而不是否定你的队友。维护你的队友,就算他犯了错,也不要让他在大家面前难堪。

代码集体所有制,每个人都可以改别人的代码。

要有一致的编码风格和代码规范,api 规范,非常重要。新人要先适应规则,再贡献代码。

架构师必须写代码,不要在 ppt 里面编程。主程应该试着承担架构师的角色。程序员拒绝设计,就是在拒绝思考。

架构师最重要的任务是:通过找到移除软件设计不可逆性的方式,从而去除所谓架构的概念。

记录问题解决日志。就像海盗的航海日记,飞行员的飞行手册一样。daylog 要可以搜索,可以 comment,记录问题(要详细,什么程序什么版本什么平台),debug 过程和解决方案。

关于团队和个人

围绕被激励起来的个体构建项目,给他们支持和信任。允许大家自己想办法。

可持续的开发速度,don’t burn out。

最好的架构,需求和设计出自自组织的团队。

帮助你的队友,让他们愿意来找你。对事不对人。 勇于承认自己不知道答案,这让人更放心。

不要试图说“这不是我的错”,如果你从来不犯错,那你可能也不是很努力。

如果你在的团队非常不职业,赶紧离开。

优秀的工程师并不拘泥于特定的任务,也不受公司信息和计算能力的约束。那些无论你是否批准都按自己想法做事的人,才值得你投资。

你不仅需要对你的团队抱有信任,也必须有足够的自信,才能给员工自由,让他们自己去寻找更好的答案。在物色领导人的时候,要挑选那些不会将一己之利置于企业利益之上的人。

组织要以最有影响力的人为中心。你的头衔可以让你成为管理者,但让你成为领导者的,是你的员工。