程序员们都有一种可怕的乐观主义情绪。如果你是个好程序员,你一定体会过代码在指尖流淌,流程在脑海中跳转,程序以自己所能设想的最完美的方式运行的那种如同造物般的快感;你也一定会喜欢那种在无比复杂的逻辑中轻巧加入几个不起眼的指令却改变了整个程序的结果的操作感;更难得的,你身在一个和谐的团队中,每个成员都象最了不起的音乐家,小心而准确的演奏着自己的乐器,整个项目象贝多芬的交响乐,复杂而精确的前进。这种创造、控制和复杂系统的自和谐,给我们快乐,让我们洋溢着天下事无不可为的乐观和豪情。
这是身为IT民工的最宝贵的体验;这是能让我们这些IT民工分享创造者荣耀的唯一办法;这是IT民工们的乐趣;这也是我们的最要小心的原罪。
乐观和豪情并不是IT民工们的过错,只是象所有擅长逻辑思考和习惯以归纳法处理问题的人一样,我们都有透过现象看本质的本领。而往往,我们会被庞大的(这都是开发末期才被人承认的)软件系统中那最核心和最简洁的本质吸引,那才是我们要做的,激动人心的酷功能。至于那些能用就行的交互界面、可有可无的附加功能、小白才会去看的帮助文档、给菜鸟准备的安装程序...别开玩笑了,那些我们几天就能搞定...
现实往往是残酷的。菜鸟和老手写一个栈管理程序的效率有天壤之别,而他们写同样的帮助文档的时间绝不会相差太多。不幸的是,老手们往往认为,能用同样的高效率把项目中所有事情都搞定。乐观和豪情,让我们的项目日程显得不那么严谨。更雪上加霜的事,有许多的管理者,也倾向于,程序员能以同样的高效率,将项目进行到底。我见过许多被程序员的乐观影响了的管理者,看过几个非常酷的小DEMO,带着“功能都实现了,已经成功了一大半”的兴奋,开始规划着上市的美好远景。是啊,你能相信只用了一个月就把诺亚方舟的框子搭好了的超级木匠团队,得花上大半年来把它调试打磨吗?谁都会觉得,明天我们就能起航。
然而,行百里者半九十。软件项目,往往是用一半的时间做完九成的任务,一半的时间处理那些好像明天就能完成但是明天永远不会来的工作。
每当看到一张软件日程规划表,我都会提醒自己,注意那被忽略掉的百分之十。