Linus Torvalds談軟體開發管理經驗

發表於2011-10-11

注:本文轉載自 CSDN

導讀:沒有人比Linus Torvalds更瞭解軟體開發專案管理中的酸甜苦辣了。作為Linux的建立者,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這樣的網站上執行的世界級的作業系統嗎?如果你的答案是沒有,如果我是你,我會重新讀一遍他的答案並且好好想想自己是怎麼維護專案的。

 

相關文章