天天看點

《告别失控:軟體開發團隊管理必讀》一一第1章 程式員為何難以管理

告别失控:軟體開發團隊管理必讀

程式設計作為一種嚴肅的職業已經存在60多年了。在美國,從事程式設計工作的程式員數以百萬計,而全球這個數字更大。這些數字還不包括人數衆多的學生與程式設計愛好者,他們非常認真地編寫程式,但并不以此為謀生之業。

盡管曆史悠久,從業人數衆多,但“軟體工程師”卻因難于管理而聞名。出現這種現象有以下幾點原因。

第一,作為一種嚴肅的職業,程式設計不同于電氣、土木工程等相關的工程職業。從 1968 年[1]開始,人們将程式設計這門藝術稱作軟體工程(software engineering)。但是,與建立土木、電子工程這樣的實踐相比,從零開始編寫新程式更像寫小說。新程式的起始往往類似于一張白紙,而傳統工程項目則通常是對各種元件庫,按照嚴格的合格性準則進行組裝。本書将使用程式設計(programming)一詞來稱呼“軟體工程”,因為相對于嚴格定義的工程實踐來說,程式設計更多的是一門技藝。

從零開始編寫新程式更像寫小說。

第二,任何人都可以成為程式員。不需要接受正式教育,也沒有必需的證書标準或考試[2]。隻需要一份程式員的工作即可。[3]

第三,受前兩個原因的部分影響,盡管人們做過多種嘗試來規範軟體工程的流程(如cmmi [4] 1~5級),但這些嘗試的影響其實很小。多年來,由大量程式員繼續開發的許多軟體并不遵循這樣的規範架構。而且即便遵循時,也隻是對流程有所改進,卻無法将程式設計轉變為一個純粹的工程實踐。此外,規範化的架構隻解決了編寫軟體的流程問題,但沒有涉及程式員管理的問題。遵循流程對管理程式員的問題隻能起到最低限度的幫助。程式設計經理們仍然隻能依靠自己的方法工具來對下屬程式員進行管理。

盡管有很多書籍、文章和網站涉及軟體工程與軟體開發流程管理,但關于如何有效管理程式員的例子卻十分稀少。任何一個棒球隊經理都會告訴你,棒球隊技術細節的管理比球員個性的管理要容易得多,程式員的管理也是類似的情況。

從計算機出現的早期開始,程式員管理就是一個極具挑戰的難題,如下面這段由第二次世界大戰(wwii)期間成為世界上第一批程式員的grace hopper寫于1961年的文字所述:

程式員是一個古怪的群體……他們崛起的速度很快,很快就形成了獨立的職業,并且過早地感染了不願做出改變的抗性。我曾經聽說有些程式員因為客戶不願意修改自己的商業系統而斥責客戶,而有時走進我的辦公室說“但我一直是這麼做的”的也正是這些人。出于這個原因,我在辦公室懸挂了一個逆時針走動的時鐘[5]。

管理程式員的第一步是更好地了解他們。是什麼吸引着數以百萬計的人投身于“計算機程式設計藝術”呢?答案有時非常簡單:它是一份收入優渥而且可以整天待在辦公室裡上班的工作。然而很多程式員會告訴你,現實中的答案通常沒有這麼簡單。給出那種簡單回答的人,通常最終沒有堅持程式員這個職業。

事實上,隻有特定類型的人才能成為程式員,而隻有非常特别的一類人才能成為傑出的程式員。要想知道怎麼才能成為傑出的程式員,首先需要了解程式員都做什麼。

繼續閱讀