希望从书中得到的内容
1、稳定、体验良好的用户产品/组件库是如何成长起来的
2、项目迭代和需求分析需要注意的问题
焦油坑
为让一个可运行的程序产生价值,可以在广度(系统集成、对资源的利用)和深度(文档、测试、更易用)上努力。最终目标是在广度和深度上都达到一定程度,而相应的成本是1*3*3=9。
编程的快乐在于自我实现、用户的反馈、探究的过程和想法的实现。而编程的苦恼在于追求完美、他人的意识、对其他程序的依赖、改bug的过程和程序终将甚至马上过时的命运。
系统是否过时的问题同穿衣,不取决于新生产的面料和花哨的概念,而取决于其他流通的衣服。开发者要在有限的时间和空间找到问题的合理解决方案或达成预定的目标。
人月神话
即使计算机比其他介质可以更稳定、低成本的实现设计,也不能忽视实现过程的意外。构思和逻辑上的缺陷总会带来bug,更何况是大项目,一切正常的概率就更低了。
“人”和“月”不可随意置换。团队协作也可理解为运行程序,多开线程不一定会有线性的时间收益,还要兼顾产品的质量。前后依赖的任务时长是不可省的。前后不依赖的任务可以适当拆分,拆分过细会,人数增加沟通成本陡增。
软件研发时间分配:1/3计划、1/6编码、1/4构建测试、1/4系统测试。测试占一半时间是必要、不可少的,要在规划前期预留。整体的时间估算不可因时间紧迫而过分压缩,需要根据科学的规则和图表,或坚持最基础的常识。
进度延期而增加人手将花费额外成本,科学判断延期的原因,评估增加人手对团队的开销和收益。因此前期进度规划的精准很重要。