by Leonid Mamchenkov
June 4th, 2008
原文地址:http://mamchenkov.net/wordpress/2008/06/04/where-did-all-the-php-programmers-go/
在過去的六個月甚至更長的時間裡,我至少在為三家公司尋找 PHP 開發人員。我和一些程式員聊過,收到了一些反饋,甚至還面試了幾個人,但是我卻從來沒有推薦過任何人。
在我解釋之前,先別抨擊我的要求太高。我並不是在尋找火箭科研人員,也不是找同樣高端的開發人員,我甚至都不打算找一個進階的 PHP 開發人員。只要有足夠的水平來維護 CakePHP 和 WordPress 這兩個項目的人就夠了,更何況,它們還是開源的。
我理解並不是每個人都使用過 CakePHP 和 WordPress 來做開發。我也明白熟悉這些代碼和通讀相關文檔都需要一些時間。更知道不是每個人都熟悉開源軟體開發模型,不是每個人都在團隊裡工作過,所以,熟悉版本控制軟體,文檔編輯工具和 bug 跟蹤等等都不在要求範圍之內。
但是我不明白的是,為什麼那些自稱使用 PHP 和 MySQL ,至少開發過兩個 Web 專案的人,卻不能用紙筆寫出最簡單的代碼?為什麼有數年 PHP 開發和團隊領導經驗的“進階 web 工程師”,面對沒有 Dreamweaver 的開發環境時卻一無是處?那些至少擁有一個電腦科學學士學位的開發人員,卻還在崇尚冒泡排序法?為什麼程式員不再回答技術問題,反而開始向潛在的僱主講述面試經曆?為什麼擁有數年團隊合作經驗的技術人員,在面試時哪怕是被問到最簡單的技術問題,都會茫然不知所措?
如果你想知道上面這些問題的答案,這裡正好有個例子。比如說,有個簡單的問題:“stack (也稱為 FILO ) 和 queue (也稱為 pipe 或者 FIFO) 兩者之間有什麼不同?”答案就已經明顯地隱藏在問題之中了,不是嗎?
這些自稱有好幾年開發工作和項目經驗的應聘者,在面試時通常會遇到一些簡單的程式問題。比如下面這個問題:“使用 PHP 建立一個儲存人物資訊的列表,人物資訊包括姓名、年齡和性別,向其中添加三個樣本。然後按列表中的男性名字的字母序排出一個列表,如果不使用資料庫會有額外加分。”每個應聘者只有一張紙,一支筆,和無限制的答題時間。但是在這六個月裡,我還從沒看過有人能手寫代碼解決這些問題。
我們通過所有的招聘網站、報紙、各地社區和職業介紹所來尋找應聘者,結果卻是無一成功。現在我們只需要三個人,但是在不久的將來空缺將更多。
這就像塞浦路斯 (地中海東部一島國,人口約82萬) 上的人力資源狀況一樣,需求大於供給,但是仍然無濟於事。所以我也希望你們瞭解我的感受。
想討論塞浦路斯這個在科技領域裡又小又不注目的國家,你們還是得等一等吧。去年我去了希臘博主露營會,今年我又去了阿姆斯特丹的下一代網路大會。在這兩個大會上,我和來自歐洲和美國的朋友們都聊過。我也訪問過各地的社區和招聘網站。我的感受是,這不僅僅是和塞浦路斯所面臨的問題一樣。當然,因為其地理原因和科技水平地位,塞浦路斯的情況確實是比其他地區要嚴重一些。
現在,我仍然在花費大量的時間來尋找 PHP 開發人員,但是同時我也在思考這個問題的根源。PHP 看起來是種很流行的語言,但是為會在尋找一個好的 PHP 開發人員時會遇到這樣的問題呢?我得出這樣一種理論,也許稱其為一系列的假設和推測比較好。
PHP 是醜陋的語言
我本人認識一些優秀的開發人員,我也讀過更多優秀開發人員的部落格文章。儘管他們常常使用 PHP ,有些還把 PHP 作為日常開發基礎語言,但是我卻從來不記得他們其中有任何人說過喜歡 PHP 語言。如果在新項目時有開發語言的選擇的可能,他們會選擇 Java,C,Python,Perl,Ruby on Rails,Haskell等等,但就是不會選擇 PHP 。PHP 有它的優勢,但是卻不是一種漂亮和方便的開發語言。
PHP 是面向新手的語言
PHP 之所以如此流行,原因之一就是它是面向新手的語言,人們可以不需要任何編程基礎就開始編寫 PHP 應用程式。 大多數應用供應商會提供 PHP 開發程式給你,而這些程式每個月的啟用費不過是少之又少。你可以在任何文字編輯器裡寫 PHP 程式,所以你也不需要高效能的機器或是昂貴的 IDE 。HPH.net 開發網站上有所有你所需要的開發文檔和執行個體,所以你也不必在學校苦學,更不必和開發人員網站簽訂使用協議。對編程新手來說,所有這些都是讓 PHP 吸引力十足的原因。
PHP 迴避了某些問題
大多數我認識的優秀程式都有一定的 PHP 水平,而那些差勁的程式也學習過一些 PHP。但是對於優秀程式員來說,PHP 既不是他們的所在領域的第一位語言,也不是他們的發展方向。而我所知道的大部分差勁程式員,卻只瞭解 PHP 這一種語言,而且他們並不精通 PHP。所以,對於優秀程式員來說,學習和使用 PHP 不過是一時需求;而對於那些差勁者來說,使用 PHP 卻是永久的習慣。
因為次要原因流行的 PHP
有很原因促成了 PHP 的流行:免費,開源,易於上手,等等。大多數應用供應商都提供可用的 PHP 開發包,而很多程式裡就已經預置了 PHP 。而 PHP 本身最大的特點,比如執行速率,資源要求,開發速度等等,卻和其他很多語言沒有多大差別。PHP 不過是因為一些次要原因而流行起來罷了。
PHP 已經過時
PHP 起源於 Perl 中過時的 web 開發庫,它已經發展和擴充成熟甚至過時,那些用 PHP 編寫的項目也是如此。如果說以前大部分 PHP 項目做的是的最簡單的事情,比如串連註冊表單,訪問者計算和一些模板,那麼,現在這些 PHP 項目的處理能力已經在使用者管理,金融操作,高實用性和平衡配置等需求上到達了瓶頸。
衝突
現在來說說 PHP 所面臨的兩難境地。PHP 應用的複雜程度越來越高,而 PHP 卻因為不夠漂亮而吸引和保留不了優秀的程式員。結果呢?越來越多的應用是那些不夠水平的開發人員寫的,於是,PHP 也越來越難找到合格的開發人員。(你自己的 PHP 項目也變得越來越複雜。)
問題?
我們怎樣才能吸引優秀的開發人員來做 PHP 開發?最大的原因就是不能找到合格的開發人員,這個問題也困擾其他一些開發語言。其他的開發語言能解決這個問題嗎?這個問題真的有解決之道嗎?
出路
和別人一樣,我也沒有解決方案。但是,我卻看好服務應用供應商,比如 Amazon 和 Google 。他們可能會在幾個月甚至幾年後才過時,但是到時又會有更多的服務商加入進來 (Yahoo,微軟,或 IBM ?) 。
我認為提供應用服務的方式應該是這樣的。首先,他們應該把程式員類為兩類。第一類是新手程式員,他們既不知道也沒有多少資源可以調配,他們要通過服務商的提供來使用服務,資料庫,函數庫和編程介面。(當然,優秀程式員也可以使用這些,但是他們另有選擇,而不像新手一樣。) 提供的應用服務應該會方便地解決他們所不瞭解的東西,並且可以隨時隨時協助他們。特別是像 PHP ,已經這樣做了數年了。而優秀程式員大多數都會參與到核心項目和專項開發中,他們則會需要更多的知識和經驗。