在公眾的眼裡,一般都知道程式員這個職業,但很少想過程式員的層級問題,主要原因是對於程式員缺乏一種有效度量手段。確實,能力是一種感性的評價,難以用理性的數字化來予以度量。但當你需要招聘程式員時,度配量序員的層級又是一個最基本的要求。所以有的人就採用工作年限度量,工作年限長,就認為水平越高;有的採用項目經曆,認為經過幾個大型項目,能力就很高。但其實我們都知道,百歲老人的象棋水平未必就高,天天吹竽的人也有可能是南郭先生。而在我看來,程式員的能力雖能難以數字化的度量,但依然可以按照程式員的一些表現形式來將程式員的境界予以劃分。
一、狗窩式程式員
狗窩式程式員學會了一門或多門流行的語言,遇到客戶需求便可以開始寫程式,寫程式的過程中基本上沒什麼設計、思想什麼的。基本做法是見招拆招,使用者怎麼提,他便怎麼改,掛在口頭的說法是“以使用者功能為導向,只要滿足使用者需求就可以了”、言必稱資料庫。沒有設計或者是偽設計,如寫出各種資料庫表文檔什麼的。這種狗窩式程式員的特定是速度快,感覺不行了,就推倒重來,一輩子玩著“茴”的多種寫法。顯然,這種程式員比較適合寫自娛自樂的“老闆“牌軟體(除了自己和神才弄得懂)。判斷此種程式員的基本標籤是:
1、以使用者功能為導向,滿足使用者需求就可以了。
1、言必稱資料庫,談到項目就是談資料庫,談到設計就是畫資料庫表。
2、資料搬運工和介面幫運工。善於將IDE上的控制項拖到應用程式Form上,在予以關聯某個資料庫表。
二、花架子程式員
花架子程式員比狗窩式程式員多熟悉一些工具、架構什麼的,擅長於使用別人的架構,並且往架構中填空。人生的信條是“沒必要自己造輪子,使用別人的輪子就可以了”,花架子程式員的基本標籤是:
1、使用別人的輪子,沒必要自己造輪子。
2、使用成熟的架構,天天往別人的架構中填空。老師出題,我填空,還美其名曰:老師為我所用。
3、開始鑽研語言特定的特性,從掌握某種奇巧淫技中獲得滿足。
三、技術型程式員
技術性程式員開始學會領會物件導向、設計模式、代碼重構等軟體工程思想,並能成功將各種特定用法(如pimp)、設計模式等運用到代碼中,程式碼為的穩定性有了長足的進步,並注意代碼的可讀性、擴充性。技術性程式員基本具備對複雜問題的掌控能力,在正式編碼前,會進行一定的概要設計,畫一些UML圖,對應用軟體的洞察力有了相應的提高,這種程式員才能稱之為真正的程式員,他們可以完成一個模組、一個中介軟體等。但注意技術性程式員依然著重於學習能力,是特定思想的運用者,而創造能力不強,依然是心中有招的程式員境界。技術性程式員的基本標籤是:
1、經常化UML圖。
2、代碼中可看到各種設計模式,如觀察者模式、訪問者模式、原廠模式等。
四、思想型程式員
思想型程式員突破了技術型程式員的瓶頸,已做到心中無招的境界,他們具備深刻的洞察力,專註於創造,善於將其它領域的解決方案運用到電腦領域,是所謂道法自然。如從建築設計中擷取靈感並運行到電腦領域中的設計模式作者們,如將合約契約理念運用到電腦領域的契約式編程作者,如將國王、城主、騎士等等級觀念運用帶電腦領域的C2架構作者,以及web設計的作者等。思想型程式員經常將自己對社會的觀察、個人的價值觀體現在軟體架構中,如推崇中央集權制的人比較喜歡集中式架構,而推崇民主制的人更喜歡分布式架構等。思想型程式員的基本標籤是:
1、從其他領域中吸取營養,運用在軟體架構和設計中,創造出某種技術,供其他程式員學習。
2、在電腦領域的某個方面處於行業巔峰。