-
谈谈《人月神话》:三、追寻事物本质-《天才是如何思考的》分析事物的本质
发现事物的本质,是一项艰苦的工作。需要具备一定的技能和恒心。天才们在这方面得心应手,只要看到了本质,就会比别人领悟得更快,做得更好。寻找本质的工作是艰难的,但专门设计的练习可以帮你。下面我们先做两个练习。 给事物定义 在我的课堂上,常要求学生们给出一些简单的事物——如桌子或自行车——的定义。下面是一则典型的师生对话: A:桌子?是一块木头板,有四条腿。 Q:木头?不能是塑料的吗?或铁的?玻璃的? A:嗯。对不起。说是一个平面,有四条腿,好一点。 Q:好吧。你说有四条腿。没有三条腿的桌子吗? A:嗯…… Q:没有两条腿的桌子吗? A:嗯…… Q:没有一条腿的桌子吗? A:嗯…… Q:所以说,桌子有几条腿无关紧要。桌腿的数量,作为一个桌子的特征之一,并不是必须的。 对吗? A:对。 Q:很好。我们接着进行。有没有一条腿也没有的桌子呢? A:有……没有…… Q:好吧,有没有挂在墙上的桌子呢? A:有。 Q:那么,这些桌子就没有腿。那么悬起来的桌子呢? A:嗯……我们没想过那种桌子。 Q:因此,桌腿作为一个参数,根本不是必要的。是吗? A:是。 Q:那么,这个定义还剩下什么呢?一个平面?你是说一个平面吗? A:是的。 Q:好吧。墙是一个平面。是桌子吗? A:不是(很难为情)……我们指的是一个水平的表面。 Q:水平的?有时有些桌子会有点倾斜,所以作为一个特征,水平并不总是事实。再说,地板是 个水平的表面。天花板是个水平的表面。它们是桌子吗? A:不是(大笑)…… Q:那么,你们的桌子定义还剩了什么呢? A:什么也没有。 Q:这就是说,第一个定义没有包含必要的特征。回过头来看。你们一定知道定义是用来指定事 物本质的。所以,桌子的本质是什么? A:……(沉默)…… 好吧,事物的实质必须包含事物的必要的和充足的特征,这样人们才能从一个定义中了解该 事物。同时,记住这个规则:给事物定义之前,先从抽象阶形图中找出最接近的范畴(具体的范畴位于下面,普遍的范畴位于上面,从下到上,从具体到普遍)。在 进入上一级范畴之前,把要定义的事物分为几部分。下面是图形演示的做法: (图略) 例如: 你想给鬈毛狗下个定义,你会怎么说呢? 狗。一种宠物。 很好。如果你说是一种宠物,那么它在抽象范畴内就太靠上了,因为猫也是宠物、鹦鹉也是 宠物。鱼也是宠物。鬈毛狗的抽象阶形图如下所示: 物体 活物(因为有无生命的物体) 宠物(因为野生动物不是宠物) 狗(因为猫也是宠物)、鸟、鱼等 鬈毛狗(因为还有小猎犬、叭喇狗等) 说鬈毛狗是狗的一种,很好;“驯化了的狗”更好,因为还有像澳洲野狗。 从这个抽象阶形 图中稍高一级的范畴开始,下到狗的其他种类上去,然后定义一只鬈毛狗与德国短毛猎狗、 中国家犬等其他狗的不同处。 现在让我们回到桌子这个话题上去: Q:桌子是什么?你从哪儿开始?…
-
谈谈《人月神话》:二、哪些是现象,哪些是答案,而哪些才是本质?
我们先来看一个例子: 街口的乞丐向我伸出手来,我给了他十元钞票。 用现象、答案、本质来分析问题:我给出了解决了他伸手(这个问题)的答案,但没并有触及他伸手的本质:饥饿;更未能触及整个事件的本质:贫穷(或者懒惰)。 《人月神话》对我触动较深的就是他的现象、答案、本质体系。纵览全书,提出了很多问题、解答、本质,周爱民统计的数据如下: 现象、答案、本质统计 章 现象 答案 本质 章 现象 答案 本质 1 3 9 7 7 2 2 10 1 1 10 7 4 1 3 3 3 11 21 6 2 4 3 4 1 12 15 3 1 5 3 2 13 13 4 6 3…
-
谈谈《人月神话》:一、《人月神话》的结构及其与组织
最近读了《人月神话》,30年前写的书,到现在也一直被奉为经典。10个人读《人员神话》就会有10种感想,结合互联网上众多的读书笔记,发表一点拙见。 《人月神话》的结构及其与组织 章 内容说明 问题域 1 说明“程序(program)”不是“产品(prodouct)”,更不是“项目(project)”。 说明程序员的心理与情绪因素——这是很重要的一个话题。 2 项目的发起、评审与预估(错误的设定项目周期是最大的错误)。 “人月问题”:周期不因为人力投入而变短,事实上它可能更糟糕。 项目定义 3 十个人与几百人面临的问题是不同的。 团队建设 4~5 从设计阶段开始,即致力于获得和维护概念的完整性。 团队管理 – 方向与决策 6 项目过程中的一般性方法。 团队管理 – 一般性方法 7 项目组织过程中的沟通问题。 团队管理 – 沟通问题 8~10 编码过程中的关键问题: -项目复杂程度与需要编码的数据呈指数级关系,反过来,减少编码可降低系统复杂性 -数据的表现形式是编程的根本 -文档是必须且重要的,但往往不被关注(主要强调重要性) 编码 11 承认变更,承认从需求和设计期就开始的变化。 为应付变化而实现的原型系统。 项目定义 – 需求不确定 12 工具带来效能。 13 强调测试,以提升品质和保障项目目标。 项目管理 – 检测/回顾 14 项目控制:进度与里程碑 项目管理 – 控制 15…