人月神话-读书笔记

1. 人月神话是什么?认为软件工作是可以用时间来和人力做计算和互换的。忽视了人的特性。软件工程截至目前还并不是一个可以作为流水线生成的工作,所有的工作成果是带着实现人的特性的,并且会对后续有深远的影响。

    用人月来衡量一项工作的规模是带有欺骗性和危险的事情。

    Brooks法则:为进度落后的项目增加人手,只会使进度更加落后。因为增加了三方面的工作:1. 任务重新分配本身导致的工作中断,2. 培训新的人员;3. 额外的沟通

2. 软件工程师工作的乐趣

    1. 创建事物的快乐。当一个业务产品、功能;一个技术方案是通过你的智慧、思考而产生的,这种快乐是纯粹的

    2. 『社会』价值。创造的东西是有价值的。我记得自己当初选择来阿里的一个原因,就是认为阿里在做一些能够影响或者作用于这个世界的事情。

    3. 持续学习的快乐。作为中国人,经过20多年课堂上的教育,生活的一大部分是学习。我也不知道这个算不算快乐,但是是一件可以让自己开心的事情

    4. 在易于驾驭的介质上工作。把自己脑力活动表达出来。

3. 在当前这样一个程序员水平参差不齐的现状下,如何组件一只高效的队伍?

    1. 架构设计师存在的必要性;

         实现概念的完整性

         技艺改进的结果往往来自于战略上的突破,而不仅仅是技巧上的提高

         易用性的测量:功能与理解上的复杂程度比值才是系统设计的最终测试标准,而不是功能的丰富性。

    2. 外科手术队伍的形式

        一个人完成任务的分解,其他人都是辅助。一方面获取少数头脑产生的产品完整性,另外得到多位的协助人员的总体生产率提升,并且减少沟通的问题。

4. 架构设计师如何与实现人员配合工作?

     1. 牢记是开发人员承担创造性和发明性的实现责任,架构师只给建议而不是支配实现

     2. 时刻准备着为指定的说明建议一种实现的方案,同样准备着接受其他任何能达成目标的方法

      3. 对上述的建议保持低调和不公开

      4. 准备放弃所坚持的改进建议

      5. 听取开发人员在体系结构上改进的建议

5. 整体与部分、工具平台的重要性

    整体:1. 测试规格说明;2. 自上而下的设计;3. 结构化编程

    部分:构件级别分别独立调试;系统再进行集成 

    工具:1. 有效、正确,不要带来副作用;2. 提升效率的办法

6. 如何做项目进度规划:

    1. PERT图:事件、活动、sleatTime、关键链路

     2. 管理:将能而君不御者胜(1. 对下放权;2. 对上要不介意被询问进度)

     3. 作者给出的时间安排建议:1/3 计划;1/6 编码;1/4 构件测试;1/4 系统集成测试

7. 没有银弹

    根本任务:即打造成抽象软件实体的复杂概念结构

    次要任务:用编程语言表达这些抽象的实体,在空间和时间的限制下将他们映射成机器语言。

    建议:

    1. 仔细地进行市场调研,避免开发已上市的产品。对我们而言其实是要了解当前可用的平台、工具;了解真实的需求

    2. 进行快速的原型开发的试错

    3. 有机地更新软件,随着系统的运行、使用和测试,逐渐完善。结合2

    4. 培养概念设计人员

你可能感兴趣的:(人月神话-读书笔记)