最好的開發(fā)人員是培養(yǎng)出來,而非買來的(轉載)
來自:zdnet.com.cn
???認真考慮一下,得到最有天賦的項目開發(fā)人員的最佳方法是培養(yǎng),而非購買。
在閱讀有關敏捷開發(fā)的材料時,我發(fā)現(xiàn),無論是傳統(tǒng)的軟件開發(fā)技術,還是敏捷方法,都要高度依賴熟練的開發(fā)人員才能確保成功。這一事實讓我觸動。由于許多因素的影響,具有相似經(jīng)歷的開發(fā)人員的表現(xiàn)水平卻相差很大,這點已為人們所接受;所以人們對優(yōu)秀的開發(fā)人員比較關注也就不足為奇了。盡管如此,一個或一小群開發(fā)人員,利用“英雄模式”開發(fā),通過他們的奉獻精神與堅韌毅力,還是完成了許多開發(fā)工作。
很明顯,我們需要優(yōu)秀的開發(fā)人員。但問題是,到哪去找優(yōu)秀的開發(fā)人員呢?
十幾年來我一直參與招聘工作,我可以毫不遲疑地告訴你:有可能找到最優(yōu)秀的開發(fā)人員,但是可能性不大。這不是一件容易的事,即使讀完一千份簡歷,可能也只能找到一兩個真正優(yōu)秀的開發(fā)人員。
認真考慮一下,你會發(fā)現(xiàn),只有通過培養(yǎng),而不是購買,才能得到最優(yōu)秀的開發(fā)人員。
什么造就最優(yōu)秀的開發(fā)人員?
關于是什么造就最優(yōu)秀的開發(fā)人員,大家持不同的看法。不管是敏捷還是傳統(tǒng)的開發(fā)技巧都需要開發(fā)人員擁有稍異于人的東西。但是,無論開發(fā)人員應用哪種技巧,這都歸結為一個詞:思考。
位于Bloom認知技能教育目標分類最底層的是知識。即回想(或識別)數(shù)據(jù)與信息。應用在開發(fā)方面,這就意味著識別C#語法或回想出執(zhí)行循環(huán)的正確語法。
位于認知分類最頂層的是綜合與評估。綜合指能夠合成不同的因素以形成全新的解決方案。而評估是指對觀念、方法或材料做出判斷的能力。在工作過程中,開發(fā)人員需要不斷地應用這些高層次的認知能力。
許多人認為,與描述認知過程的差異相比,將這一觀念表達為思考更為自然。通常,對高層次的觀念(例如如何綜合片段來形成解決方案)所做的思考越多,開發(fā)人員就更優(yōu)秀。
海底撈針
在完全放棄招聘(購買)最優(yōu)秀的開發(fā)人員之前,我們先通過檢驗專業(yè)技能來了解一下招聘過程。我例行公事地對應聘開發(fā)職位的候選人進行了一次口頭測試。由于我面試的大多數(shù)開發(fā)人員需要能夠熟練地操作數(shù)據(jù)庫,我問他們一個簡單的問題:
給你一個帶客戶id域與名稱的客戶表,以及一個帶序號id,客戶id與其它細節(jié)的序號索引表,用什么查詢可返回不帶序號的客戶表?
此問題的答案需要應用外部連接(outer join)知識。(在SQL-87語法中,你可以應用*=,但這一答案正日益少見。)我的非正式統(tǒng)計表明,答對此問題的人數(shù)在10%以下。平均來說,我面試的開發(fā)人員擁有大專學歷,有1到2年的工作經(jīng)驗。但是,據(jù)我的觀察,多年的工作經(jīng)驗與他們是否答對此問題關系不大。
對我而言,無力回答此問題表明開發(fā)人員并不完全了解SQL所要求的以集合為基礎的邏輯方式。我認為這是一個優(yōu)秀開發(fā)人員的基本技能。
另一個問題更有趣,因為它沒有正確答案:
你最喜歡微軟.NET中的哪項功能?
明顯地,你可以在這個問題中插入任何技術。問題的答案可以清楚地告訴你開發(fā)人員的思考方向。如果它告訴我是IntelliSense(幫助你記憶對象與方法界面的Visual Studio功能),我就知道他們主要關心如何將代碼加入編輯器,這并不是優(yōu)秀開發(fā)人員的思考方式。順便說一下,如果他們給出那個答案,他們可獲得“加擊”。(另一擊?即“你還喜歡哪項功能?”)
我在尋找一類表明他們正在思考文本編輯框以外的事情的答案。我在尋找這樣的答案:“因為運行時間類型的信息,可編寫靈活代碼的能力。”這樣的答案表明他們對工作進行了深入思考,這是成為最優(yōu)秀的開發(fā)人員的基本條件。
“你最不喜歡什么?”這個問題同樣富于啟示。“忘記C#中的分號”這樣的答案讓我懷疑候選開發(fā)人員是否達到正確的思考層次。“無力有效應用垃圾收集器”這樣的答案表明他們既不了解平臺的需要,也缺乏處理復雜問題的經(jīng)驗。
問題“你最喜歡/不喜歡什么?”的回答比SQL問題的回答要好得多,但仍然并不樂觀。參加面試的開發(fā)人員,超過70%回答的是瑣碎的問題,其它10%左右的答案表明他們要么編碼的水平不高,要么缺乏高層次的思考。
最終的結果表明,要找到最優(yōu)秀的開發(fā)人員幾乎是不可能的事情。實際上,我也可能只招聘到2到3個可稱之為最佳開發(fā)人員的人。
培養(yǎng)優(yōu)秀的開發(fā)人員
找到有潛質(zhì),即好奇心強、個性好學的開發(fā)人員要更容易一些。這些開發(fā)人員確實希望在自己與他人的生活中發(fā)揮重要的作用。他們可能并不了解關系數(shù)據(jù)庫,但他們樂于學習。他們帶來學習的熱情,讓周圍的人充滿活力。
在許多機構,這種熱情卻以服從的名義受到壓制。“我們一樣那樣做”的心態(tài)打消了任何改善狀況的嘗試。因此,開發(fā)人員常常感到困惑。因為組織一方面聲明希望組建世界級的開發(fā)團隊(每個組織都希望擁有這樣的團隊);另一方面,他們又不愿意做出變革。
但是,我們可以采取行動,以保證新開發(fā)人員的干勁與期望不會受到壓制。以下是我就培養(yǎng)優(yōu)秀開發(fā)人員提出的一些建議:
指導:指定一個導師來幫助開發(fā)人員。這個人必須是一個資深開發(fā)人員,開發(fā)權威或關心團隊和進程改善、樂于助人的構架師。這個人不應是開發(fā)人員的直接領導或經(jīng)理(如果可能的話)。指導交談應該以開發(fā)人員,而不是組織的需求為中心。
代碼審查:代碼審查是提高開發(fā)能力的有效手段。但很多組織卻極少這樣做。另外,人們很少把它當作是學習機會,而把它當作貶低開發(fā)人員的時機。請進行代碼審查,把它當作培訓與教育,而非壓制的手段。
漸進體驗:向開發(fā)人員提供增量分配來鼓勵他們不斷成長。由于我們無法控制將來的項目,這可能是最難以執(zhí)行的方法。但是,提供盡可能多的漸進分配結構將會取得長期回報。
學習挑戰(zhàn):除了漸進分配以外,還要找出其它方式激勵開發(fā)人員學習盡可能多的知識,即使這些知識不能立即起作用。例如,如果你有一家網(wǎng)絡開發(fā)商店,鼓勵開發(fā)人員學習智能客戶(Smart Client)技術,以幫助開發(fā)人員養(yǎng)成學習習慣。
內(nèi)部培養(yǎng)
盡管你想為下一個項目找到優(yōu)秀的開發(fā)人員,但優(yōu)秀的開發(fā)人員并不容易找到。項目的成功主要還是依靠現(xiàn)在團隊里的開發(fā)人員。他們越優(yōu)秀,你成功的機會就越大。找到技術熟練的可靠人才來完成你的需求肯定會很困難。自己培養(yǎng)開發(fā)人員,是獲得你所需要的開發(fā)人員唯一現(xiàn)實的方法。
posted on 2006-10-15 12:18 Zero Lee 閱讀(322) 評論(0) 編輯 收藏 引用 所屬分類: CC++ Programming