读《人月神话》有感
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
读《人月神话》有感
读过《人月神话》,马上就被深深的吸引了。这确实是一本很值得多次阅读的好书,每次阅读可能都能从中得到一些提示。因此,把感触比较深的几点记下来。
编程会有很多的乐趣。首先是一种创建事物的纯粹快乐。如同小孩在玩泥巴时感到愉快一样,成年人喜欢创建事物,特别是自己进行设计。我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦。其次,快乐来自于开发对其他人有用的东西。内心深处,我们期望其他人使用我们的劳动成果,并能对他们有所帮助。从这个方面,这同小孩用粘土为“爸爸办公室”捏制铅笔盒没有本质的区别。第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果。比起弹珠游戏或点唱机所具有的迷人魅力,程序化的计算机毫不逊色。第四是学习的乐趣,来自于这项工作的非重复特性。人们所面临的问题,在某个或其它方面总有些不同。因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。最后,乐趣还来自于工作在如此易于驾驭的介质上。程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。程序员凭空地运用自己的想象,来建造自己的“城堡”。很少有这样的介质——创造的方式如此得灵活,如此得易于精炼和重建,如此得容易实现概念上的设想。
软件任务的进度安排的经验法则。1/3计划、1/6编码、1/4软件测试和早期系统测试、1/4系统测试,所有构件已完成。在许多重要的方面,它与传统的进度安排方法不同:分配给计划的时间比寻常的多。即便如此,仍不足以产生详细和稳定的计划规格说明,也不足以容纳对全新技术的研究和摸索。对所完成代码的调试和测试,投入近一半的时间,比平常的安排多很多。容易估计的部分,即编码,仅仅分配了六分之一的时间。通过对传统项目进度安排的研究,我发现很少项目允许为测试分配一半的时间,但大多数项目的测试实际上是花费了进度中一半的时间。它们中的许多项目,在系统测试之前还能保持进度。或者说,除了系统测试,进度基本能保证
要保持设计的概念完整。无论对小软件还是大软件,都必须由一个设计师主导,最多两个人讨论来共同完成软件的整体设计。作为一个软件,一个系统,必须有一个清晰明确的概念模型,大家都在这个框架下工作,所有的创新发展都必须与基本的概念相吻合。具体的实现人员可以细化概念,但只有总设计者才有否定与发展基本概念的权力。需要注意的一点是,即使是总设计师一直是同一个人,他脑海中所认为理所当然的规则或者概念,很可能由于没有明确的文档化,而没有成为所有开发者共同的概念。在其他开发者编码的时候,就可能会生成与概念相抵触的东东(模块,功能,算法),导致整体结构的恶化。这个时候总设计师一定要即时发现,做出更正。概念的完整性,对于很多小规模软件,由于开发人员不多,开发经理一般都能控制住所有的代码,概念完整性在组织层面就维持住了。但要注意以后的Bug修改,功能扩展的时候,也要时刻留意与最初的设计是否概念上相容。对于大规模的软件系统,则必须通过树状组织结构,层层控制,总设计师还是一到两人,每一层都有对下层的绝对把握能力。我以前参加过一个
15人左右的项目组,就是分为两层。感觉整体概念完整性的控制效果还不错。我没有更多人数项目的具体实践经验,希望以后能有机会参与比较大的项目。
软件系统可能是人类创造中最错综复杂的事物。往往一个很小的功能,实在也需要开发职员的架构设计方面的完善,对其它模块的影响及扩展,以及代码编写工作。用户在前台可能看到的只是几个文字,实际是中开发职员昼夜奋战的结果。很多时候,客户的需求修改,在他们眼里看起来是如此地Easy,可他们却忽视了很多他们看不到的因素---当然,这不是说怪我们的客户。我只是觉得,只有大家彼此沟通,彼此理解,才会做出精品来。
进行持续不懈的努力,而这个努力的过程相应的就诞生了软件工程。作者对软件工程诞生的原因做出这样的解释,我觉得符合外国思维的特点,这正是国人所缺乏。记得有一位朋友说过,中国妈妈与德国妈妈的区别,他说,如果手里拿的针掉到地上了,中国妈妈的第一反应是估计针掉下去的范围,然后在这个范围里面找,可能很快就找到了,也可能一直都找不到;但德国妈妈不同,她会拿一根粉笔来,把整个屋子画成一个大圈,接着把大圈分成许许多多的小圈,然后再到每个小圈里找,虽然比较慢,但最终肯定可以找到。仔细想象,大多数情况下,中国妈妈都会找到得比较快,这确实符合大多数中国妈妈的思维习惯,每个中国妈妈都这样找,这好象是与生俱来的本事,但为什么德国妈妈没有这个本事呢?是德国妈妈笨吗?为什么中国妈妈也有找不到的情况?而德国妈妈,虽然速度慢了点,却始终能够找得到?如果把这件故事推而广之,多年以后,德国妈妈创建了找针工程,她通过多次找针的实验数据,分析出针掉到整个房间中各个小圈的概率,总结出针在哪个小圈的概率最大,很快就可以找到针,找针速度早已高过中国妈妈,而中国妈妈还在依循与生俱来的本事。你能说德国妈妈笨吗?为什么中国妈妈和德国妈妈会有这么大的区别?是德国妈妈把大块的“巨无霸理论”替换成“微生物理论”吗?我觉得是是,你说呢?作者在后面的论述中用数学和物理的发展为例子也说明了,这种思想的成立。
感触还有很多,以后如果有机会再写。不过,项目成员都是最佳人选很困难,所以第一是处理好人尽其才。第二是做好项目成员的技能评估工作,根据评估情况和项目技能需求及时组织和安排培训。