先实现功能还是先搭建基础

做项目的决策时遇到的问题分享
Posted by SunnyRx on September 19, 2018
原文地址:https://sunnyrx.com/2018/09/19/Realize-the-main-function-first-or-realize-the-foundation-first/

这是笔者在和主程老朱讨论“这个项目优先实现哪部分内容?”时遇到的问题。

问题

对于一个即将要开始开发的项目,哪些功能比较重要,需要优先实现,我们提出了两个方向。但是在这两个方向中,应该选哪个,成为了问题。这两个方向分别是:

  • 先实现导入数据的功能,再实现主要的功能

  • 先实现主要的功能,再实现导入数据的功能

过程

一开始笔者的想法是,先专注实现主要的功能,再实现导入数据的功能,可以更好的专注功能本身,而测试功能时录入的测试数据可以暂时使用硬编码之类粗暴方式解决先。

同时也想到,先做好数据导入的话,之后功能实现后可以同时测试大小规模的数据,同时主程序也是建议先做数据导入,花的时间也不多。

笔者当时认为这种时候听主程序的建议是最合适的,但是考虑到如果以后独自遇到这种问题需要自行作出决策的话,搞清楚怎么做出判断是很重要的。

针对这两个方向,笔者感到无从判断,于是向蔡老师请教,在蔡老师的指引下和老朱的帮助下,整理出这两个方向的优缺点。

先实现导入数据的功能,再实现主要的功能

优点:

  1. 节省写硬编码或临时代码的时间
  2. 可以测试大规模数据

缺点:

  1. 不能很快看到主要功能的效果
  2. 不能优先解决困难的地方

先实现主要的功能,再实现导入数据的功能

优点:

  1. 能很快看到主要功能的效果
  2. 可以优先解决困难的地方

缺点:

  1. 需要花费写硬编码或临时代码的时间
  2. 测试大规模数据会很麻烦

老朱的意见是,在功能需求不怎么需要修改的情况下,先实现导入数据的功能,再实现主要的功能会更合适,当下就是这种情况。

结论

对于要开发的东西,功能已经相当明确,有具体的设计文档的时候,先实现导入数据的功能,再实现主要的功能是合适的选择。

前期将项目基础搭建好,后面可以节省很多不必要的时间,也不会造成代码浪费。这个选择对应的是瀑布开发模式

对于要开发的东西,功能尚不完全确定,需要反复验证功能的时候,先实现主要的功能,再实现导入数据的功能是合适的选择。

例如做一个新的游戏,当不确定这个游戏的玩法是否可行时,需要快速搭建原型验证和反复修改。这个选择对应的是敏捷开发模式

推荐阅读更多精彩内容