我原先计划EOM与程序员的话题已经结束了。但是,很多同志指出我的程序员话题还应该完整一些,希望我能对程序员所关心的热点、难点、重点的话题发表自己的一些看法。我接受他们的建议,今后,我会在EOM与程序员,EOM与软件设计师两个话题同时发表我的随笔,谢谢大家的关注。
程序设计语言与就业之间关系现在变得非常强烈和敏感是我始料未及的。记得当年自己在学校里学习程序设计语言,自己从无选择程序语言意思,基本上是学校规定学什么,自己就学什么。从没有考虑到这些学习对今后分配工作的影响。这可能是当时的社会环境下,不愁就业的状况造成的。没有了就业的压力,就没有功利的选择,因此,学生可以安心去学一些基础性的课程,可以学习很多经典的程序设计语言,看到语言发展的轨迹,从而打下一个程序语言的良好基础。当然,很多学生连把语言学好的主观意识都没有,只是做学习的奴隶、老师的奴隶、学校的奴隶、甚至是家长的奴隶,他们学习都是为“奴隶主”服务的,不是为自己真正掌握生存技能服务的。这样的学生跟他扯谈好好学习,就是一种时间的浪费,这样的学生只能被放到社会上任由其自生自灭。
而今,社会已经发生翻天覆地的变化。程序员从高高的在上“稀缺人才”,堕落到“IT民工”。期间的变化,令人感慨和无奈。我们不得不承认,我们已经到达了一个市场经济的社会,而是一个竞争的市场经济的社会。面对市场、面对竞争我们必须拿出满足市场需求的商品:我们的编程能力。编程能力有两个方面的含义,一是编程语言,二是编程本身能力。所以,如何选择我们的编程语言是首当其中的一个选择。而编程技术的提高则需要时间的积累和项目的积累。
当我们能够树立市场意思,树立就业意识,我们对程序设计语言的选择就变得相对简单了。就这个问题我想提出自己一些建议供各位参考。
1、 就业方向。
程序员就业范围应该是很大的。有的是软件工厂式的编程工作,有的是项目开发的编程工作,有的是用户单位维护类的开发工作。有的后台编程工作,有的是前端编程工作,有的是编制网站、有的是软件培训、有的是与硬件相关的汇编级编程工作,有的是数据库类编程和管理工作。随着软件专业化分工的加快,分工会越来越细,就业种类也就越来越多了。面对各种就业种类,如何去选择倒是一个仁者见仁智者见智的。只有先定下来就业方向,然后根据就业方向所要求的必须掌握的语言,确定自己要学的语言。
例如,你想去做后台的编程工作,你就可能会选择C语言、数据库等。
如果你想去编写网站,你就会在C#、JAVA、PHP中进行选择。
如果你想去做底层与硬件有关的编程,你就会去学习汇编和专业的单板机语言。
2、 市场状况
当你自己不知如何选择的时候,可以从“唯利是图”角度出发,看看在程序员这个行当中,做什么职业收入最高,你可以通过google的方式,去反复比较,相对较高的职业。然后根据这个职业要求选择所需的编程语言。
当然你可以从“技术至上”的角度出发,你可以通过google的方式,看看当前那种语言最为流行,因为流行的程序往往体现这种语言的未来可持续的发展,当你选择了流行的语言的时候,这就意味着软件市场对这种语言的程序员需求是比较大的,因此,就业的概率相对较高。但是,正是需求增加,在供过于求的情况下,竞争就会加剧,如果你没有更多的能力体现的话,就很难在竞争中胜出。
当然,你也可以从“反向思维”,选择相对比较冷门的职业,由于冷门,竞争就会有所减弱,就业的概率同样会大大增加。
3、 社会资源
就已经工作过的人来说,就业还取决于个人的社会资源,假如你有足够的社会资源,你就可能想到那就到那。这种个别的现象不在我讨论的范围之内。其他的个人的社会资源例如学校、家庭、朋友、朋友的朋友,其他求职中介和求职渠道,都是你求职重要因素。例如,你的朋友正好在一家软件公司,而这家软件公司正好要招聘你这种程序员,往往求职往往会很快成功。因此,将目光放在你的社会资源上,看看他们能够触及的单位,然后,了解这些单位对程序设计语言的要求,再进行语言的准备我感到还是非常有必要的。
4、 个人基础
当然,你选择定了通过各方面考量,最终选择了就业方向,也就确定了你的程序设计语言。这个语言可能你在学校学过的,也可能没有学过。对于你来说都要有一个重新学习的阶段。这个学习阶段和大学里无忧无虑的学习有着本质的不同,这可是关系到你能否被用人单位录用,关系到你今后生存、关系到你今后的职业生涯的规划。因此,你不但要把用人单位所需要的程序设计语言学好,而且要把相关的其他语言学好,相关的其它计算机基础知识学好。这样才能把你的个人编程基础打打扎实。可以说基础是必须的。
另外要有的放矢地,了解用人单位的所用的语言、所开发项目等情况,这样在招聘的时候就会更有把握。
我们可能因为语言而获得就业,我们也可能因为语言失去工作。关键是我们每时每刻要注重语言的发展趋势,注重用人单位的语言发展趋势。语言的学习可以伴随程序员终身。从我的经验来看,要想进入程序员这个行业,主流的语言都是应该了解和掌握的,至于掌握的深度可以根据就业的要求深浅不一。因为,语言的掌握是没有止境的,人们不可能为掌握而掌握花费太多的时间和精力。就目前而言,学习.net,java,学习任何可用于网络应用软件开发都是非常有前途的,因为基于网络、基于互联网、基于手机的软件将未来软件的主流。
现在我们因为语言而生存,未来是否能让语言因为我们而骄傲?