清华大学王守清教授《项目计划与控制》的课上有这么一段:
复杂的事情简单化
简单的事情标准化
标准的事情流程化
流程的事情规范化
规范的事情表格化
表格的事情软件化
软件的事情图象化
我个人理解,前面几句讲的是从纷杂的事情中理出头绪, 建立起流程和规范。比如做软件就得注意考虑需求变更流程、设计方案评审流程、代码提交和评审流程、BUG处理流程等。后面几句讲的是用信息化手段来减少管理的工作量,不用疲于搜集数据,才能把精力真正集中在解决产能瓶颈上。
上面这些事情的目的,不是为了从管理软件上走流程走形式,而是要进行过程监控,以便及时发现执行过程中的问题和风险点,以及瓶颈(比如关键路径)所在。而避免潜在的问题和风险一直到了事情做完才暴露出来,不得不去返工。
有的人就会说了,我看哪个公司哪个部门过了CMM3也没啥用啊,该混乱的还是混乱,没有任何提高,所以咱们还是继续土匪式开发下去吧,机动性比较高。
所谓的机动性,是个表象上的编码速度比较高而已,实际上花在返工(包括需求不明确返工、方案设计错误返工、BUG修复)上的工夫很多。
比如一个功能原本写400行代码(2天)+单元测试和修改(1天),3人日就完成了。结果写到第一天下午写完300行时发现需求设计被打回,只好返工,第二天赶完400行后发现设计模式无法兼容将来的功能扩展,再返工,第三天才写完。这个典型的无流程的工作方式。表面上每天的LOC更多了,而实际上2/3在做无用功。如果在编码前先做完需求评审和设计评审,那么他慢慢写两天也就完成了,又轻松又高效。
我晚上看到有句话写得很好:完整的法律体制不能制止犯罪,但没有完整的法律体制犯罪会更加猖獗。这很好地隐喻了我一直挂在口头的那句话:科学严谨的管理方法并不能保证项目一定能成功,但是能提高项目成功的概率。
发表于 @ 2009年09月17日 23:15:00