Java程序員的墮落
我曾在多個(gè)場合撰文說過,現(xiàn)在培訓(xùn)出來的企業(yè)Java開發(fā)兵團(tuán)只知道使用某種框架,但完全不知道這些框架的底層原理。今天早上,在依次對(duì)三個(gè)職位的應(yīng)聘者面試中,我又再次見到了這種情形。
我們的顧問公司收到了一個(gè)客戶的招聘需求,要一個(gè)經(jīng)驗(yàn)豐富并通曉SQL的Java開發(fā)人員。我們公司在這個(gè)客戶那里享有非常好的聲譽(yù),于是我們從招聘代理公司要來了一批簡歷,開始搜尋合適的目標(biāo)。
首先,關(guān)于他們的簡歷——每份簡歷都有數(shù)頁,詳細(xì)的描述了在各個(gè)公司干過的各種工作。每份簡歷上都有一個(gè)技術(shù)列表,表面上看這些都是應(yīng)聘者懂得的技術(shù)。下面這個(gè)清單是一個(gè)真實(shí)的簡歷上記載的各種技術(shù):
Core Java, J2EE, JSP, JDBC, Servlets, AJAX, XML, HTML, XSLT, Web Services, CSS, JavaScript, SQL, Oracle 10g, MySQL 5.0., JMS,Eclipse, Adobe Flex Builder 3.x,UML, JDBC, SVN, JUnit, VSS, Jira, HTML, DHTML, CSS, AJAX, JavaScript, XML, MXML, Action Script, Servlet, JSP, JSTL, Hibernate 3.x, Spring 2.x, IBatis, SOAP, UDDI, WSDL, Apache Axis, Web logic Server 8.x, Apache Tomcat 5.0, Struts Framework, MVC, ANT, Maven. |
相當(dāng)?shù)淖屓擞∠笊羁?hellip;——對(duì)于那些從來沒有面試過Java程序員的人來說。我并不想說這些應(yīng)聘者在撒謊,只是這些人跟你的談話堅(jiān)持不到三分鐘就會(huì)在80%的這些技術(shù)上露餡。他們可能聽說過或者是試過這些技術(shù)或工具,這對(duì)于他們來說已經(jīng)足夠可以把它們列入簡歷了。那剩余的他們能說清楚的20%是什么?框架?;旧纤麄兌紩?huì)向你解釋如何配置Struts或Spring,甚至如何讓Spring和Hibernate通信。順便說一句,他們?nèi)枷矚gHibernate,因?yàn)樗茏屇闶∪チ藢慡QL,而他們對(duì)SQL查詢語言的知識(shí)知之甚少。
每當(dāng)我看到簡歷上寫滿了這些Struts,Springs,Hibernates等東西,我就會(huì)這樣問,“假設(shè),你不允許使用任何框架。你要從數(shù)據(jù)庫中的客戶表和訂單表中取出數(shù)據(jù),把它們放到Web頁面上,請(qǐng)?jiān)敿?xì)完整的解釋一下這整個(gè)過程。”對(duì)大部分人來說,讓他們寫出一些純SQL將是一種致命請(qǐng)求…
有個(gè)人在簡歷上寫了JQuery。我問她,“你為什么要用JQuery”…20秒鐘的停頓…“我喜歡它,它很好呀!”這就是所有我能從她那挖掘出的關(guān)于JQuery的信息。
兩周前,我參加了一個(gè)舊金山JavaOne大會(huì)里的一個(gè)技術(shù)主題會(huì)。Brian Goetz向我展示了一些Lambda表達(dá)式(也就是閉包)的樣例代碼,這個(gè)東西將在明年的Java8中出現(xiàn)。這是一個(gè)相當(dāng)高級(jí)的語言特征,它所用的Java語法是給有勇氣的人準(zhǔn)備的。我在想,“在企業(yè)Java世界,誰會(huì)去用閉包?10%的程序員?5%?”。Java中引入這些表達(dá)式只是好玩?只因?yàn)樗芸幔渴且驗(yàn)槠渌瘮?shù)式語言中有它?
軟件開發(fā)產(chǎn)業(yè)正在發(fā)生變化。它將不再需要更多的程序員。它需要的是高級(jí)匠師,能夠在軟件出問題時(shí)配置并替換相關(guān)代碼。理想情況下,你的團(tuán)隊(duì)中應(yīng)該有一個(gè)Java高手,他能真正理解你們應(yīng)用中的代碼,不僅能夠從模塊級(jí)調(diào)整它們,并且能理解每行Java代碼。這樣的人多少也該知道如何寫SQL外連接,知道如何糾正編譯問題,等等。
典型的企業(yè)經(jīng)理都希望手下?lián)碛懈嗟能浖_發(fā)人員。多管一些人是向上晉升的一種捷徑。是這么回事。但如果你足夠聰明,你應(yīng)該確保你那一堆框架程序員中至少有一個(gè)是貨真價(jià)實(shí)的。
我又收到了一份簡歷,將在明天早上10點(diǎn)面試。這簡歷看起來很眼熟。我只看了它工作過得公司和干的項(xiàng)目。上面其它的信息都是沒用的——明天早上10點(diǎn)鐘他自然會(huì)現(xiàn)出原形。
明天的更新?,F(xiàn)在是早上10點(diǎn)15。又一個(gè)面試結(jié)束了。第四個(gè)錯(cuò)誤的回答是,要想把數(shù)據(jù)傳送到瀏覽器,一個(gè)servlet需要把數(shù)據(jù)放到HTTPSession對(duì)象屬性里。在聽了10分鐘這樣的回答后,你會(huì)認(rèn)為我終止這次面試的行為很粗魯嗎?
明天的明天的更新。我給這個(gè)職位每小時(shí)的報(bào)酬上增加了5美元。偏偏這第一個(gè)面試者就扛著勝利的大旗通過了我的面試。別以為這區(qū)區(qū)5美元就能叩開棲息著有才能的程序員的奇異世界的大門!
原文鏈接:http://www.aqee.net/the-degradation-of-java-developers/