也说《人月神话》
时值深秋,校园里的银杏树, 美的醉人, 叶子一片片优雅的飘落,宛如蝴蝶的狂欢! 图书室中,书籍满架,透出大学那种特有的庄重与浪漫。 图书室里的人一如从前一样, 不多也不少, 总是有些人走了, 又有一些人来了。 变化的只是管理图书室的阿姨,双鬓添霜。 我走进一个书架, 挑出了一本最旧的书, 虽然页面泛黄,页脚脱落, 仍然不失“王者”般的威严。 因为书名实在迷人---《人月神话》
《The Mythical Man-Month》一本被赞誉了40多年的“神著”。 已经有无数的人发表过对它的见解, 也将有无数的人要发表对它的见解, 它被广泛的传颂,广泛的引用,,,, 它无疑是一个里程碑。 在此, 我谨代表我自己,爱慕我的小女生X, 以及我家的小狗YY, 向作者Bronks献上崇高的敬意! 顿足再拜 ~ ~ ~ ~
我如今仍旧固执的相信, 一定会有好多的人听说过《人月神话》, 确切的说是几乎全部的编程人员都应该听说过它, 但是读过的人一定不会超过1/10. 能认认真真读完的人更是凤毛麟角。有很多的事情,我们明明知道该去做, 却一直拖延到地老天荒。人, 有时就是如此的矛盾。
但是真正的智者是怎样说来着
普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是先去尝试。
----富兰克林 . 罗斯福
It is common sense to take a method and try it. If it fails,admit it frankly and try another. But above all,try something. --- FRANKLIN D. ROOSEVELT
不同层次的人, 对这部书应有不同的见解。我谨代表“小白”级选手,谈谈我对它的一些理解。
首先推荐模型。 也许它不是最好的, 但是至少对于目前的我来说, 这个模型很适合!
接着,我们添加的(可能是基本的)输入模块和输出模块。瞧,一个可以运行的系统出现啦,尽管只是一个框架,然后,一个功能接一个功能,我们逐渐开发和增加相应模块。 在每个阶段,我们都拥有一个可运行的系统。如果我们非常勤勉,每个阶段就都会有一个经过调试和测试的系统。(随着系统的增长,使用所有先前的测试用例对每个新模块进行的回归测试也采用这种方式进行。)在每个功能基本可以运行之后,我们一个接一个地精化或重写每个模块 ---- 增量地开发(growing)整个系统。不过,我们有时的确需要修改原有的驱动回路,或者甚至是回路的模块接口。
现在这个模型已被广泛的应用, 如微软的MFC框架。
一开始就注重代码重用! 从学习编程开始就应这样, 因为这是银弹!
David Parnas: (1) 信息隐藏概念。
(2)将软件作为一系列相关产品族来设计。
Parnas力劝设计人员对产品的后期扩展和后续版本进行预测。定义它们在功能或者平台上的差异,搭建一棵相关产品的家族树。
代码重用和产品族式编程, 是当今软件行业发展的必然趋势,当然要开发可重用的软件包,并形成产品族会耗费更大的成本, 需要管理者有超人的远见和魄力!
这部 40多年不衰的经典, 已无需过多的去拷贝里面的内容来说明这部经典 --- 因为经典本身就是说明。 你也不可能指望靠我这篇博客来替代研读它。事实上,很多经典本身就无法仿制,更不用说是替代! 下面是书中的经典“名言”!
经典语录
岸上的船儿如同海上的灯塔,无法移动。
--- 荷兰谚语
A ship on the beach is a lighthous to the sea.
--- DUTCH PROVER
美食的烹饪需要时间;片刻等待,更多美味,更多享受。
--- 新奥尔良 Antoine餐厅的菜单
Good cooking takes time. If you are made to wait,it to serve you better, and to please you.
---MENU OF RESTAURANE, NEW ORLEANS
这些研究经验表明,效率高和效率低的实施者之间个体差异非常大,经常能达到数量级的水平。
There studies revealed large individual difference between high and low performers,ofter by an order of magnitude.
聚沙成塔,集腋成裘。 --- 奥维德
Add little to lillte and there will be a big pile. --- OVID
他只是坐在那里,嘴里说:“做这个!做那个!” 当然,什么都不会发生,光说不做是没有用的。
--- 哈里 。 杜鲁门
He'll sit here and he'll say,"Do this! Do that!" And nothing will happen.
--- HARRYS . TRUMAN
实践是最好的老师。 --- PUBLILIUS
实践是最好的老师,但是,如果不能从实践中学到东西,再多的实践也没有用。
--- 《可怜的查理年鉴》
Practice is the best of all instructors. --- PUBLILIUS
Experience is a dear teacher,but fools will learn at no other.
--- POOR RICHARD'S
他应该瞪大眼睛盯着诺亚,然后。。。。好好学习一下,看他们是怎样把这些东西装到一个小小的方舟上的。 ---- 西德尼 . 斯密斯
The author should gaze at Noah, and ...learn, as they did in the Ark,to crowd a great deal of matter into a very small compass.
---- SYDNEY SMITH
前提:
在一片文件的汪洋中,少数文档成为关键枢纽,每件项目管理的工作都围绕着它们运转。 他们是经理们的主要个人工具。
The hypothesis:
Amid a wash of paper, a small number of documents become the critical pivots around which every project's management revolves.These are the manager's chief personal tools.
不变只是愿望,变化才是永恒。 --- 斯威夫特
普遍的做法是,选择一种方法,试试看;如果失败了,没关系,再试试别的。不管怎么样,重要的是先去尝试。
富
There is nothing in the world constant but inconstancy. --- SWIFT
It is common sense to take a method and try it. If it fails,admit it frankly and try another. But above all,try something.
巧匠因为他的工具而出名。 --- 谚语
A good workman is known by his tools --- PROVERB
带来坏消息的人不受欢迎。 --- 索夫克里斯
项目怎么会被拖延了整整一年的时间? ...... 延迟的时间是一天天积累下来的。
None love the bearer of bad news. --- SOPHOCLES
How does a project get to be year late? ... One day at a time.
我们理解的也好,不理解的也好,描述都应该简短精炼。 --- 塞缪尔 . 巴特勒 ,讽刺诗
For brevity is very good, Where we are,or are not understood. --- SAMUEL BUTLER Hudibras
只能根据过去判断将来。 --- 帕特里克 . 亨利
然而永远无法根据过去规划将来。 --- 埃德蒙 . 伯克
I know no way of judging the future but by the past. --- PATRICK HENRY
You can never plan the future by the past. --- EDMUND BURKE
卓越和一般之间的差异接近于一个数量级。
但是我认为我们可以做的最重要的工作是寻求培养卓越设计人员的途径。
为什么《人月神话》如此的持久?
Brooks: 人类历史是一个舞台,总是上演着相同的故事。随着文化的发展,这些故事的剧本变化非常缓慢,而舞台的布局却随时改变。
因此,某种程度上,《人月神话》是关于人与团队的书,所以它的淘汰过程会是缓慢的。
这个复杂的行业需要:进行持续的发展;学习使用更大的要素来开发;新工具的最佳使用;经论证的工程管理方法的最佳应用;良好判断的自由发挥以及能够使我们认识到自己不足和容易犯错的 --- 上帝所赐予的谦卑。
-------------------------------------------------萌哒哒缓冲线 ---------------------------------------------
一个非同寻常的启示: 图形界面的成功。 图形界面的成功曾经使得Jobs 名利双收(详见:《Steve Jobs》XEROX AND LISA章节) 不仅如此, Apple图形界面的成功本来就是一次历史性的革命。 但是为何图形界面会如此的成功? 为何甚至如今我们仍然在用WIMP(windows窗口; Icons图标; Menus菜单; Ponting指针选取。), 作者从以下方面进行了分析:
根据类比来获得概念完整性: 使用窗口重叠,而不是窗口排列, 完全仿照了人们对纸质文档的操作习惯; 窗口可以调整大小, 是我们对纸质文档可以折叠的延伸; 用光标来选择图标是模拟了人们用手指拾取东西的习惯; 图标和嵌套文档来源于桌面文档, 回收站也是如此, 复制,粘贴, 拖拽, 弹出等, 都是这样的与我们的习惯衔接到了极致。(不仅如此, 作者还预言并指引了语音助手的形成)
超越现实: 人们习惯于双手操作, 但是在电脑上如果使用两个鼠标, 不仅实现起来更困难,而且双手所占的物理空间更大, 动作也没用一个鼠标灵活, 所以设计者在此做出了突破。 单手操作, 加下拉菜单表。
用户功能与易用性: 既有易于操作的下拉菜单形式, 又有用于快速操作的快捷键形式。用发展的眼光看待问题,考虑到了用户从新手到老手的变化过程。
强制体系结构的实施,作为设备的直接整合。 : Mac把界面固化到只读内存, 遍及了所有应用程序的概念一致性, 深刻的体现了代码(程序)的重用!
当然, 如今的触屏手机和触屏电脑, 更是一个“极致的设计艺术来源于现实”的实例。 小恪预言: 未来的操作上的更大的变革应该是 “动作”(手势, 三维操作等), 而不是语音(我个人感觉语音表达,会极大的破坏用户体验)。
小恪感悟: 艺术来源于生活并高于生活, 艺术的设计就是设计的艺术。我们几乎每天都在用电脑,我们几乎时时刻刻在和图形界面打交道。 但是我相信,只有寥寥无几的人想到上面的问题。 编程就是创作, 素材来源于生活! 我们必须培养出对生活中时空见惯的事情敏感, 特别是那些事物间完美的连接,以及它们之间极自然的过渡。 当然这非常的困难, 因为它们本来就是及其自然的事, 自然到让人难以觉察! 所以,能在司空见惯中提炼“出与众不同” 正是大师所具有的高度!
“处处留心皆学问,人情练达即文章。” ----- 曹雪芹《红楼梦》
这本书的好多东西的确和现在已有很大的不同, 但是里面反映出来的 “软件开发哲学”却永远如明珠般地璀璨! 真是爱死这个作者啦! I love all people who is so clever! perfect!
这是我第一遍读这本书,但绝不会是最后一遍! 我们一直行走在路上。