2002年初,Java服务器端技术正处于塑型阶段,MVC作为一种架构模式,正逐渐开始在众多技术人员的大脑中蔓延。此时,Apache Struts在合适的时间出现,从而逐渐发展成为Java Web MVC框架事实上的标准。
关于Struts,还有点心酸往事……
时值Struts 0.9版本发布之时,我正忙于设计公司新一代产品平台框架,期间也在参考Struts的设计思想(是时Struts尚未流行,各个公司往往拥有自己的框架实现)。
与此同时,我邻位的一个新同事,23岁的印度小伙Pilesh,摩拳擦掌正准备大干一番,这个刚刚离开自己祖国的年轻人无疑充满了干劲,每到午餐时间都是以最快的速度冲到楼下,买一份印度餐,用油纸裹着端回工位(大致上是用米饭,拌上一些蔬菜和牛肉,最后浇上咖喱汁,然后倒在一张大号油纸上,再包起来,用细绳扎好作为外卖),一边用手捏着塞入嘴中,一边嘟嘟囔囔的用肘部移动鼠标,研究屏幕上花花绿绿的代码。
一天早上,我刚到公司,Pilesh立即凑过来,兴奋的对我说:
P:“Hi,Kevin,Do you know Struts?”
K:“Yup,a MVC framework,then?”
P:“I will use it in my project. How do you think about it?”
K:“e…,good,do you have some experience in Struts development?”
P:“No! But I will have!”
看到他身边字纸篓里的两团油纸,和屏幕上闪动的Struts源码,通宵熬夜之后,Pilesh显然已经被Struts的设计思想所深深吸引……
心酸的回忆也正由此开始。
随着新项目的开始,Pilesh似乎明显不如之前活跃,上班时我甚至发现自己工位上的字纸篓也塞满包裹外卖的油纸。Pilesh总是歉然一笑,指着自己那个已经被可乐瓶和油纸塞满的字纸篓耸耸肩。
身为一个IT技术人员,笔者也早已经将熬夜置之度外,遂惺惺相惜,一笑了之….
时间过去了一个多月,Pilesh还是像以前那样匆忙,样子有点憔悴。
终于有一天,Boss找到了我,
B:“How do you think about Pilesh?”
K:“Oh,good,a nice guy!”
B:“yup…but do you think we need him?”
K:“e….sorry, I can't understand….”
B:“Our Project had exceed the deadline for about 10 days,but Pilesh still can not give out even a demo”
K:“……”
B:“Sorry, I only wanna tell you ,he will be fired……”
两天之后,另外一个印度同事Pardeep接替了Pilesh的位置,以及他未能完成的项目……
P:“Hi,Kevin”
K:“yeah?”
P:“The project is based on the struts framework?”
K:“yup!”
P:“But I am not familiar with it, then…?”
K:“oh……then……”
K:“Forget it”
最后这句“Forget it”,无奈中包含着一点发泄的情绪。
急于在项目中引入自己并不非常熟悉的新技术。这是缺乏经验的程序员最容易犯下的、最致命、同时也可能是最无辜的错误。
Pilesh恰恰犯下了这个错误。他坚信引入Struts可以提高开发效率,减少开发时间,从而错误的估计了项目进度,殊不知任何技术对生产率的促进,都是在生产者充分掌握了这门技术的基础之上。
另外,过于争强好胜,羞于向别人请教。这个项目只是个微型项目。因而管理层并不是非常关注。每每在例会上稍加询问, Pilesh也只报喜不报忧,导致项目最终失控,由于这样一个小项目,却使得一个大客户对公司的满意度大幅下降,从而也导致后来管理层对他采取的措施较为激烈。而另一方面,公司在这个项目的项目管理和跟踪上也是一个失败的典型,几乎没有任何实质的管理措施。
之后,此事也常常被我用作警戒自己和团队成员的一个案例。
后来与Pilesh再会,是在我即将回国前夕。为了买一条印度纱丽作为纪念,我跑到一个印度人聚居区的杂货市场,正在闲逛之时,突然看到Pilesh,正在路边一家餐厅里熟练的翻烤着一片片薄饼,不错,肯定是他……
不知后来又发生了怎样的事情,让他如此落魄。
烟熏火燎的脸上,看不出一点程序员特有的沉默宁静的表情。
兔死狐悲,曾经朝夕相处的同事,沦落到街头烤饼,纵使看了蔡学庸的“程序员烤香鸡排”一文的苦笑自嘲,真实的事情发生在身边,也不免有点感触,而Struts由于与此事相关,也成为了灰色回忆中的一个部分。这也是后来我在自己负责的项目中,从未采用过Struts进行正式开发的主要原因。