Java 程序員的墮落
我曾在多個場合撰文說過,現在培訓出來的企業Java開發兵團隻知道使用某種框架,但完全不知道這些框架的底層原理。今天早上,在依次對三個職位的應聘者麵試中,我又再次見到了這種情形。
我們的顧問公司收到了一個客戶的招聘需求,要一個經驗豐富並通曉SQL的Java開發人員。我們公司在這個客戶那裏享有非常好的聲譽,於是我們從招聘代理公司要來了一批簡曆,開始搜尋合適的目標。
首先,關於他們的簡曆——每份簡曆都有數頁,詳細的描述了在各個公司幹過的各種工作。每份簡曆上都有一個技術列表,表麵上看這些都是應聘者懂得的技術。下麵這個清單是一個真實的簡曆上記載的各種技術:
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.
相當的讓人印象深刻…——對於那些從來沒有麵試過Java程序員的人來說。我並不想說這些應聘者在撒謊,隻是這些人跟你的談話堅持不到三分鍾就會在 80%的這些技術上露餡。他們可能聽說過或者是試過這些技術或工具,這對於他們來說已經足夠可以把它們列入簡曆了。那剩餘的他們能說清楚的20%是什麼? 框架。基本上他們都會向你解釋如何配置Struts或Spring,甚至如何讓Spring和Hibernate通信。順便說一句,他們全都喜歡 Hibernate,因為它能讓你省去了寫SQL,而他們對SQL查詢語言的知識知之甚少。
每當我看到簡曆上寫滿了這些Struts,Springs,Hibernates等東西,我就會這樣問,“假設,你不允許使用任何框架。你要從數據 庫中的客戶表和訂單表中取出數據,把它們放到Web頁麵上,請詳細完整的解釋一下這整個過程。”對大部分人來說,讓他們寫出一些純SQL將是一種致命請 求…
有個人在簡曆上寫了JQuery。我問她,“你為什麼要用JQuery”…20秒鍾的停頓…“我喜歡它,它很好呀!”這就是所有我能從她那挖掘出的關於JQuery的信息。
兩周前,我參加了一個舊金山JavaOne大會裏的一個技術主題會。Brian Goetz向我展示了一些Lambda 表達式(也就是閉包)的樣例代碼,這個東西將在明年的Java8中出現。這是一個相當高級的語言特征,它所用的Java語法是給有勇氣的人準備的。我在想, “在企業Java世界,誰會去用閉包?10%的程序員?5%?”。Java中引入這些表達式隻是好玩?隻因為它很酷?是因為其它函數式語言中有它?
軟件開發產業正在發生變化。它將不再需要更多的程序員。它需要的是高級匠師,能夠在軟件出問題時配置並替換相關代碼。理想情況下,你的團隊中應該有 一個Java高手,他能真正理解你們應用中的代碼,不僅能夠從模塊級調整它們,並且能理解每行Java代碼。這樣的人多少也該知道如何寫SQL外連接,知 道如何糾正編譯問題,等等。
典型的企業經理都希望手下擁有更多的軟件開發人員。多管一些人是向上晉升的一種捷徑。是這麼回事。但如果你足夠聰明,你應該確保你那一堆框架程序員中至少有一個是貨真價實的。
我又收到了一份簡曆,將在明天早上10點麵試。這簡曆看起來很眼熟。我隻看了它工作過得公司和幹的項目。上麵其它的信息都是沒用的——明天早上10點鍾他自然會現出原形。
明天的更新。現在是早上10點15。又一個麵試結束了。第四個錯誤的回答是,要想把數據傳送到瀏覽器,一個servlet需要把數據放到HTTPSession對象屬性裏。在聽了10分鍾這樣的回答後,你會認為我終止這次麵試的行為很粗魯嗎?
明天的明天的更新。我給這個職位每小時的報酬上增加了5美元。偏偏這第一個麵試者就扛著勝利的大旗通過了我的麵試。別以為這區區5美元就能叩開棲息著有才能的程序員的奇異世界的大門!
最後更新:2017-04-02 15:15:31