为何找个优秀的Java程序员如此之难?
Java开发者供大于求,找一个优秀的开发者犹如大海捞针。这该赖谁?赖程序员对Java没兴趣吗?还是赖瞎了眼的招聘?抑或是语言本身?不管你同意与否,下面就列举了和这个问题相关的答案。
问题非语言,而是程序员自身
大多程序员都想做与众不同的人,大家都喜欢尝试。但除此之外,更多的程序员想要一个薪水丰厚的工作。最简单的方式就是学习Java——不管自己喜不喜欢写,这就是为什么众多无工作激情的程序员都沦为了Java程序“猿”。
“我不是指所有的Java程序员都是无能之辈”,博客写手Sandy Walsh如是说,他认为太多的程序员得到奖励只是因为盲目的学习使用软件包,而不是真正理解它们,“有太多太多优秀的Java程序员,不幸的是,无能的更多——将优秀的人淹没了。”
同时,Neil Sainsbury是一位Android程序员,他说问题的根源是Java写手们最终的理想是成为架构师。“我经常发现自己读代码的时候更多像在规划解决问题的方法,而不是解决问题。”
非但没有得到快速浏览代码及了解作者意图的能力,而且令上司经常一头雾水,不明白到底程序员们想给他们传递什么。“你得学习更多令你感到折磨的新词,例如Abstract Adapter Factory等等,让自己成为系统的一部分。”
问题的根源不是人,而是语言的设计
Java博客写手MichaelO.Church认为恰恰相反——Java语言的问题就在于根据一小片代码很难判断程序员的优秀与否。半数公司要某个程序员的时候都会看其一些代码小例。谨慎的开发团队在招募的时候往往会让被召人一天写多种代码以资评估。
对于一些工程,错雇会颠覆整个工程甚至整个公司就此陨落。 考虑到这个原因,技术面试在行业领先的公司会很频繁。
众所周知Java就像老太太的裹脚布——又臭又长,甚至写了500行都不能表达程序员的意图,再加上时间紧,招聘者或者程序员都会觉得很为难。
会Java的人太多
提到入门语言,很多程序员都有Java背景。就像找说英语的人很简单,但是找可以写书信语的,就不太简单了。
一个掌握Java基础的Java程序员会显得很有经验,招聘者给他们的一些简单的测试,在StackOverFlow就可以找到答案。 并且,优秀的程序员经常太忙(或太骄傲)而不能置身于复杂或者很长的编码任务。
同时,年轻且缺乏锻炼的招聘者常常在猎“程序员大侠(ninja programmer)”。Cordelia Dillon认为理想的程序员不该是招聘者草率招募的“编程大牛(rock star)coder”,而更应该像一个雕刻家或考古学家,慢工出细活。
如果招聘者真的很想谈论忍者和摇滚明星,或者甚至雕刻家和考古学家,他们应该先了解这些角色和他们招聘的软件开发人的角色的共同点。
公司的雇佣理念
公司很怕雇员的技术会很快过时,因为大多公司不想用另一种难招人的语言从头开始工程。为了保险使用公司自己制定的解决方法起见,公司宁愿招盲目敲Java的程序员。他们来之前是Java程序员身份,走之后仍是这个身份。
这就是为什么Sandy Wals会说问题不在于语言,而是公司的雇佣理念。“如果你打造一个将会有很长的生命周期的产品,你需要知道软件将会依赖开发它的程序员。如果你的应用是用比较冷门或者你有自己的封闭生态环境(就像苹果),那就…..想想都伤心。”