Linus Torvalds談軟體開發管理經驗
導讀:沒有人比Linus Torvalds更瞭解軟體開發專案管理中的酸甜苦辣了。作為Linux的建立者,Torvalds在過去二十年指導了數以千計的開發者共同改進開源作業系統核心。此前,CSDN研發頻道發表過一篇文章《Linus Torvalds的軟體開發管理經驗》,文中提到了Torvalds在軟體管理方面的寶貴經驗。現對此文進行全文翻譯及整理,供開發者學習與參考。
文章內容如下:
Linus Torvalds說,有兩件事,世界上大都數人,無論是獨立開發者還是公司級別的開發團隊,都有普遍的錯誤認知。
其一:“大都數人認為可以把事情丟給其他人,讓他們幫忙。在你公開你的想法後,你得假設自己一個人要幹完全部的活,然後你在網上徵求人們的意見,你應該詢問自己該幹什麼,而不是他們該幹什麼。或許開始他們會偶爾幫助你解決一些實際問題,但是,必須從一開始就告訴自己這份工作只有你一個人負責,並且做好完成它的準備。”
如果你一開始就認為全世界的人們都會聯合起來為你的專案工作,一起創造一個更美好的世界,那麼你可能不會走得很遠。
其二:“人們往往認為自己寫的程式碼是最重要的東西,而事實不是這樣。即使你編寫了100%的程式碼;即使你是世界上最好的程式設計師並且從來不需要任何幫助。然而最重要的東西也不是你寫的程式碼,而是程式碼的使用者。程式碼本身不重要;只有當用戶真正用到它的時候專案才是有用的。之所以提到這一點是因為它不只是一個程式設計師的問題,我見過一些公司把追求完美的程式當做事情的全部。”
Torvalds就第二個問題上繼續展開言論,他說:“這就是為什麼Linux核心團隊無法容忍這種‘脫離本質’的東西。比如,為了“修復”某個問題而打破原來的使用者體驗絕對是錯誤的觀點;千萬不要這麼幹。如果你破壞了使用者體驗,或許你覺得是在修復問題,但你就犯了剛才說到的第二個錯誤——你以為程式碼質量比使用者重要,大錯特錯。”
Torvalds最後總結道:“有太多的專案將程式碼質量置於使用者之上,結果兩邊都不討好,而且還不肯承認錯誤,因為他們覺得是在“修復”問題,並且一點都沒錯。”
關於開發工具的重要性
關於SCM(Software Configuration Management軟體配置管理系統 )工具,比如,以Git版本控制系統的問題為例,他回答說:“我不認為工具是最重要的。”
“現在重要的是你的專案是否有一個好的工作流程,工具當然能夠啟到幫助的作用,”他說,“但是,大多數的專案其實並不是必須要使用這些工具。許多專案其實並沒有那麼多改動,多到必須要在他們整個工作流程中使用這些工具;如果你在每個release中只有幾百個補丁,你可以隨便怎麼維護他們,完全手動也不是問題。”
當然,Linux就絕對不是同一個層次的了,“對於核心,我們每個release都有成千上萬個補丁,而且基本上每三個月就有一個release,所以對我們來說SCM工具就尤其重要了。”他說,“但我仍然不認為這所有大的錯誤是因為最初幾年開發的目標和補丁,這是一個小得多的專案,而且直到很多年後是因為缺乏管理工具才顯現出來。”
他還說,“一些工具積極鼓勵工作流程,我認為CVS(Concurrent Versions System併發版本控制系統)”例如已經影響了很多專案,使他們有了一個概念“承諾團體”,
Torvalds繼續說,“我個人認為tar-balls和補丁相比他來說要好得多,因為他們使開發者都是“平等”的。而且你不會遇到這種情況:一些開發者有委員許可權而其他的人都是二級許可權。有時全部人都只有二等許可權要比有人有特權要好得多。”(注:Torvalds很熟悉CVS很而且非常討厭有很多年時間了。就如他在Google Talk 2007所說的,“我討厭帶著許可證的CVS”。)Torvalds還說:“比工具更重要的是人,是維護者和他們的思想。”
如何把大家都保持在正軌上
現在的人們是怎麼一起工作的呢?我向Torvalds提問了關於正在實施中的LKML(Linux Kernel Mailing List ,用來將討論話題轉發給各位開發者。)他回答說:“我認為過去在LKML上發生的討論比現在的多。LKML中的signal-to-noise和純資訊量表明大多數開發者沒有時間仔細地去讀LKML——最多他們會掃一下標題欄。所以,現在我主張大多數開發者都在獨自完成工作,然後他們會在一個大的開發者範圍中傳送email告之對方是如何完成的”。
“並不是說LKML不重要,而是說LKML已經成為了獨立開發者的公共紐帶。所以事情最後會變成這樣:你其實只有4-5個人一同參與一個討論,但是LKML會轉發並且讓其他人有機會能夠參加進來,而不是讓他成為一個封閉的討論。”
接下來說說它怎麼工作的,“大多數人其實不閱讀LKML,他們經常讓它自動存檔,只對某幾個關鍵詞或關鍵人物參與的話題感興趣。”它其實有點類似於某種存檔機制。人們可以在日後查閱它,而且很多Bug可以通過Google找到LKML中以前報道的記錄。如果某人提出了一個問題,它可能只是個別硬體問題,但如果Google後發現在LKML中已經被提交過幾次了,那這個問題原因會有點不確定,但必然不是個案。”
“所以我認為LKML非常重要,但我們不是通過它來保持人們走在正軌上的。所有的開發者都非常主動積極,而且他們都有非常好的意見和想法(核心成員之所以是核心成員因為他們的自我定位)。LKML很重要,因為這是公開討論的,即使實際中參與某些特定問題的只有特定的一小組人。在開源專案中事情就是和其他不一樣。”Torvalds總結道。
關於信任,託付和保持清醒
曾經Linux是一個個人專案。現在他有成千上萬的提交者和貢獻者。接下來我問道:“現在有多少工作你是交付給其他人做的?對於如何分配才能保持人們思路清晰和遵循工作流程你有什麼想法?”
“如果我從中學到了什麼的話,那就是你必須學會放手,不要試圖控制別人和他們的程式碼。如果你不信任別人,而一定要監視著他們的話,還是早點放棄這個負責人位置吧。”
他說:“是的,我經常會跟別人糾結一些細節,但不是因為我不信任別人或不願分配給他們許可權。而是因為一些小錯誤最後會鬧到我頭上。要麼是個Bug(而且都是一些平時忽視的小錯誤),要麼是一些把我弄煩了的工作流程問題(就像今天早些時候我向一個分負責人抱怨開發者的名字顯示不正常)。”
Torvalds還說,“你只能偶爾關注一下細節,而不是老是站在開發者後面監視他、檢查他寫的每一句程式碼。我相信分負責人做的事99%都是沒問題的,然後偶爾我會大聲抱怨一些東西。”比如說GNOME桌面系統正在怎麼改進,或者根本沒有改進。
以上就是全部內容了。這就是Torvalds怎麼做的,如果你覺得你比他好,先問問自己:有創造過一個在大多數超級計算機、股票交易和類似於Google這樣的網站上執行的世界級的作業系統嗎?如果你的答案是沒有,如果我是你,我會重新讀一遍他的答案並且好好想想自己是怎麼維護專案的。
轉自:http://sd.csdn.net/a/20111011/305595.html
文章來源: