人月读书笔记01

美酒的酝酿需要年头,美食的烹调需要时间;片刻的等待,更多美味,更多享受。

1.缺乏合理的时间进度是造成项目滞后的最主要原因,导致这种普遍性灾难的原因是:

  • 我们对估算技术缺乏有效的研究,更加严肃的说,它反映一种悄无声息,但并不真实的假设——一切都将运行的良好。
  • 我们采用的估算技术隐含的假设人月可以互换,错误的将进度和工作量互相混淆。
  • 由于对自己估算缺乏信心,软件经理通常不会有耐心持续地进行估算这项工作。
  • 对进度缺乏跟踪和监督。其他工程领域通过验证的跟踪技术和常规监督程序,在软件工程中常常被认为是无谓的举动。
  • 当遇到进度偏差时,下意识(以及传统)的反应是增加人力。这就像使用汽油灭火一样,只会使事情更糟。越来越大的火势需要更多的汽油,从而进入了一场注定导致灾难的循环。
  • 乐观主义:

2.“这次它肯定会运行”

“我刚刚找出来最后一个错误”

所以系统编程的进度安排背后第一个假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。

由于物理介质和思路中隐含着不完善性,实际实现起来需要花费大量的时间和汗水。对遇到大部分实现上的困难,我们总是倾向于去责怪物理介质,因为它们不顺应我们设定的思路。其实,这只不过是我们的骄傲使判断带上了主观主义色彩。

我们的构思总是有缺陷的,因此总会有bug。也就是说我们的乐观主义并不应该是理所当然的。

3.如果将定制功能规格说明的责任从开发快速,成本低廉的产品的责任中分离出来,那么有什么样的准则和机制来约束结构师的创造性热情呢?

基本回答是结构师和建筑人员之间彻底、仔细和谐的交流。尽早交流和持续沟通能使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工。

想要成功,结构师必须:

  • 牢记是开发人员承担创造性和发明性的实现责任,所以结构师只能建议而不能支配;
  • 时刻准备着为所指定的说明建议一种实现的方法。同样准备接受其他任何能达到目标的方法;
  • 对上述的建议保持低调和平静;
  • 准备放弃坚持所作的改进意见;
一般开发人员会反对体系结构上的修改建议。通常他们是对的——当正在实现产品时,某些特性的修改会造成意想不到的成本开销。

猜你喜欢

转载自abbleto.iteye.com/blog/1675674