《敏捷开发》读后总结
  # # 《敏捷开发》读后总结
前端开发在软件工程中,占据着很重要的一环。上游对接的是视觉、设计、后端等,下游对应的是用户反馈。更多时候,开发不是单纯的写好代码完成需求就行,写出优雅可读性高的代码只是硬技术之一。还需要在整个软件生产过程中发挥个人软技能,比如如何让团队运作高效,如何让产品可持续优化迭代。毕竟所有人都需要对结果负责,而不是对过程负责。
在软件工程中,你可能已经应用上了该书的一些总结或技巧,只是不自知罢了,笔者在阅读这本书时产生了许多共鸣。以下跟随这本经典图灵奖丛书——《高效程序员的45个习惯-敏捷开发修炼之道》,为敏捷之道提供指引。
# # 态度决定一切
- 做事 
- 把矛头对准解决问题的办法,而不是人
 - 敏捷团队重成果胜于重过程
 
 - 欲速则不达 
- 不要坠入快速的简单修复中
 - 深层次的思考是区别优秀程序员和拙劣代码工人的区别
 - 投入时间和精力保持代码整洁、敞亮
 
 - 对事不对人 
- 开会技巧 1. 设定最终期限。防止陷入无休止的争辩中。没有最好的方案,只有更合适的方案。设定期限能在为难时做出决断。 2. 逆向思维。每个人都需要意识到权衡的必要性。尽可能找到优点最多缺点最少的方案,少带个人情感。 3. 设立仲裁人。确保会议正常进行,打算大篇会议之外的讨论以及假大空式发言。 4. 支持已经做出的决定。
 
 - 排除万难,奋勇前进
 
# # 敏捷编码
- 代码要清晰地表达意图 
- 开发代码时,更应该注重可读性,而不是图自己方便。
 - 让自己和别人可以读懂一年前的代码,而且只读一遍就知道它的运行机制。
 
 - 用代码沟通 
- 代码被阅读的次数远远多于被编写的次数。
 - 代码优雅而清晰。比如变量名使用正确、空格使用得当、逻辑分离清晰以及表达式简洁。
 - 良好而有意义的命名方式。
 - 代码自解释。比如:枚举
 - 注释描述代码意图和约束。
 
 - 动态评估取舍 
- 根据现有资源,对手上问题评估,选出最合适的解决方案。
 - 过早的优化是万恶之源。
 
 - 增量式编程 
- 经常评估代码质量,并不时进行许多小调整。
 - 留心许多可以改进的微小方面,改善代码可读性。
 
 - 保持简单 
- 目标:简单、可读性高的代码。
 - 简单的解决方案,也必须满足功能需要。
 - 太简洁不等于简单,那样无法达到沟通的目的。
 
 - 编写内聚的代码 
- 让类的功能尽量集中,让组件尽量小。
 - 每个类或组件只做一件事,职责需要清晰。
 
 - 告知,不要询问 
- 查询和修改分离,单个对象做好自己的职责就好。
 
 - 根据契约进行替换 
- 基于接口,替换代码来扩展系统。
 - 多使用委托而不是继承。
 
 
# # 敏捷调试
再好的敏捷项目,都会发生bug、错误等。这时候需要进行敏捷调试。调试时面对的真正问题,是无法用固定的时间来限制。有些项目可能调试一天也没有找到问题。对于一个项目来说,这种没有准确把握时间的消耗是不可接受的。
- 记录解决问题的日志。将曾经遇到的问题,记录在wiki上进行维护,大家一起维护这份日志,或许从里面会有一些解题思路。注意记录时的关键字。原则上记录问题的时间不能超过解决问题的时间。
 - 警告就是错误。尽量减少错误信息
 - 对问题各个击破。尽量减少耦合,得到单元测试的模块。
 - 报告所有的异常。不要压制异常,及时抛出。
 - 提供有用的错误信息。
 
# # 敏捷协作
团队之间的协作,保持高效率。
- 定期安排会面时间 
- 立会可以让团队达成共识。
 - 保证会议短小精悍不跑题。
 - 时间尽量在早上,也不要在刚上班。
 
 - 架构师必须写代码 
- 新系统的设计者必须亲自投入到实现中
 
 - 实行代码集体所有制
 - 成为指导者 
- 激励别人,让他们更出色,同时提升团队整体实力
 - 解释自己知道的,可以让自己理解更加深入
 - 别人提出问题,可以发现不同视角
 - 帮助团队成员提升水平同时提高自己
 - 不必局限自己团队,也可以是个人blog或一小段代码
 - 成为指导者,意味着分享,而不是固守
 
 - 允许大家自己想办法 
- 引领大家思考如何解决问题
 - 指出正确方向,而不是直接提出解决方案
 
 - 准备好后再共享代码 
- 不要提交未完成的代码
 
 - 做代码复查 
- 代码复查可以得到质量较高且稳定的代码
 - 无论经验丰富多与少,都需要对代码复查
 - 代码复查需要思考,而不是单纯的变量名和代码风格。检查列表:
- 代码能否被读懂和理解?
 - 是否有明显错误?
 - 代码是否对其他部分有不良影响?
 - 是否存在重复代码?
 - 是否可以改进和重构?
 
 
 - 及时通报进展与问题
 
# # 引入敏捷
- 管理者指南 
- 让大家知道敏捷开发是让开发人员工作变得轻松
 - 项目周转
- 立会
 - 孤立对架构师带到项目中,参与日常
 - 开展代码复查
 - 让客户和用户也参与进来
 
 - 基本环境
- 版本控制
 - 单元测试
 - 自动构建
 
 - 敏捷协作
 
 - 程序员指南 
- 单元测试保证质量
 - 以身作则
 
 
编辑  (opens new window)