[转] 编程之道 二
编程之道(二)
--------------------------------------------------------------------------------
第八军团 时间:2003-12-1 11:18:48
第五篇 维护
编程大师如是说:
“即使一个程序只有三行长,总有一天它也不得不需要维护。”
5.1
一记扇经常开启的门的绞链不需要润滑油。
一条湍急的河流不会变得污浊。
无论是声音还是想法都不可能在真空中传播。
软件如果不用就会腐朽。
这世界真奇妙。
5.2
一个程序员正在编写他的程序,经理问他还需要多长时间完成。
“明天就可以完成。”程序员立刻回答。
“我想你这是不切实际,”经理说,“实话实说,这需要多长时间?”
程序员想了一会儿。“我还想加进一些新的特色,这需要花至少两个星期的时间。”他最后说。
“即使那样也期望过高,”经理坚持说,“只要你编完程序时告诉我一声,我也就满足了。”
程序员答应了。
几年以后,那位经理要退休了。在他去退休午餐会的路上。他发现那个程 序员趴在他的终端机前睡着了。整个晚上都在忙于编写那个程序。
5.3
一次一位初学编程者被指派编写一个简单的财务软件包。这位初学者大张旗鼓地工作了许多天。但当他的师父检查这套程序时,发现其中包含有一个屏幕编辑器,一套通用图表程序,一个人工智能界面,然而却没有任何财务方面的东西。
当师父问及此事时,初学者显得愤愤不平。“不要这样没有耐心嘛,”他说,“我最后加些财务的素材进去就是了。”
5.4
难道一位好农民会漏掉他所种的一株庄稼吗?
难道一位好老师会放弃哪怕是最差的学生吗?
难道一位好父亲会允许哪一个孩子挨饿吗?
难道一位好程序员会不愿维护他的程序吗?
第六篇 管理
编程大师如是说:
“让程序员多而经理少--然后生产效率就会高。”
6.1
当经理们没完没了地开会时,程序员就写些游戏玩;当财务主管们谈到季度利润时,开发用的预算马上就要被削减;当资深科学家们谈论蓝蓝的天空时,马上就会风起云涌。
其实,这并不是编程之道。
当经理们忠于职守时,游戏程序就会被搁置到一边;财务主管们制订出长 远的计划时,和谐秩序将很快恢复;当资深科学家们着手于眼前的问题时,这些问题不久就会解决。
其实,这才是编程之道。
6.2
为什么程序员没有效率?
因为他们的时间浪费在开会上。
为什么程序员很难管束?
因为管理层多管闲事。
为什么程序员接二连三地辞职?
因为他们的热情已耗尽。
在糟糕的管理之下工作,他们不再敬业。
6.3
一位经理即将被解职,但此时他手下的一名程序员发明了一个新的程序。这个程序流行起来,并且极为畅销。结果,经理又回到了原来的岗位上。
经理试图要发给那位程序员一笔资金,但程序员拒绝了。他说:“我写这个程序,因为我认为这是个很有意思的想法。我并不期望有所回报。”
经理听到这话,评论说:“这位程序员虽然身居卑位,却能很好地理解一位雇员应尽的职责。让我们提拔他到管理顾问的高位上吧!”
然而,接到通知后,那位程序员又一次拒绝了。他说:“我在属于我的位置上,才能较好地编程。如果我被提升了,除了浪费每个人的时间,我将一事无成。现在我可以走了吗?我还有一个程序要编呢。”
6.4
一位经理走过来对他的程序员们说:“关于你们的上班时间:你们要早上九点钟到,下午五点钟下班。”听了这话,所有的程序员都很气愤,其中有几位要当场辞职。
于是,经理只好又说:“好吧,那样的话,你们可以自己安排上班时间,只要你们能按时完成项目。”程序员们满意了。以后,他们中午来到办公室,一起工作到凌晨。
第七篇 公司里的学问
编程大师如是说:
“你可以向一位公司总裁演示一个程序,但你无法使他学会使用电脑。”
7.1
一位初学者问大师:“在东方(此处喻指美国的东海岸,有许多大公司的总部--译注),有一个不寻常的树状结构,人们称它为‘公司总部’。它的副总裁们和财务主管们的数量之大,使它鼓得不成开关。它签发大师的便函,每份上都写着”归去”“来兮”,却没有人知道那是什么意思。它的那些分支机构每年都要换新的名字,但都毫无价值。如此一个不正常的实体怎么能继续存在呢?”
大师回答说:“你探察这个庞大的邓因其没有合理的用途而心神不定。难道你不能从它那无尽的回旋中得到乐趣吗?你不会享受一下在它所蔽护的部分里的编程的那种无忧无虑的轻松吗?你为什么要因为它毫无用处而心烦意乱呢?”
7.2
在东方,有一条大鱼,比其它所有的鱼都要大。它变成了一只鸟,它的翅膀就像云朵一个布满了天空。当这只鸟飞过陆地时,它带来了“公司总部”的消息,像蜻蜓点水一样把这个消息丢在了那些程序员中间。然后这只鸟驾着风,背负蓝天,返回了家园。
初学编程者惊奇地盯着那只鸟,因为他根本无法理解;平庸的程序员畏惧那只鸟的到来,因为他害怕鸟儿带来的消息;而编程大师却仍然在他的终端机前工作,因为他不知道那只鸟来了又去了。
7.3
象牙塔里的魔术师带来了他最新的发明,要让编程大师检验一下。魔术师把一只大黑箱子推进办公室,大师静静地等侯着。
“这是一台集成的、分布式的、通用的工作站,”魔术师开始,“运用人类工程学原理,使用享有专利的操作系统、第六代评议和多重状态用户界面而设计完成。建造这台工作站,花了我几百名助手几年的时间。这不足以令人惊奇吗?”
大师轻轻地扬了扬眉毛。“这的确令人惊奇。”他说。
“公司总部已经命令,”魔术师继续说,“每个人都得使用这台工作站作为操作平台来设计新的程序。你同意吗?”
“当然同意,”大师说,“我马上就把它运到数据中心去。”于是魔术师兴高采烈地回到了象牙塔去了。
几天后,一位初学者走进大师的办公室问道:“我找不到我的新程序清单了。你知道它会放在哪儿吗?”
“知道,”大师回答说,“那些清单就堆放在数据中心的台子(platform“可以指操作平台”,也可以指普通的台子--译注)上。”
7.4
编程大师从不惧怕在设计不同程序的岗位间调来调去;管理层的变动不可能对他有所损害;他不会被解雇,即使项目取消了。这是为什么呢?因为他胸有成“道”。
第八篇 硬件和软件
编程大师如是说:
“没有风,草儿静止不动;没有软件,硬件则无所为用。”
8.1
一位初学者问大师:“我觉察到有一家电脑公司比其它所有的公司都要大得多。它在中遥遥领先,就如同鹤立鸡群一般。它的任意一个部门都可以组成一个完整的企业。这是为什么呢?”
大师回答说:“你怎么问这么愚蠢的问题呢?因为那家公司大,所以它就大嘛。如果它仅仅生产硬件,没人愿买;如果它仅仅生产软件,没人愿用;如果它仅仅维护一下系统,人们将把它当作是佣人。然而,因为它把所有这些东西都结合了起来,它便摇身一变,被人们看作是诸神之一。不费吹灰之力,它便能取胜。
8.2
一天,一位大师从初学编程者身边经过,他发现这位初学者正在全神贯注于掌上电脑游戏。“对不起,”他说,”我可以看一下吗?”
初学者立刻紧张起来,把那个玩意儿递给了大师。“我知道这种设备提供了三个游戏级别:容易、中等和高难,”大师说,“然而每个这样的设备都有另一个级别,在这一级,游戏机既不想赢人,也不想被人打败。”
“请问,尊敬的大师,”初学者恳求道,“怎样才能找到这个奇妙的级别设置呢?”
大师把那个玩意儿扔到地上,踩到粉碎。突然间,那个初学者明白了什么。
8.3
曾经有一个程序员,擅长在微电脑上编程,“瞧,我在这里过得多好呀,”他对另一位来访的程序员说,这位程序员是在大型主机上工作的,“我有自己的操作系统和文件存储设备,我不必和其他任何人分享我的资源。这里的软件自相一致,很容易使用。你为何不辞去现在的工作,加入到我这里来呢?”
于是,主机程序员开始向他的这位朋友描绘他的系统:“主机就像一位陷入沉思的圣人一样,端坐在数据中心。它的磁盘器首尾声相连,就如同机器的海洋。这里的软件既像钻石一样能多面反射光芒,又像原始丛林一样复杂难测。这里的程序,各具特色,它们像湍急的河流穿过系统。这就是我乐于此处的原因。
微电脑程序员听到这里,陷入了沉默。但这两位程序员至死都保持着友谊。
8.4
在去硅谷的路上,硬件碰上了软件。软件说:“你是阴,我是阳。如果我们携手同路,我们将闻名于世,并能赚大笔的钱。”于是,这一对阴和阳便一同往前走,想着怎么征服世界。
不一会儿,他们遇到了固件(firmware,硬件和软件结合在一起的部件,如IC卡--译注),他衣衫褴褛,手里拄着根带刺的拐杖,蹒跚地走着。固件对他们说:“道存在于阴、阳之外。它默默无闻,静如止水。它不追求名誉,所以没人知道它的存在;它不追求财富,因其自身完整圆满。它存在于空间和时间之外。”
软件和硬件,自觉惭愧,掉头回家去了。
第九章 尾声
编程大师如是说:
“现在该是你出师的时侯了。”