Zhiyong's profilePretend you're happy whe...PhotosBlogListsMore ![]() | Help |
|
|
8/25/2006 Framework害人不浅 公司要招人,于是我这个程序员也硬充了一回人事,最近几天都在筛选简历和面试,每天在chinahr上看简历看到吐。看来看去,渐渐发现从简历中可以总结出当前业界的大致情况。10份简历中,起码有8份是做web技术的,各个号称精通JSP、Struts、EJB、Spring......看得我不禁感叹,Java桌面程序,你传说中的春天到底在哪里......(BTW,10份中的剩余两份是做手机增值的) 有的web程序员看上去还不错,遂招来面试,却每每令我失望。如他们的简历所言,他们对各种web框架还算熟悉,但是Java语言和数据结构的基本功都实在太差。他们都有一些编程经验,也都参加过不小的项目,然而在能熟练使用各种框架的同时,却分不清重载和重写,不清楚抽象类的应用场合,不理解Java设立interface的用意。面试过许多诸如此类的人之后,我的思维也渐渐混乱了:IT这碗饭到底是好吃还是难吃呢? 昨天和今天面试了两个小孩,都号称大学本科计算机系毕业。我同样问他们:“数据结构学过吧?”答:“学过。”我问:“单向链表知道吧?”俩人如出一辙地(只是一个人望天片刻,一人望地片刻)答:“忘了。”要不是有桌子挡着我早就...... 还有上个月老板的熟识送了一批青鸟培训的学员来面试,我问一女生:“你们学过数据结构吧?”她答“没有。我们学的都是软件工程,Visual Studio开发工具这样比较高层的东西。”我顿时无语,不由想起喉结同学《深入浅出MFC》开篇之句:勿在浮沙筑高台啊。其实我很想告诉她,身为面试官的我,最近都正计划再从头学一遍数据结构,从头看一遍Thinking in Java,从头搞一回“底层”的东西..... 当然了,数据结构和算法是否有用,到今天已经成了一个见仁见智的话题,有的时候我甚至觉得已经上升到了一种信仰的高度,信的人就信,不信的就不信,没有什么好理论的,不同人有不同人的活法。包括有个把我很景仰的程序员都对重视算法不以为然。不过具体到我自己,我还是觉得算法满重要的。诚然,许多算法都已经内置到了各种库中,只需拿来用就可以了,但是算法的意义并不仅仅在于给我们一个最终的解决方法或结论,并不是仅仅记牢快速排序的每一步骤和O(nlogn)。在推导算法的过程中所使用的思维方法,所采用的思路同样是宝贵的财富。其次,在具体开发的过程中,在程序整体的构架上,也会遇到可以使用算法的地方,至少我不相信写web程序时就永远没有能用到算法的地方。在这一点上我自己就有切身的体验。做BPMN图向BPEL转换的过程中,就不止一次地想,如果当初好好学学图算法就好了......到最后实现得委实是很土。 其实我最看重算法的是它的智力锻炼或者叫头脑体操功能。说到底,计算机科学所使用的基本思想也无非就是生活中颠扑不破的基本道理,而IT业和其它行业也没什么两样,都是聪明努力的人才能成功。读一遍算法,出几身大汗,死几百万脑细胞,看着无益,其实还是挺有好处的,起码脑子不生锈...... 拉拉杂杂这么多,还是说回题目吧。我们有必要在享受各种框架带来的方便的同时,也要警惕它们给从业者,至少是初学者带来的潜在的不良影响。说得刻薄一点,框架给我们(至少是给我)这样一种感觉:只要会一种框架,那么只需要知道怎么声明变量,知道什么是if then else,什么是while,什么是for,就立码可以开始编程序了。也不用怎么面向对象设计,也不用怎么算法,跟做带鱼一样,一段一段写程序段就行了。 来一个小插曲: 我看一人简历上写精通J2EE设计模式,于是我问:“随便给我讲一个J2EE设计模式吧。” 其人答:“好啊好啊,我给你讲一下struts是怎么运作的吧,首先,用户的请求到达服务器....blabla....” 我(这是设计模式么......):“好......好吧,那你能谈一下用struts开发和传统开发相比的优点吗?” 答:“快速。” 我(汗):“是指开发速度快还是运行速度快?” 答:“都挺快的。” 我(彻底败服):“行,好好好......” 其实框架是无罪的。为人提供方便,让生手也能迅速上手开发出程序,不正是它的目的和优点么?也许是这个时代,是IT业的现状才放大了框架的不良影响。不需要具备太多的编程技术,只需要掌握一种框架和基本的编程知识,按照框架的要求填缺补漏,便能迅速开发出活生生摆在眼前的程序,在这个浮躁的时代又有几个人能够抵御住这种诱惑呢?如果你是一个普通公司的领导,你是愿意招一个什么算法都耍的有模有样,却不会使用开发工具,不能立刻开始干活的人,还是愿意招一个虽然不懂什么算法,但是有使用某种框架的经验,从进公司第一天第一个上午第一个小时就能开始干活的人呢?如果你是一个初学者乃至需要找工作的人,你是愿意苦苦啃算法,还是愿意学会一个框架,进个小公司,甚至自己拉个web项目,立刻可以开始挣钱呢? 存在的,就有一定的合理性。我也开始慢慢理解了报刊杂志前一阵鼓吹的“市场需要软件蓝领”。说到底,按中国的IT水平,别说懂框架的,会写HTML的到了小城镇都是宝了。一招熟,吃遍天,又何必苦哈哈地搞什么算法自寻烦恼呢? 然而无论是从时代还是个人的发展来看,软件蓝领的前景都不甚乐观。如果程序员的美梦&恶梦MDA能够成为现实,那么未来“要么是聪明的工具,要么是聪明的程序员,没有傻程序员”(二秃子语)。职场都讲究“不可替代性”,一个只会吭哧吭哧填代码的蓝领又有什么不可替代的呢?从个人修为的角度来看,应该是站在软件工程和面向对象分析的高处,去审视各个框架,以上视下,以思想入实际,以道理入个例,这样才可以明白这个框架为什么出现,给开发带来了什么好处,框架将向何处去。而不是正好相反,抱定一个框架,用得滚瓜烂熟,却从来没有想过为什么要用这个框架,这个框架的来龙去脉。新的框架层出不穷,如果只见树木,不见森林,脚下没有定根而只是不断地追逐新的框架,新的技术,必将心力交瘁而无所得。 说了这么多,也许是我杞人忧天。还是那句话,不同人有不同人的活法。如果一个人能掌握几百种框架,那也就是大牛了......有人求深,有人求广,有人求长,他们都有光明的未来...... |
|
|