Java开发工程师就业指导
学了Java语言,很多人就会想:我能成为Java开发工程师吗?要达到Java开发工程师的要求,我需要掌握哪些知识?一个很简单的方法是,留心各种招聘广告,从中就可以总结出Java开发工程师需要掌握哪些知识,从而学习时做到心中有数、有的放矢。当然,不同公司招聘Java开发工程师时,要求会有一些差别。我们仔细研究了不同招聘单位对Java开发工程师的招聘要求,既有知名大企业,也有中小型软件公司;有国外IT企业,也有国内IT企业。下面,我们来总结一下不同公司招聘Java开发工程师的一些共性要求。
1. 个人基本素质要求
(1) 英语良好
点评:“良好”实际上是一种比较模糊的说法,CET4考多少分才算良好?恐怕不同公司的要求是不一样的。像我们就业指导里面提到的严飞、刘捷同学,作为他们的老师,客观地说,他们的英语算不上出色,但每个人都拿到了多个招聘单位(包括外企)的Offer。现在很多同学的英语还是不错的,使用英文软件、进行基本的日常交流也不成问题,因此这个通常不用担心。
谏言:不用将主要的精力花在英语上,除非你想考研、出国等。
(2) 2年以上开发经验
点评:很多同学被这条要求吓住了,立即觉得没有希望,甚至连去试一下的勇气都没有了。不可否认,有些企业会拒收你的简历,关键的问题还是简历的制作和递交技巧问题。大家想想,像严飞、刘捷同学在校期间做的一些项目,包括课程设计(可惜很多同学都是糊弄过去的,参见“锤炼自己的专业学习之路”的“5、尽可能多做实战性项目”)、给企业做的软件、帮老师做的课题、寒暑假在企业的实习,算不算开发经验?当然是开发经验!其实,招聘企业真正看重的,是你在校期间的实习、实践经历以及做过的软件项目。
谏言:大学期间,趁早、尽可能地积累自己的软件开发经验吧!
(3) 工作积极主动,有责任心、事业心
点评:几乎每一个企业,都很看重这一点!没有哪个用人单位喜欢工作散漫、无责任心的员工。热情、忠诚和责任,每一个用人单位都喜欢。
谏言:老老实实做人、勤勤恳恳做事!
(4) 良好的团队合作精神
点评:不可否认,这是个推崇个性、张扬个性的时代。但是,鲜明的个性并不是与“团队合作”相排斥!在软件开发领域,不推崇个人英雄主义,尤其注重团队合作精神,有些招聘单位甚至在招聘要求上写上“团队合作良好者优先”!唯我为尊、难以与别人共事,使得一些学生失去了用人单位青睐的机会。举个很简单的例子,几乎每个学校都有关于软件开发方面的课程设计,一般是3-4个人组成一个小组。大家想想看,每个小组成员是否真正地很好地合作,为了共同的开发目标而努力?恐怕很多都没有!因此,在日常的学习、生活中慢慢培养自己的团队合作精神,保持个性的同时,听取、吸纳别人的正确意见,非常重要。
谏言:让团队合作精神滲透到自己的每个毛孔中!
(5) 良好的编码习惯
点评:有些公司干脆写上“编码习惯良好者优先”。编码习惯不好是很多学生的通病。例如:定义一个类public class a,从类名上谁看了都一头雾水。如果是这样,public class GetServerData,别人只是从类名上就对这个类的作用略知一二。因此,请不要再使用没有意义的名字来命名类名,哪怕是你平时的一个小小练习!还有,你的代码写了注释吗?定义常量时你使用的是大写字母吗?每个类的代码尽可能控制在100行以内,你注意了吗?诸如此类。
谏言:不要对自己说,我到时自然会注意的。尽早开始养成良好的编码习惯吧,别让坏习惯成自然!
(6) 优秀的文档协作及管理能力
点评:很多招聘单位直接在招聘要求里面写上“能够编写各类技术文档”。但是,很多同学喜欢编写代码,却不愿意写项目文档。在我们提供的几个毕业生写的就业感想里面,几乎每个人都提到了文档的重要性。“养成编写文档的习惯,不但要写而且要认真的写规范的写,这在今后实际的工作中是很重要的(这一点我也是在实习工作中体会到的)。在求职面试时,如果能拿出自己书写的项目文档,更具有说服力,也能为自己的求职加上一定的砝码”。
谏言:训练自己编写各种文档的能力!
2. 需要具备的理论或实践基础
(1) 能够对系统进行需求分析、概要设计、详细设计工作
点评:任何软件生存的目的就是为了解决实际中的问题。因此,Java开发工程师需要能够与用户进行良好的沟通,并对用户的需求进行分析、总结、提炼,完成应用程序的体系架构设计,并具体进行功能模块、E-R模型、人机界面、代码设计、输入输出等方面进行详细设计。
谏言:重视《软件工程》、《管理信息系统》等相关课程或书籍的学习!
(2) 对面向对象的分析、设计、开发有深入理解
点评:在软件开发过程中,面向对象的分析、设计方法与传统的结构化开发方法有什么差异?面向对象的分析、设计方法不是从功能上,或从处理问题的的算法上来考虑,而是从软件系统的组成上来进行分解。利用类、对象作为基本构造单元,以更接近人类思维的方式来构建现实问题的解决模型,从而使设计出的软件尽可能直观地描述现实世界,构造出模块化、可重用的、维护性良好的软件系统。当然,对Java基本概念的理解,也有助于理解面向对象的分析与设计方法,例如什么是继承?什么是多态性?Java是如何体现多态性的?抽象类、接口的区别和应用?
要深入理解面向对象,请认真学习《管理信息系统》、《信息系统分析与设计》、《Java程序设计》等相关课程或书籍,我们将能够从中获得很多启示。
谏言:重视信息系统开发的理论知识。实际的理论课程与具体的Java程序设计课程相结合,用实践来体会理论,容易获得较深入的学习效果。
(3) 熟悉数据库的物理设计与逻辑设计
点评:现实中的数据大部分都是通过数据库来处理的。如何将现实中的纷繁复杂的数据映像到数据库中,并保持数据的完整性、一致性和准确性,就是一个需要这种考虑的问题。例如,我们是否清楚数据库设计规范的理论依据—三范式?我们是否知道数据处理的ACID检查?我们是否知道适当的反规范化设计?我们是否清楚设计良好的数据结构?
谏言:请重视《数据库概论》、《数据库原理》、《数据结构》等相关课程或书籍的学习!请熟悉Rational Rose、PowerDesigner等系统分析工具!
(4) 熟悉Eclipse
点评:工欲善其事,必先利其器。不同公司对开发工具的要求可能不同,但Java开发领域的常用工具应该熟练掌握,例如Eclipse、NetBeans、MyEclipse等。你应该相信,很多开发工具其实大同小异。熟悉一种后,很容易转到另外一种。
谏言:精通一种,熟悉其他。
(5) 熟悉设计模式
点评:如果你希望成为一名职业的Java开发工程师,至少应当知道一些流行的解决问题的方法。这些方法已被大量经验丰富的程序员在实践中证明非常有效,这就是所谓的设计模式。
在解决现实世界的各种问题的时候,许多有经验的软件开发人员发现有很多问题是重复出现的(或者只是某一个问题的变体而已,本质相同),难道需要针对每一个问题提出一个解决方法吗?当然不是。对于这些重复出现的问题,就可以提炼出一个独立于编程语言的、用来解决常见问题的策略。于是设计模式这一术语诞生了。
我们总是说“要站在巨人的肩膀上”。设计模式就可以不用为重复出现的问题重复设计解决方案。我们可以复用已经公认的设计,避免重蹈前人的覆辙。由于是复用已经公认的设计,大家都知晓,因此与别人也可以更好地交流。设计模式是面向对象程序设计的热门话题之一,越来越多的Java开发人员认识到设计模式的重要性。Java领域有很多设计模式,例如单例(Sington)模式、观察者(Observer)模式、外观(Facade)模式等等。
谏言:学习有经验的开发人员是如何解决现实中的问题,并应用到你自己的项目上去是提高水平的良好方法。多看看设计模式相关的书籍,并在实践中践行!
3. 需要熟练掌握的开发技能
(1) 精通Java编程语言。
(2) 熟悉JSP、JDBC、EJB、Servlet、JavaBean等技术。
(3) 熟悉Oracle、DB2、SQL Server、MySQL等数据库。
(4) 掌握Spring、Struts、Hibernate等框架体系。
(5) 熟悉XML、JavaScript、CSS等WEB技术,了解AJAX。
(6) 熟悉主流的J2EE应用服务器,例如WebSphere、Apache、Resin、Tomcat等。
点评:如果你对上述内容都很“精通”,那你绝对是高手中的“高手”!但是,人的时间、精力毕竟有限,一口也吃不了个胖子。高手们也不过是时间这个催化剂慢慢“发酵”的产品。所谓的专家,也不过是在某个领域有较深入的研究而已。如果每一个方面都花费大力气去学习,且不说时间有限、精力有限,结果可能是自己都没有信心学下去了。很多知识,还是需要工作以后慢慢精进。因此,对于广大学生朋友来说,应该在校期间重点突破,获得毕业时进入企业的敲门砖,而不是全面开花。例如,Java本身要花大力气掌握,这是以“不变应万变”。数据库则可重点掌握Oracle,其他的熟悉一下;至于一些框架,熟悉一下就可以了。
谏言:重基础、深入点,拓宽面。
4. 总结
下面我们概括一下Java开发工程师的综合素质:
² 具备参与系统分析、设计、构架的能力。
² 熟悉开发流程和规范。
² 具备一定的领域知识和项目经验。
² 对技术有较为深入细致的了解。
² 可以写出较高质量的程序代码。
那么,学好Java可以从事哪些方面的工作?这个就比较宽泛了:各种信息管理系统、电子商务系统、电子政务系统、大型门户网站系统、ERP软件…
2008年,受全球金融危机的影响,中国的毕业生也遭遇了前所未有的就业“寒冬”!但是,2008年的十二大紧缺专业名单中,计算机方面的专业榜上有名。这说明了对软件开发人才的需求量仍然是非常大的! 从国际经验来看,软件人才高、中、初级之比一般为1∶4∶7,呈金字塔形状。也就是说,除了缺乏高层次的系统分析师、项目管理师、系统架构设计师以外,更需要大量基础性软件开发人员,例如软件设计师、网络工程师、信息系统管理工程师等等。
因此,Java开发工程师,其就业前景是非常不错的!