夏昕的专栏

原创 Struts的心酸往事收藏

新一篇: Spring开发指南 0.8 发布

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

 

发表于 @ 2004年09月08日 01:40:00|评论(loading...)|编辑

旧一篇: Spring Developer's Guide Updated!

评论

#过客 发表于2004-09-09 10:22:00  IP: 211.97.119.*
我不也太喜欢Struts!!!
#Jacklondon Chen 发表于2004-09-08 22:54:00  IP: 61.50.149.*
我从不看好 Struts,垃圾一个。我更喜欢 Apache 另一个工具:Velocity!
#SM 发表于2004-09-09 13:27:00  IP: 210.83.202.*
我也正在学着做struts!
#sm 发表于2004-09-09 13:28:00  IP: 210.83.202.*
忘记说了,暂时还没什么感觉,只是认为这条路是对的.
#ezerg 发表于2004-10-09 09:40:00  IP: 211.148.8.*
strtuts 不错的.

Velocity我不太喜欢,和servlet绑定太紧.

spring 确实很好,哈哈......
#杀手13 发表于2004-10-20 14:34:00  IP: 218.247.136.*
新技术的探索永远在业余时间,一旦参加项目就要拿出最有把握的技术去实现,因为老板与客户对新技术并不太感冒,关键是快速完成项目,让公司赚到钱。引入新技术进入项目的前提条件是项目组中至少有一个人完全把握它。
#frankia 发表于2004-10-24 16:39:00  IP: 218.22.167.*
故事,经典!
杀手13,经典!
#兔八哥 发表于2004-12-27 12:52:00  IP: 61.49.119.*
最近在读你的Hibernate和Spring的开发指南,写的很好,解决了我不少疑团,希望能够读到更多的你的大作,看到你Blog,顶一下!
#jpollux 发表于2005-01-10 17:28:00  IP: 211.144.102.*
想请问一下,spring mvc与struts比起来。我们应该怎么舍取呢?
如果再来一个jsf呢?
毕竟我们学习时间有限,希望大家能说说自己的看法!
非常感谢。
#差沙 发表于2005-02-18 22:38:00  IP: 218.61.104.*
看了有点心酸,看了回复有点心酸,我也用过struts,我也考虑过她的好坏。
但看了这个文章,我想到的绝对不是struts,如果不是struts是什么struct又能怎么样。还会有无数个这样的悲剧人物因为对新技术的一种执着而受伤。正像杀手13所说,我们应该领悟的不是struts好坏,而是作为程序员的一种原则,程序员不能只追求技术的……

PS:我是个大学生,可能没有这个说上面的这些高手,先说对不起了,对不起。
杀手13也一定不大,因为<杀手13>是我最爱玩的游戏
#宪哥 发表于2005-03-20 02:26:00  IP: 61.170.181.*
只有一句话,发泄我的不满,超营养老鸡排。(不是针对作者)

我第一次用struts也是用在一个项目中(之前没接触过struts)。期间让自己多次懊悔干吗不用servlet,一堆问题早就解决掉。。
#steven_du 发表于2005-03-20 13:00:00  IP: 221.218.33.*
楼上诸位,这篇文章说的可不是struts的优劣,请注意

“急于在项目中引入自己并不非常熟悉的新技术。这是缺乏经验的程序员最容易犯下的、最致命、同时也可能是最无辜的错误。”

这才是文中之关键。
程序员都是热血青年往往记不住。
#YuLimin 发表于2005-04-15 16:45:00  IP: 221.4.149.*
steven_du 说得很对!成熟的技术与成熟的人员实施项目才有好的结果,看过《软件工艺》这本书就会知道,都想请项目经理,而不想请十个程序员去做开发:)
#Rami 发表于2005-06-18 16:34:00  IP: 61.186.252.*
做自己有把握的事
#JW 发表于2005-09-15 21:03:00  IP: 211.100.21.*
我用过几次Struts来做一些小的项目,但是到现在还是不会用!!!
明白我在说什么吗?
我只是用Struts来做项目,中间有一些很不好的实现,就是不规范的实现,还是用一些Servlet的东西来写的。
其实一个项目是用来做的,用来卖钱给公司赚利润的,不是用来演示新的技术的。所以我用我最好的方式来做程序,而不是一味的教条的用Struts来做。Struts有它的好处,也有它的缺点。有时候我选择了一个Framework,但是使用的时候发现有些实现用一些更简单的方法来做,会有更好的效果,不要一味的只是要用Struts而来用Struts。
还有一点我想对Pilesh说的是,Just do it!做了,出Bug了再改,不要只是看、学习Framework,不下水永远不能学会游泳的。
#g 发表于2006-03-28 13:52:00  IP: 220.248.10.*
在几个项目里用过,但现在打算放弃,使用webworks,代替
#哈哈 发表于2006-04-13 20:44:00  IP: 61.141.122.*
对于Struts基本上感觉一般吧,现在打算好好研究一下WebWorks2
#xiaofanku 发表于2008-03-04 13:38:08  IP: 218.108.43.*
在来杭州学习的半年中买过好多书!唯一没买的就是struts,抛开I18N,validate,taglib,我再想就有Action,ActionForm:
哪个能重用?非要我们去extends一个ActionForm这一点不推荐!但唯 一可让人兴备的就是它了!
Action不用它也可以,但有了ActionForm,再有它也可以理解!Spring的MVC没有作过demo
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 夏昕