工作中经常出现业务快速迭代,产品,运营等爸爸们总希望在这种条件下,开发能快速产出功能完备,高体验,高收益,高质量的工程。 而事实情况是,时间与质量基本总是反比状态,而初期快速开发带来的低质量,往往会降低产品后期的开发速度,带来更大隐患。 本文引用一些数据来解释时间的重要性,希望大家能了解开发,尤其是开发初期,有充足的时间做规划会给产品带来多大的效益。
程序开发和房屋搭建其实没什么区别,产品给出需求,设计给出设计图,架构师进行搭建的规划和准备,都结束之后程序员搬砖就行了。 而房屋如果前期规划出现问题,导致地基不稳出来个危楼,会影响居住人的安全;而同样的,项目前期搭建出了问题,会造成用户流失,可能还要返工。
返工,意味着更大的成本投入。惠普,IBM,TRW以及其他组织的研究人员发现,在构建活动开始前清除一个错误,那么返工的成本仅仅是在“开发过程的最后阶段做同样事情”的十分之一到百分之一。 下面这张图可以更清楚地看出返工所消耗的成本


我们增加了前期开发时间,会在短期内提升成本。除了返工外,还有什么方面会抹除这部分成本吗? 答案是提升后期的生产力,更快的研发新功能。 下图是一张伪图,纵坐标为软件累积的功能,横坐标为实现它的时间(成本)。对于大多数软件工作,曲线看起来像这样。初期质量差进展很快,但是随着时间的推移,实现一个功能的成本提升,维护起来也越来越复杂,会产生意外的破坏,需要更多的时间测试。


那么这两种开发方式多久就会交叉?答案是质量差的代码会在几周内显着降低开发速度。牺牲一两周的时间,换来长久的利润,其实是很划算的。
总结来说,快速开发只会在短时间内提升收益,适合不需要维护的一次性产品(比如活动等)。但是如果想要长期经营一个产品,不足的准备时间只能造成越来越慢的速度,越来越差的体验。而重构又会带来更多的成本和更长的时间。
本来还要继续写,但是因为要加班所以不能写了。
最后我要说,虽然本文的主旨是为开发争取时间,尤其是初期的开发时间。但是如果开发钻牛角尖,万事都想做到极致,也是不可取的。产品精简内容给出i时间的同时,开发也要进行妥协,并且一定要保证项目的质量。如果时间充裕的情况下,写的还是屎一样的代码,那就太拉胯了。
参考文章:
- 代码大全
- 软件的高质量意味着高成本 zhuanlan.zhihu.com/p/68528610