如何控制软件开发进度

软件开发并不只是写代码。一次提交的代码可能很少,但可能也需要做大量其它相关的工作。写代码的时间只是软件开发工作的一部分,还要很多其它事情要做,如:分析和理解需求,设计系统和功能,尝试多种解决方案后找到合适的解决方案并实现代码,与其他同事进行对接和沟通,测试代码和修复bug等。

我认为要控制好软件开发的进度,需要做好以下这两件事:

  1. 时间规划和任务划分。正确地估算,设置合理的预期时间,调整开发时间安排。这个需要比较丰富的开发经验才能很好地估算。
  2. 更高效、稳定地完成任务。这个需要平时的积累。

接下来,将针对第2点“如何更高效、稳定地完成任务”进行详细地描述。

如何更高效、稳定地开发

需求分析

  1. 明确需求。有需求规格说明书文档。有文档方便快速回顾。
  2. 明确 UI 或原型。
  3. 对需求的理解要清晰、明确,有问题及时沟通。需求是软件开发的目标,目标不清楚,只会浪费时间做无用功。这是非常重要关键的,不要不好意思去问或者拖延不去问。

系统设计和详细设计

  1. 编写系统设计文档,详细设计文档。有文档方便快速回顾。
  2. 平时可以积累一些设计的模板。系统设计无非是架构设计、数据库设计、API 设计等。按照规范去做,刚开始可能会很慢,多做几次就好一些。
  3. 做好了软件设计,心里会比较有底,能够大致知道有哪些事情要做和自己所处的进度。知道了自己的进度,就能很好地进行调整,而不是前面很松懈,后面一直加班追赶进度。

代码实现

  1. 平时积累学习一些相关的技术。防止开发过程中,边学习边开发,影响进度。
  2. 平时积累一些代码。通用工具代码、功能实现代码。可以更快、更省力地写代码。
  3. 平时积累一些代码问题解决的笔记或博客。遇到相似问题可以有参考,防止卡住进度。
  4. 编写整洁、易读、方便扩展的代码。方便快速地修改、扩展代码,以及减少潜在问题。
  5. 快速实现,不断迭代。初期不要过分追求完美的代码。“过早优化是万恶之源”。

测试

  1. 写好测试用例文档,方便进行完整、严格的测试。平时可以积累一些常见功能的测试用例。
  2. 提交代码前,通过测试用例,减少修复 bug 的时间。
  3. 修改代码,做一些回归测试,减少修复 bug 的时间。
  4. 写单元测试或者使用测试驱动开发,可以更自信地重构和优化代码,防止重构时引入新的 bug。