哈喽,我是老吴。
一个成功的软件项目,应该尽可能满足成本与时间的需求,并以追求高质量的产品为目标。
最低层次也要做到:完成项目,这样才能满足程序员的生存需求 (不被解雇)。。。
微软建议:
软件项目要存活下来,需要定义良好的开发流程 ( Well-defined development processes )。
另一种相反的看法:
开发流程纯粹浪费精力。
最好的项目执行方式是聘请你能找到最佳人才,给予他们要求的所有资源, 然后放手让这些你找来的人处理他们最专精的东西。不受任何程序约束的项目最有效率。
Thrashing 是指开会讨论等非软件开发的杂事。
Process 是预先定义好的开发流程。
Productive Work 是开发者的输出。
上面两张图对比一下, 似乎没有开发流程的管理时软件开发的效率最高,开发流程纯粹是浪费精力。
十分抱歉,上面的想法是不正确的。
在大多数没有良好开发流程的真实软件项目中,Thrashing (开会讨论等) 和 Processing (开发流程) 的工作量是随着项目的发展而逐渐增多的,如下:
这些软件项目临近开发截止时间时,会暴露出大量地问题,最终导致软件的质量低下,甚至项目失败。
如何活下来?
在项目早期多投入点精力在开发流程上。
在项目的早期,面向流程的团队效率不高,团队会将花费较多的时间设计开发流程上,输出波动较大。
到了项目中期,开发流程逐渐得到优化,并越来越稳定。团队将更多的精力稳定地投入到实际的软件工程开发中,且输出会持续稳定。
到项目尾声,面向过程的团队将高速运行,输出几乎没有波动,并且将在花费少有意识的努力下执行惯性地执行开发流程,最终平稳地完成软件开发。
总结
在项目早期时,在开发流程上的投资,会在项目中后期产生可观的回报。
那么,好的开发流程是怎么样的?请听下回分解。
—— The End ——
推荐阅读: