Java程式設計師的墮落

aqee發表於2012-11-02

  我曾在多個場合撰文說過,現在培訓出來的企業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中引入這些表示式只是好玩?只因為它很酷?是因為其它函式式語言中有它?

lambda

  軟體開發產業正在發生變化。它將不再需要更多的程式設計師。它需要的是高階匠師,能夠在軟體出問題時配置並替換相關程式碼。理想情況下,你的團隊中應該有一個Java高手,他能真正理解你們應用中的程式碼,不僅能夠從模組級調整它們,並且能理解每行Java程式碼。這樣的人多少也該知道如何寫SQL外連線,知道如何糾正編譯問題,等等。

  典型的企業經理都希望手下擁有更多的軟體開發人員。多管一些人是向上晉升的一種捷徑。是這麼回事。但如果你足夠聰明,你應該確保你那一堆框架程式設計師中至少有一個是貨真價實的。

  我又收到了一份簡歷,將在明天早上10點面試。這簡歷看起來很眼熟。我只看了它工作過得公司和乾的專案。上面其它的資訊都是沒用的——明天早上10點鐘他自然會現出原形。

  明天的更新。現在是早上10點15。又一個面試結束了。第四個錯誤的回答是,要想把資料傳送到瀏覽器,一個servlet需要把資料放到HTTPSession物件屬性裡。在聽了10分鐘這樣的回答後,你會認為我終止這次面試的行為很粗魯嗎?

  明天的明天的更新。我給這個職位每小時的報酬上增加了5美元。偏偏這第一個面試者就扛著勝利的大旗通過了我的面試。別以為這區區5美元就能叩開棲息著有才能的程式設計師的奇異世界的大門!

原文連結:The Degradation of Java Developers

相關文章