非常有趣的文章 。简单说,就是一个牛人(Damien Katz)厌倦了无休无止开发Lotus Notes模板的工作(对不熟悉Lotus Notes 模板的老大们:Lotus Notes模板的开发和JSP/ASP有些像,都是用脚本调用后台的功能搭建用户界面),于是接下了维护Lotus Notes Formula Language Engine(如果你不知道Lotus Notes公式语言的话:它是Lotus Notes 4前Notes上唯一的开发语言)的工作。接下这个烫手山芋的时候,他写了5年模板,对C有极少的了解,而对C++更是一窍不通。而他开始写模板前就写成了。整个Iris没有人完全了解这个引擎。公式引擎用的字节存储格式连文档都没有。当时错误报告堆积如山,但没有人愿意或者能够修补那些问题。就在这种情况下,这个牛人开始了重写整个引擎的冒险。他先修补了所有存档的错误,然后写出了字节存储格式的详细文档,最后提前彻底重写了整个引擎。我觉得有意思的地方:
0. 最有意思的还是Damien的文章本身。如果读了Damien的文章,下面的不看也罢。
1. 激情至关重要。只有激情才能驱使我们百折不挠,搞定看起来高不可攀的项目。
2. 资深工程师往往以为他们做不出来的东西别人也做不出来。
3. 语言的细节往往不是决定项目成败的关键。Damien在重写前才开始看Bjarne Stroustrup的<<C++ Programming Language>>,还没有看完。
4. 恰当的工程方法相当重要。比如详细的数据格式文档,比如在项目的功能正常后再考虑局部优化, 比如渐进式开发,比如隔离底层的指针计算。
5. “10年C++经验资深工程师”一类的招人条件往往让公司和牛人擦肩而过。能找到既牛经验又丰富的人当然不错。但二者不可兼得时,还是要舍经验而取牛。
6. 好的经理难得。如果没有Wai Ki Yip , 多半没有这段让目眩神迷的故事了。
7. 有好的经理也是因为有好的文化。<<Peopleware>>没有过时。
8. 向后兼容不是那么遥不可及,就看我们有没有决心。
9. 做好UI不容易,但做久了也无趣(当然,做到Neilson那个级别又是另外一回事了)。