张磊
天津中德职业技术学院
基于J2EE企业级开发方向的软件行业现状与现代软件教学中的对比研究
张磊
天津中德职业技术学院
由于笔者过去在软件公司做开发以及项目经理,并且一直是用Java这门语言做开发,加上现在转行做了计算机方面的教师,通过在企业中的实际开发经验与现在的教学经验进行对比,发现了两者之间有很多可以互相借鉴,互相弥补的方面。
首先,现在的软件公司分为两大类,一类是开发国内项目的软件公司,一类是外包企业。外包企业大部分都是外企,工资待遇较高,对入门级程序员来说入门门槛较低,因为他们有完整的软件工程模式。对这些职场新人而言好处是门槛低,工资高。坏处就是其实学不着什么东西,因为完全对着文档写永远不会有自己的想法,想提升技术很难很难。而国内这些企业入门门槛较高,待遇也不高。但是很锻炼人,为什么呢?就是因为这些国内企业的老总希望招一个什么都会的人,既会前台美工,也会后台编程,更会干DBA的那套活,会的越多人力成本越低,所以企业非常希望要一个人当三个人用的能人。
Java基础知识——J2EE企业级架构开发——架构设计
以上3个阶段我认为是一个0基础的人到技术牛人的技术发展历程。现代软件开发的趋势一般都是用B/S结构进行开发,C/S结构的相对较少。
这阶段应该是在学校学习的,即需要老师把学生带进编程的大门,需要让学生产生编程的乐趣,让他们喜欢编程,至少不厌烦它。这是至关重要的一个起步阶段,我们国家学软件的学生多如牛毛,而真正能学出来能干开发的人与学软件的人相比那可是凤毛麟角,为什么?我认为是在学校中的很多编程基础把学生们的兴趣扼杀在了摇篮里,很多教材中所出的题基本上都是在企业开发中绝对禁止的。归根结底是因为考试需要出题考学生,看学生掌握的知识是否牢固是否清楚,会出各种让人混淆的概念来考学生的知识掌握程度。而在企业软件开发中,编程最基本的要求就是简单易懂,用最简单的代码完成任务即可。
这阶段需要学的技术有很多,首先,前台:JSP,JQUERY,CSS, HTML,EL,AJAX,JS。后台:Struts2,Spring,Hibernate,Ibatis架构级开发模式,面向接口编程,WebService。数据库:SQL,HQL,视图,触发器,存储过程,如何提高数据查询性能,MYSQL,Oralce。系统部署:linux系统命令行,SSH Secure Shell,Tomcat,集群负载均衡,自动化部署。这阶段是现在国内大部分软件开发人员都在的阶段,在这个阶段的人有很多而且时间也是最长的,也是有很多开发人员在这个阶段停滞不前。而这些技术也是阻挡刚毕业的学生进入这个行业的高山,其实也是阻挡很多开发人员继续前进的高山。就是因为这些技术有很多,每个技术深入研究都是很难的,如果仅仅是在应用档次那这些技术还是可触及的。一般在这个阶段6年左右,有想法的开发人员是可以往上面的架构师发展的。所以这个阶段可以说是黄金阶段,企业领导喜欢这个阶段的人因为可以干活,而且有希望发展成更高的技术人才,带领团队开发。
到此阶段的开发人员已经到达了大牛级别,灵活运用各种开发架构,了解各种先进的技术核心,可自己设计出适合本项目的架构。国内软件公司这种阶段的人屈指可数,如果有,基本已经到达技术经理级别。他可以带领团队开发项目,为项目初期策划开发架构,辅导前两阶段开发人员开发项目,解决前两阶段开发人员无法解决的问题。想到此阶段需要后天的努力以及一些天分。当你在第二阶段开发时意识到为什么这样写是高效的,为什么我们需要这样编程,这些架构师怎么写出来的,我是不是也能写出来的时候,你就可以说有向架构设计这个阶段发展的意识了。否则一辈子只能是熟练的程序员。这个阶段的待遇则是你有多大胆工资就有多大产,敢要领导就敢给。
我认为现代高校的学生在经过系统集中的训练后到达第二阶段完全没有问题,但为什么结果却大相径庭,往往我们的学生不行呢。其实也包括大多数的本科生,也是无法毕业后就能去企业工作的。我在企业也面试过不少刚刚从学校毕业的本科生以及专科生,基本上都差不多。好一点的仅仅是基础熟一点,差的就不提了。而且我接触过很多刚刚从计算机专业毕业的学生跟我非常真诚的说过,毕了业之后只要不是干跟计算机相关的工作干什么都行。我听完这句话之后心情很复杂,我能理解他们但又感慨我们的学校教育在3,4年的光景里教出的学生是多么的悲哀。
我们在企业中带新人的时候是这样的,包括我刚在企业干时也是如此。我们在招聘刚从学校毕业的学生时,对他们的水平是非常清楚的,计算机这个行业一个人技术的高低实在太透明了,做一个东西,立判高下。所以在招聘时招的是有一定基础技能的即第一阶段还可以的,能知道第二阶段部分知识的,最重要的是能有快速自学的能力,比较聪明机灵,这是至关重要的,说白了就是着眼于未来。如果看当下除了有工作经验的,刚毕业的学生一个也进不了企业做开发。按照这个标准招进来学生之后,一般企业都有1到3个月试用期,其实这个试用期是至关重要的,可以说真正的考验是这个试用期。因为毕竟短短的十几分钟的面试能知道这个人的现在的技术水平但是很难看出这个孩子的未来发展是否有前景,所以在试用期中我会给他们一些开发任务,是在他们能力范围之内的。在企业中没有学校这样的老师手把手教你怎么做,永远伴随你的老师就是谷歌和百度。当你精通了一门语言后,你会发现语言其实就是那么回事,最重要的是那种编程的思想。
哪种思想呢?其实就是“偷懒”的思想。任何语言上都是如此,我在上课时也在向学生们灌输这种思想,即Write once,Run anywhere。写代码就写一遍,写好后把这个功能封装起来,等到下次再用时直接拿来就用。久而久之,你会有自己的一套代码库,包罗万象,没准什么时候你就能用上。最后干编程的人最宝贵的财富就是他的代码库,那是他多年经验的结晶。这样才能有跳槽的资本,人可以随便跳槽,到哪都比别人开发的既快又好。这才是所有软件公司梦寐以求的人才。其实面向对象语言从根本上就是这么构成的,它的类库,语言库就是这么来的,这才是语言的精髓。