「大道至简」 超越,也不认为它的FCL库会有什么奇特的地方。一一除了它们足 够庞大。但是我认为,如果有一天OS也是用.NET Framework来编写 的,OS一级的消息系统、异常机制、线程机制等等都是.NET的,都 是面向对象的。那么,在这个基础上,将“事件驱动”并入00层面 的模型,才有可能。 Sou1:所以我发觉面向对象的思维第一不可能彻底,第二只能用在总体分 析层上。在很多时候,实质上我们只是把一个顺序的流程折叠成对 象。 我:倒也不是不可能彻底。有绝对00的模型,这样的模型我见过。哈 哈~~但说实在的,我觉得小应用用“绝对00”的方式来编写,有 失“应用”的本意。我们做东西只是要“用”,而不是研究它用的 是什么模型。所以,“Hel1 o World”也用00方式实现,原本就只 是出现在教科书中的Sample罢了。哈哈。 Sou1:还有不可能用彻底的面向对象方法来表达世界。因为这个世界不 是面向对象的。是关系网络图,面向对象只是树,只能片面的表 达世界。所以很多时候面向对象去解决问题会非常痛苦。所以编程 退到数据结构更合理,哈哈。 我:如果内存是“层状存取”的,那么我们的“数据结构”就可以基于 多层来形成“多层数据结构”体系。如果内存是“树状存取”的, 那么我们当然可以用“树”的方式来存取。一一可惜我们只有顺序 存取的内存。 我:程序=数据十算法 一一这个是面向过程时代的事。 程序=数据十算法十方法 在00时代,我们看到了事件驱动和模型驱动,所以出现了“方 法”问题。 Sou1:我的经验是:总体结构->面向对象,关系->数据结构,实现->算法 Sou1:看来我们对面向对象的认识还是比较一致的。 我第一次提到我对程序的理解是“程序=数据+算法+ 方法”,便是在这一次与Soul的交谈之中。在这次的交谈 -23-
『大道至简』 -23- 超越,也不认为它的FCL库会有什么奇特的地方。——除了它们足 够庞大。但是我认为,如果有一天OS也是用.NET Framework来编写 的,OS一级的消息系统、异常机制、线程机制等等都是.NET的,都 是面向对象的。那么,在这个基础上,将“事件驱动”并入OO层面 的模型,才有可能。 Soul:所以我发觉面向对象的思维第一不可能彻底,第二只能用在总体分 析层上。在很多时候,实质上我们只是把一个顺序的流程折叠成对 象。 我 :倒也不是不可能彻底。有绝对OO的模型,这样的模型我见过。哈 哈~~但说实在的,我觉得小应用用“绝对OO”的方式来编写,有 失“应用”的本意。我们做东西只是要“用”,而不是研究它用的 是什么模型。所以,“Hello World”也用OO方式实现,原本就只 是出现在教科书中的Sample罢了。哈哈。 Soul:还有不可能用彻底的面向对象方法来表达世界。 因为这个世界不 是面向对象的。 是关系网络图,面向对象只是树,只能片面的表 达世界。所以很多时候面向对象去解决问题会非常痛苦。所以编程 退到数据结构更合理,哈哈。 我 :如果内存是“层状存取”的,那么我们的“数据结构”就可以基于 多层来形成“多层数据结构”体系。如果内存是“树状存取”的, 那么我们当然可以用“树”的方式来存取。——可惜我们只有顺序 存取的内存。 我 :程序=数据+算法 ——这个是面向过程时代的事。 程序=数据+算法+方法 ——在OO时代,我们看到了事件驱动和模型驱动,所以出现了“方 法”问题。 Soul:我的经验是:总体结构->面向对象,关系->数据结构,实现->算法 Soul:看来我们对面向对象的认识还是比较一致的。 我第一次提到我对程序的理解是“程序=数据+算法+ 方法”,便是在这一次与 Soul 的交谈之中。在这次的交谈
第2章是懒人造就了方法 中的思考仍有些不成熟的地方,例如我完全忽略了在面向 过程时代的“方法”问题。实际上面向过程开发也是有相 关的“方法”的。 所谓“面向过程开发”,其实是对“结构化程序设计” 在代码阶段的一个习惯性的说法。而我忽略了这个阶段的 “方法”的根本原因,是即使没有任何“方法”的存在, 只需要有了“单元(Unit)”和“模块(Module)”的概念, 在面向过程时代,一样可以做出任意大型的程序。在那个 时代,“方法”问题并不会象鼻子一样凸显在每一个程序 员的面前。 面向过程开发中,“过程(procedure)”是CPU提供的, “单元(uit)”则是编译器提供的(机制)。程序员不需要(至 少是不必须)再造就什么“方法”,就可以进行愚公式的开 发工作了。 如果不出现面向对象的话,这样伟大的工程可能还要 再千一百年… 而与“面向对象”是否出现完全无关的一个东西,却 因为“过程”和“单元”的出现而出现了。这就是“工程 (engineering)”。 -24-
第 2 章 是懒人造就了方法 -24- 中的思考仍有些不成熟的地方,例如我完全忽略了在面向 过程时代的“方法”问题。实际上面向过程开发也是有相 关的“方法”的。 所谓“面向过程开发”,其实是对“结构化程序设计” 在代码阶段的一个习惯性的说法。而我忽略了这个阶段的 “方法”的根本原因,是即使没有任何“方法”的存在, 只需要有了“单元(Unit)”和“模块(Module)”的概念, 在面向过程时代,一样可以做出任意大型的程序。在那个 时代,“方法”问题并不会象鼻子一样凸显在每一个程序 员的面前。 面向过程开发中,“过程(procedure)”是 CPU 提供的, “单元(unit)”则是编译器提供的(机制)。程序员不需要(至 少是不必须)再造就什么“方法”,就可以进行愚公式的开 发工作了。 如果不出现面向对象的话,这样伟大的工程可能还要 再干一百年…… 而与“面向对象”是否出现完全无关的一个东西,却 因为“过程”和“单元”的出现而出现了。这就是“工程 (engineering)
第3章[ 团队缺乏的不只是管理 “言人三为众,虽难尽继,取其功尤高者一人继之, 於名为众矣。” 一一《汉书·高惠高后文功臣表序》颜师古注 1.三个人的团队 《汉书》中说“言人三为众①”,是指三个人就算得上 是“众”了。这里的“众”应该理解成一个群体,亦或者 说是一个团队。 团队是至少以三个人为规模的。这有其合理性。为什 么呢?首先一个人算不得团队,那是个体。两个人则互相 支撑,古文中“从”字是二人互立,就是这个意思。然而 二人互立并不算团队,因为没有监督。三个人便可以构成 团队,这样便有了团队的一些基本特性:主从、监督和责 任。 一个人的开发行为可以成功,这取决于个人努力。大 家熟知的KV100、KV200反病毒软件,最早就是王江民 先生一个人做出来的。二人小组如果能相互支撑,那也是 ①片面地理解成“三人为众”是不对的。“三”在这里是虚词,指 的是很多人的意思。然而,古人以“三”来泛指很多人或者群体, 则是很值得玩味的事。 -25-
第3章 团队缺乏的不只是管理 “言人三为众,虽难尽继,取其功尤高者一人继之, 於名为众矣。” ——《汉书·高惠高后文功臣表序》颜师古注 1. 三个人的团队 《汉书》中说“言人三为众①”,是指三个人就算得上 是“众”了。这里的“众”应该理解成一个群体,亦或者 说是一个团队。 团队是至少以三个人为规模的。这有其合理性。为什 么呢?首先一个人算不得团队,那是个体。两个人则互相 支撑,古文中“从”字是二人互立,就是这个意思。然而 二人互立并不算团队,因为没有监督。三个人便可以构成 团队,这样便有了团队的一些基本特性:主从、监督和责 任。 一个人的开发行为可以成功,这取决于个人努力。大 家熟知的 KV100、KV200 反病毒软件,最早就是王江民 先生一个人做出来的。二人小组如果能相互支撑,那也是 ① 片面地理解成“三人为众”是不对的。“三”在这里是虚词,指 的是很多人的意思。然而,古人以“三”来泛指很多人或者群体, 则是很值得玩味的事。 -25-
第3章团队缺乏的不只是管理 可以获得成功的,同样作为反病毒软件的AV95在95到 97年成功占据反病毒软件市场之一隅,就是周辉和刘杰 先生两个人的作品。 然而到了三个人的时候呢,就得选个领导了。颜师古 为《汉书·高惠高后文功臣表序》作注时,引用了孟康的 话,说“取其功尤高者一人继之,於名为众”,简意就是 功高者代替群体受功。古人的受功当然包括封侯晋爵,因 此这便仿然成了惯例而推广开来,功劳大的、能力强的便 成了团队中的领导角色。 殊不知彼时彼事,目的并非要选领导,而是要表彰功 绩。项目结束会议上,总经理说:“M项目完成得很好, 小$的进步尤其之大,他独立完成了全部核心代码的编 写,因此月奖加三倍”。奖不可谓不丰,然而这并不代表 在下一个项目该让小S来做项目经理。 同样,三板斧定了瓦岗寨的程咬金,功不可谓不高, 技不可谓不强。但程咬金不是将帅之才。 做管理起码需要能承担责任,这是最基本的素质。 《史记·循吏列传》记载了李离伏剑的故事。春秋时 晋国最高司法长官李离,因为“过听杀人”,断狱失误, 把一个不该处死的人错判了死刑。随后“自拘于廷,请死 于君”,晋文公欲以其下属有过为由免他的罪,而李离说: “臣居官为长,不与吏让位:受禄为多,不与下分利。 今过听杀人,傅其罪下吏,非所闻也。” 随后拔剑自杀了。 -26-
第 3 章 团队缺乏的不只是管理 -26- 可以获得成功的,同样作为反病毒软件的 AV95 在 95 到 97 年成功占据反病毒软件市场之一隅,就是周辉和刘杰 先生两个人的作品。 然而到了三个人的时候呢,就得选个领导了。颜师古 为《汉书·高惠高后文功臣表序》作注时,引用了孟康的 话,说“取其功尤高者一人继之,於名为众”,简意就是 功高者代替群体受功。古人的受功当然包括封侯晋爵,因 此这便仿然成了惯例而推广开来,功劳大的、能力强的便 成了团队中的领导角色。 殊不知彼时彼事,目的并非要选领导,而是要表彰功 绩。项目结束会议上,总经理说:“M 项目完成得很好, 小 S 的进步尤其之大,他独立完成了全部核心代码的编 写,因此月奖加三倍”。奖不可谓不丰,然而这并不代表 在下一个项目该让小 S 来做项目经理。 同样,三板斧定了瓦岗寨的程咬金,功不可谓不高, 技不可谓不强。但程咬金不是将帅之才。 做管理起码需要能承担责任,这是最基本的素质。 《史记·循吏列传》记载了李离伏剑的故事。春秋时 晋国最高司法长官李离,因为“过听杀人”,断狱失误, 把一个不该处死的人错判了死刑。随后“自拘于廷,请死 于君”,晋文公欲以其下属有过为由免他的罪,而李离说: “臣居官为长,不与吏让位;受禄为多,不与下分利。 今过听杀人,傅其罪下吏,非所闻也。” 随后拔剑自杀了
「大道至简」 同样的道理,你的项目经理职位又没有让给别人做, 你拿的经理级工资又没有分给别人,那项目失败了,你为 什么要把责任推到别人头上呢? 三人团队中的那个领导,不是要程咬金一样的牛人, 而是要李离一样的死士。项目完成不了,切脑袋的事倒不 必做,递交辞呈的那点勇气总是要有的。 2.做项目=死亡游戏? 如果项目做不成就要掉脑袋,那就象好比是枕着测刀 在做程序:如果项目失败就要交辞呈,那可能就从来不会 有项目经理。 为什么这么说呢? -27-
『大道至简』 -27- 同样的道理,你的项目经理职位又没有让给别人做, 你拿的经理级工资又没有分给别人,那项目失败了,你为 什么要把责任推到别人头上呢? 三人团队中的那个领导,不是要程咬金一样的牛人, 而是要李离一样的死士。项目完成不了,切脑袋的事倒不 必做,递交辞呈的那点勇气总是要有的。 2. 做项目 = 死亡游戏 ? 如果项目做不成就要掉脑袋,那就象好比是枕着铡刀 在做程序;如果项目失败就要交辞呈,那可能就从来不会 有项目经理。 为什么这么说呢?