梦醒代码
2011-09-04
《梦断代码》这本书主线颇多,所有内容都需要读者具备一定的软件行业知识——比如说厂商和产品部分,你应该很清楚Lotus、IBM System 360、Outlook、Exchange、Gmail等的功能和推出时间、技术创新;编程部分,你应该了解C++、Java、Python、Ruby、P2P和服务器的不同;编程思想部分,你要熟知抽象层次、面向对象;最后你还要懂得科学和艺术的区分,以探索软件的本质。这些基础导致了这本书在非程序员人群中会很难读透。
先谈谈书中的老大,Lotus软件公司的创始人卡普尔。
Lotus是一款我颇为“鄙视”的软件,缘于在使用它的痛苦经历,功能极不人性化,慢,各种程序员看起来都觉得莫名其妙的操作方式。Borland早就成为了“传奇”,Lotus这种在软件大爆炸开始时期赶了早集的软件也早该长眠了。
可笑的是卡普尔没有选择继续改进Lotus让它在未来可以与Outlook比肩成为企业通讯办公不二之选(虽然说卖给IBM它确实占据了很大份额),而是卖掉了公司,然后从事着类似于唐吉诃德的游侠生活旅途。
卡普尔是一个失败的领导,一个很“务虚”的人,跟着这样的领导者,就像没有目标的旅途,没有方式的赛跑,就算世界上最善跑的人,也只有两种结局:要么一开始就透支了体力,要么最后被累死。书中有一句话是这样描述卡普尔的:“卡普尔又追加了500万美元,他有的是钱。”或者是卡普尔又游说某个商界名流,投资多少……我们可以看到他是一个典型的社会活动家,一个曾经的弄潮儿,而不是可以重复成功故事的企业家。接下来我们详细看看——
“超过Exchange的卓越软件”
这是一句危险的假大空的口号。事实上,整个团队从来都没有详细定义过“空前卓越”的产品特性,而是事无巨细,没有先后的从零开始的待办列表。Chandler(书中产品和项目的名称)的定位是中小企业用户,但在整个项目中,却没有看到任何中小企业用户被邀请进来试用并反馈过意见,它一直在技术领域反复进行宣讲和希望开源程序员能够更多参与。这算得上“卓越”的标准吗?
不了解技术趋势,编程手艺再好也白搭
Chandler的开发团队由编程精英们组成,他们有来自网景、微软的,毕业于斯坦福的……但最致命的弱点是视野狭窄。当前掌握的技能再好,缺乏对技能在技术世界中定位的认知,注定跑不过全世界。例子之一是对Web开发趋势的错误评估,让他们在P2P协议上绕了一个大圈子又回到服务器方案;例子之二是对新技术动向缺乏跟进,采用Ajax技术的Gmail一出直接就宣告了他们的死亡。
缺乏决策者
实现技术方案和采用何种技术方案是完全不同的两码事。但无论如何,没有决策无法动身,人人决策就是浪费。Chandler项目中出现过几次技术决策迟迟不定,工程师自主开工的情况,已经数不清了。这甚至称不上是一支团队,是一支散乱的杂牌军。
没有理性思维,算什么工程师
Chandler团队中充斥着大量感性的“信仰”而不是理性思维。比如说从P2P转为服务器方案是对自由精神的背弃;鄙视项目经理和开发经理的职位;为竞争不过竞争对手而被放弃的产品撞烂摩托……就像书中有一节提出的一个观点“软件工程根本就不具备其它工程共同具备的物理学知识,所谓工程只是一个修饰语”一样,他们从事的事情和工程、和科学思维一点关系都没有。一个真正具备科学思维的人对政府管理持更多人文精神而不是偏激,对别人发现而不是自己发现的重大科学进展是包容吸收,科学思维注重事实,根本就没有那么多个人感性的成分。软件团队如果同Chandler团队一般,那么整个屁股都坐给错了。
在这里我们其实应该修正一个我们一直在提的问题,“软件是什么”。这个问题其实应该是:“代码究竟是什么”。代码仅仅只是一种工具。无论你掌握的是你自己引以为豪的哪种,它和工人手中的钳子扳手,农民手上的镰刀锄头,企业家手上的派克签字笔,皇帝老头手上的传国玉玺一样,仅仅只是一个实现某种目标的工具。如果你是从工具起家,离开工具就无法在世界中真正解决些什么,留下些什么,那么很快就有人来打消你所有的自尊心。