1:代码编写前的所有准备的唯一目的就是为了降低项目风险。所以确保你做的准备都是在降低项目风险,而不是增加项目风险。 我的理解:一个项目或一个版本的大体流程是:问题定义-->需求输出-->项目架构与设计-->代码编写-->自测-->测试-->发布。不管是传统开发和是敏捷开发,这个流程里的每一步都依赖于上一步,一步错,步步错。如果需要解决的问题都是错的,下边的每个步骤都是在浪费时间。所以越是前面的步骤越重要。 2:如果你想开发高质量的软件,那么对质量的关注必须成为整个软件开发过程的一部分,在开发开始阶段对质量的关注尤为重要。 3:程序员的工作之一就是告诉你的老板和同事软件开发的流程,包括写代码前做好充分准备的重要性。 我的理解:很多人(包括不少程序员自己)对程序员一个比较深的误会,觉得程序员只负责写代码,只要不是在写代码都是在偷懒或浪费时间。 4:不同类型的项目对编码前的准备要求不一样,很多项目应该快速迭代,但是也有些项目更应该按顺序一步一步去开发。 5:如果问题定义没做好,那么你写的代码只是在解决一个错误的问题。 6:如果需求没做好,你可能遗漏了一些关于问题的重要的细节。在写代码阶段及之后的阶段中修改需求的代价大概是在做需求阶段的20-100倍。所以在开始编码前请确保需求没问题并且你已经很好地理解了需求。 7:如果项目架构设计没做好就开始编码,就相当与你在用一个错误的方法解决一个正确的问题,依然不会有好结果。所以编码前也确保架构设计是没问题的。 最后说说我对敏捷开发的理解:很多人有这样的理解,敏捷开发就是不需要问题定义,需求分析,也不需要架构设计等等这些阶段的。直接就是写代码,发布,然后继续写代码,发布。我的理解是,问题定义,需求分析,架构设计这些阶段在敏捷开发中依然是有的,只不过是敏捷地执行问题定义,需求和架构设计,并且不断重复而已,比如不再输出很规范的需求文档输出而只是口头沟通,不再输出规范的架构设计文档而只是在脑海中想好或者只有架构草图。 公众号:学习者说