今天重新翻了一下《敏捷软件开发》这本书,第六章,一次编程实践,作者讲述了自己开发保龄球游戏的整个过程,用的是测试驱动开发的方式,上来就开始写代码,一边写一边改进,也没有实现做一个完整的设计。
但是实际的业务中,接到一个项目,有经验的程序员都会先拆解任务,一个个功能考虑实现方式,最后才是开始编码,与书中提到的方式截然不同。
那么,像平时这种自顶向下的开发,真的有必要吗?我们为什么不先开发一块功能,再基于上面迭代呢?有时候拆解任务真的很费心费力,尤其是产品改需求的时候?
希望大家分享一下自己的想法
敏捷开发本身就是一个高速追随用户需求的开发模式,“先有再优”莫过于其核心思想之一。
如果是先定好整个系统的设计,拆解好任务,再逐个模块进行开发,等到用户真正用上的时候,也许用户需求已经变了,这时候黄花菜也就凉了。特别是互联网时代日新月异,一个功能能早日让用户用上,远比它是否完善来得重要。
另外,功能模块再难拆解,也远比废寝忘食开发出一个模块,之后因为用户需求的改变不再需要这个模块来得容易。再者,一个优秀的程序员以及合理的设计模式的使用,是不会造就一个难以拆解的模块的。