一、态度决定一切
1、最高优先级应该是解决问题,而不是寻找罪魁祸首。指责不能修复bug。
2、欲速则不达:要投入时间和精力保持代码的整洁、敞亮。在不深入了解真正的问题以及可能的后果,就快速修改代码,这样只是解决表面问题,最终会引发大问题。
3、对事不对人:不带个人情绪并不是盲目地接受所有的观点,用合适的词和理由去解释为什么不赞同。不要谴责,没有评判,只要简单表达自己的观点。因为负面的评论会扼杀创新。
4、排除万难,奋勇前进:重构低质量代码或许需要很大勇气,但是如果你对此妥协,那么问题就会进一步恶化下去。在没有理解代码时,不要轻易地否定和重写它们。那不是勇气,而是鲁莽。
二、学无止境:既要学习新技术、新方法,同时也要摒弃陈旧和过时的开发方法
1、跟踪变化:迭代和增量式的学习,不需要精通所有技术,但需要清楚知道行业的动向,从而规划你的项目和职业生涯。
2、对团队投资:团队成员能力互补。
3、懂得丢弃:在学习一门新技术时,要丢弃会阻止你前进的旧习惯。
4、打破砂锅问到底:不停地问为什么,不能只满足于别人告诉你的表面现象,同时在提问之前想好提问的理由,因为对方很可能会反问“为什么你问这个问题”
5、把握开发节奏:在每天结束的时候,测试代码,提交代码,没有残留的代码,以固定、有规律的长度进行迭代。
三、交付用户想用的软件:提早集成、频繁集成,保持可以发布、易于向用户部署
1、让客户做决定:coder不应该做业务方面的决定,用业务负责人能够理解的语言,解释遇到的问题,并让他们做决定。
2、让设计指导而不是操纵开发:设计满足实现即可,不必过于详细。严格的需求-设计-代码-测试源于理想化的瀑布式开发,敏捷开发可以避免过度的设计。
3、合理地使用技术:不要开发你能下载到的东西,每一门技术都会有优点和缺点,无论它是开源的还是商业产品、框架、工具或者语言,一定要清楚它的利弊。
4、保持可以发布:记住一个简单的工作流程 在本地运行测试—检出最新的代码—提交代码。
5、提早继承、频繁集成:让子系统不停地增长,不去做系统集成,就等于一步一步把自己置于越来越大的风险中。
6、提早实现自动化部署。
7、使用演示获得频繁反馈。
8、使用短迭代、增量发布:短迭代使人感觉专注具有效率,能看到一个实际并且确切的目标。严格的最终期限迫使你做出一些艰难的决策,没有遗留下长期悬而未决的问题。
9、固定的价格就意味着背叛承诺。
四 敏捷反馈、
1、守护天使:编写能产生反馈的代码。NUnit JUnit
2、先用它再实现它:TDD Test Driven Development测试驱动开发,编程之前,先写测试,可以让你设计出更有用、更一致的接口。
3、不同环境,就有不同问题:要求在多个平台,多个编译环境下进行测试。