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 cant 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进行正式开发的主要原因。
