Linus Trovalds談Linux核心開發管理風格
譯者注:本文號稱是Linux它爹Linus Trovalds親筆寫的關於專案管理的文章。Linus Trovalds在業界素以脾氣火爆,語出驚人而聞名,誰要是讓他不爽,他就直接伸出中指來F**k(參見),本文也秉承了他這一貫的風格。儘管沒有中國人推崇的謙虛的美德,但是Linus在軟體領域方面的很多觀點是相當有價值和值得分享的,這也是翻譯本文的最初動機之一。
在翻譯本文的時候,譯者誠惶誠恐,生怕理解不到或者誤解了大神的觀點。限於能力,譯者不敢保證翻譯一定到位,因此還請各位讀者不吝賜教。
關於文中的粗口部分,原文是”d*ckheads“,出於和諧的因素,譯者就直接用大家喜聞樂見的”SB”來代替了。其實英文直譯的意思要比SB重口味得多,感興趣的讀者可以自己查字典。以下為譯文。
這篇短文是描述了一種“理想的”(當然也可以說是“自以為是的”,各種看法因人而異)Linux核心開發管理風格。這篇文章從某種意義上來說就和編碼規範文件差不多,有了這篇文件,就可以避免總是重複地回答同樣(或者類似)的相關問題。
管理風格其實是因人而異的,而且很難像編碼風格一樣,單純用數量來衡量。因此這篇文件無法保證一定具有實際的參考價值。關於這一點,我們有言在先。你可以根據自己的情況來決定是否接受。
順便提一下,我們所說的”核心經理“,明確地指(負責核心開發的)技術經理,而不是傳統意義上公司內部負責行政的經理。如果你平時的工作涉及到採購或者是制定公司預算,那你基本上就不屬於我們討論的核心經理的範疇。如果是這樣的話,本文就不適合你。
首先,我建議讀者去買《成功人士的七個好習慣》這本書,然後千萬不要讀這本書,而是燒掉它。這種行為可以表明一種對所謂成功學的蔑視態度。
(*)本文絕對不會用來回答各種提問,而是要向那些提問者們闡述一個非常痛苦而且明顯的事實:你們問的問題我們根本就不知道怎麼回答。
廢話少說,我們開始:
第一章:決策
我們都覺得:經理的主要職責是做決策,而且做決策這件事情是很重要的。決策越大就愈發棘手,就需要職位更高的決策者來決定。這種說法看上去真的是又明顯又有道理,但事實並非真的如此。
讓我們來做一個叫做”不要做決策“的遊戲吧。尤其是,當你被人要求”在A和B中選出一個”的時候,如果你是技術經理,對不起,那你的麻煩就來了。你手下管的人其實比你更明白各種事情的細節,如果他們都需要讓你來做一個選擇,那你算是徹底失敗了。很明顯,你的下屬比你更有資格去做正確的決策。
(由同樣的邏輯我們可以知道:作為技術經理,如果你手下管的人對技術細節的瞭解程度還不如你,那你又敗了,不管是什麼原因。這種局面只能說明:你不適合做技術經理的工作,相反你的下屬反而比你更適合這個職位)
所以說,技術經理要“避免做決策”,至少那種又大又難的決策不要輕易做。那種規模較小,影響不大的小決策倒是可以做,並且可以讓你看上去稱職,所以技術經理要做的事情就是把又大又難的決策拆分成很多無關緊要的小事情,小事情是沒有人會真拿它當回事兒的。
這還可以幫助我們認清“大決策”和“小決定”的區別,其主要區別就在於:你是否在事後有機會去糾正錯誤。如果你要把大事化小,那你一定要確保自己總是有機會去看看是不是做錯了(或者會不會做錯),如果錯了,你可以浪子回頭,避免損失。這樣一來,突然你就可以做不同的決定了,正確的決定和錯誤的決定,就像靈活而善變的企業管理人員一樣。
人們還真把這個當成是“領導才能”的象徵(放屁)
其實“避免做大決策“的要義在於“不要做你無法挽回的事情”。不要把自己逼到沒有退路。要記住,狗急了能跳牆,兔子急了會咬人,技術經理被逼到走頭無路的時候,只會掛掉。
”可挽回“的原則相當清晰明瞭,就算再荒唐再沒大腦,也不會讓技術經理去承擔主要財務責任。因為花出去的錢就是潑出去的水,無法挽回,唯一能夠挽回的是”技術性決策“,技術性決策的挽回是很簡單的:把你手下的弟兄罵到半死,然後再跟所有人說抱歉,然後把去年搞砸的工作從頭再來一遍。這樣一來,你去年做的決策就不再是什麼大決策了,因為這個決策失敗的後果是可以挽回的。
不過有些人可能沒法採納上述的方法,理由有如下兩點:
-承認自己是白痴很難,能這麼做更難。我們都要面子,公開場合說誰誰誰錯了這種事情多數時候是不那麼容易的。
-要讓別人告訴你,你去年做的工作完全就沒有意義,這很畢竟不容易做到。對那些級別很低微的程式設計師來說也是如此。如果所謂的“重做“就是把他們原來的工作不分青紅皁白地刪掉從零開始,這樣你很可能就會不可挽回地失去他們的信任。要記住:”不可挽回“是我們要竭盡全力避免的,一開始就是如此,我們要避免讓我們的決策成為一個”大決策”。
幸運的是,上面所說的兩個理由可以想辦法緩解,我們不如一開始就放開心態,大大方方地承認自己其實沒有什麼好辦法,告訴大家現在所做的決定全都是非常初步的,很有可能出錯。你要一直做好改變的準備,並且讓大家也都知道你是這麼想的。這樣就會在你犯錯的時候,讓自己更加勇於面對和承認自己的愚蠢決定。
如果你心態開放,那你犯錯的時候,人們也只是輕描淡寫地說:“瞧,他又錯了“。
這種主動放低姿態的方式還會讓大家在工作的時候養成三思而後行的好習慣,不管這個工作是不是真的需要那麼謹慎。畢竟,如果大家在不是”非常確認這是個好主意“的情況下,你就不應該承諾說一定讓大家的程式碼納入到最終產品中。這樣你就確保了他們在木已成舟之前充分地進行思考。
記住:你的屬下最好比你知道更多的技術細節,並且他們通常覺得自己是萬能的。作為核心技術經理,你要做的就是不要去幹涉這種自負的情緒,而是要對他們的能力和作為做更深刻的思考。
另外一種“避免做決策”的好辦法就是賣萌,技術經理可以可憐兮兮地問:“我們能不能以兩個方面都兼顧呢?”。相信我,這招絕對好使。如果兩種方案之間並無明顯的優劣之分,你這麼一問,你的下屬們就會自己去解決問題。最後,分別支援兩種方案的雙方會各自放棄原來堅持的方案,並且都會非常不爽(但是能達成妥協性的一致)
也許你覺得這樣的做法很失敗,但是實際的情況是,很可能兩種方案都存在問題,人們之所以無法做出決定,是因為他們都是錯的。你的做法,實際上是中止了雙輸的局面,雖然會有人不爽,但也是長痛不如短痛,況且,你還成功地避免讓自己做一個差勁的選擇,如果你不這麼做,很可能你就搞砸了。
第二章:人
我們身邊的人基本上以白痴居多,作為技術經理,就意味著你必須要和這些白痴打交道,這麼說還不太確切,確切地說,是他們必須要和你折騰。
技術上犯了錯誤,我們還可以挽回,但是人如果發神經,那真是不好辦。所以你必須要學會處理這些人的神經病,當然,也要學會處理你自己發神經的情況。
然而,為了讓你成為一個稱職的核心技術經理,你一定要記住:“留得青山在,不怕沒柴燒”,對你手下的核心開發人員要學會寬容。很顯然,得罪人容易道歉難。因此”得罪”這個詞語很立刻地就被歸結到“不可挽回”的範疇中去了,這個在我們第一章所說的內容裡是嚴格被禁止的。
那麼,為了不得罪人,你應該遵守下面兩條規矩:
(1)不要用“SB”這種詞語問候他人(至少在公開場合不要這麼做)
(2)如果你違反了第一條,那麼要學會怎麼給別人道歉
第一點所說的內容是很不容易做到的,因為罵人的辦法實在太多了,就算你不用”SB”,還是能找到很多其他同樣效果的詞語,甚至有的時候,你出口成髒,自己都沒有意識,而且往往伴隨著極端的狂妄和自負。
你越自以為是(讓我們面對事實吧,人人都想隨意罵人SB,並且多數時候你都認為自己是對的),你就越不可能在事後跟人道歉
為了解決這個問題,你只有兩個選擇:
-真心誠意給人道歉
-把愛灑向人間,讓每一個人都沐浴在你愛的陽光裡,這樣就沒有人會感受到你的敵意。變得極富創意的幽默,讓大家天天笑口常開。
其實後面那種超級好人的做法是不存在的。因為一看就是裝出來的,沒有人會信任這種人。
(*)保羅.西蒙斯唱過《Fifty Ways to Lose Your Lover》,說實在話,”告訴開發者他們是SB的100萬種方法“這種主題好像和原來那首歌完全不搭調,但是我想西蒙斯也可能會考慮要不要唱一下。
第3章:人II – 如何做好人
如果周圍的人都是白痴,很遺憾,你自己也是白痴的一員。在我們躺在自己創造的”周圍的人都不如我“的意淫中(說實話,很少有人承認自己水平一般或者是不行)的時候,我們也該考慮一下承認現實,我們並不敢說自己是獨一無二地優秀,身邊總是有些人要稍微優秀一些的,而我們自己很可能真的就是個白痴。
“愚者怒,智者用“
作為一個核心的維護者,面對比你更聰明的人,確保你自己是智者。盡情地和他們套近乎吧,因為他們幫你幹活,讓你的工作更輕鬆。尤其是,他們甚至還要幫你去做決策,這個行業不就是這麼玩兒的麼。
所以,當你發現有些人比你聰明的時候,你就”袖手旁觀“就對了。你的管理責任多數時候就變成了兩種不同的問話:”聽上去不錯,整吧“,或者”聽上去不錯,不過那個xxx你覺得怎麼樣?”。後面那個問法很管用,如果你想了解xxx是怎麼回事,或者你想委婉地向一個比你更聰明的人表達不同意見的時候,你就可以這麼做。不論是哪種情況,你都是最後的贏家。
還有一個事情必須指出,人非聖賢,不可能面面俱到。你想要鞭策你的下屬努力向前,但是要認清楚,他們在你要求的方面也許沒那麼優秀,也許是做什麼錯什麼。關於這個問題,好的一面是,人類一般都會自覺地回到他們擅長的領域中,所以說不是你自己破釜沉舟,他們就真的能跟你一起破釜沉舟。所以不要逼得太狠了。
第4章:學會處理批評
事情可能會出岔子,而且肯定有人會為此遭受批評。沒準這個人就是你。
實際上,被批對任何人來說都是不愉快的,尤其是大家都認為“又不都是我的錯”的時候。這樣就造就了我們面對批評的最好心態:“替別人承擔責任”。如果你是幫別人承擔批評,那一種榮譽感就油然而生,真正該被批評的那個人也因為沒有被罵而很高興,那個因為你們的工作失誤而損失了36個G的愛情動作片的倒黴客戶,雖然非常不爽,但是至少也會對團隊敢做敢當的風格表示一下讚許。
接下來,就是找到那個真正惹了麻煩的開發者(如果你真的能找到他的話),私下裡跟他說:你搞砸了。這樣做的目的一方面是他以後不會將錯就錯地抵賴說是你惹的事兒,另一方面是你要讓他知道他欠你個人情。接下來,也是很重要的就是,他應該做點兒什麼去彌補錯誤了。實事求是吧,是你搞砸的,又不是我,總不會讓我去彌補吧。
承擔批評和責備也是你作為技術經理最重要的職能之一。你的兄弟會因為你敢做敢當而信任你,打心眼兒裡佩服你,因為你是那個真正敢把“我們搞砸了”這句話說出口的人。如果你一直是這樣的人,那麼我相信你現在已經對這個問題處理得如魚得水了。
第5章:該回避的就回避
有一樣東西是比直接罵人SB更可恨的,就是假裝仁義道德地用關心的口吻罵人SB(”某某某,我這是為你好,我當你們是我的孩子一樣,我這是鍛鍊你……”,耳熟不? —— 譯者注)。罵人SB事後還可以道歉,第二種的話真是連道歉的餘地都沒有了。採用第二種做法,基本上就是自絕於人民,就算你有什麼觀點是對的,人家也都不再聽你的了。
當然,我們每個人都認為自己比別人更優秀,這都可以理解,但是你要是裝13,那就完全是另外一回事了。你或許認為自己很有節操,或者在智力上超群,比你周圍的人都優秀,但是不要做得太明顯,除非你想刻意激怒別人。
同樣的道理,不要刻意強調禮貌,也不要敏感得不得了。禮貌這種東西要麼就會讓人得寸進尺,要麼就暴露不出問題,同樣,人們也會說:“在網際網路上面,你敏感個頭啊,誰會理你?”。如果你要想表達什麼觀點,那就老老實實地講給人家聽,因此除此之外,沒有別的辦法能讓人明確你到底是什麼意思了。
當然,在表達觀點的時候講一點幽默,無論是從人際關係上還是從效果上,都會有所幫助。把觀點誇張到極致,甚至是到荒唐的程度,反而可以降低別人對你觀點的敵意,哪怕人家一開始認為你簡直就是白痴。同樣,這種做法還有助於讓人與人之間解開心理防備,我們多多少少都有一些這樣的問題,不是嗎。
(*) 提示:有的時候,去那些和你的工作不直接相關的社交媒體上罵一罵口水戰,是很有利於你轉移對工作的負面情緒的。在這些地方飈一些語言尖銳,冷嘲熱諷的帖子出去,幾乎每次都可以讓你的情緒得到發洩,然後你的心態就會恢復平靜一陣子。但是注意,別去那些人家認識你的地方,以免被人發現。
第6章:為什麼選我?
作為技術經理,你又要幫別人承擔責任和過錯,又要在眾人面前顯示出自己的弱點,那麼你一定要問的一個問題就是:我是做了什麼孽?為什麼一開始要幹這個?
首先,也許你家裡處於青春期狂躁的少女(或者少男,這裡我可不想對男女生青春期誰更狂躁做討論,更不想涉及性別歧視的問題)狂敲你屋子的門對你大吵大鬧,你是不是會感覺到強烈的“責任感”,並且伴隨一定的“成就感”? 其實不要在意你是不是真的跟得上所有人的節奏,也不要在意你能不能趕上其他人的速度。反正在大家的眼裡,你就是負責人。
只要能把事情搞定,你就牛了!
相關文章
- Linus 談軟體開發管理經驗
- Linus Torvalds談軟體開發管理經驗
- C 語言程式碼風格之 Linux 核心程式碼風格Linux
- 談談JavaScript編碼風格JavaScript
- Mandriva Linux開發核心人員訪談(轉)Linux
- 深入學習Linux系統,Linux核心程式設計風格(轉)Linux程式設計
- 編碼風格和開發習慣
- 關於C語言結構體賦值(linux核心風格)C語言結構體賦值Linux
- Linux C 的風格Linux
- Linus Torvalds 宣佈新版Linux系統核心釋出Linux
- Linus Torvalds談軟體版權、微核心和一公斤筆記本筆記
- Linus Torvalds:Rust For Linux 或將被合併到 Linux 5.20 核心中RustLinux
- Linus Torvalds:開發Linux不是為了認真,就是為了好玩!Linux
- .Net Core 開發電商後端API 吃透RESTful風格後端APIREST
- 你聽說過“風格指南驅動開發”嗎?
- linux核心模組開發基礎Linux
- linux核心管理初步Linux
- LINUX 核心程式管理Linux
- 硬核觀察 #715 Linus 在 Macbook 上釋出了 Linux 核心 5.19MacLinux
- Linus 定義 LinuxLinux
- Linux核心筆記004 - 從記憶體管理開始,認識Linux核心Linux筆記記憶體
- 《碼處高效:Java開發手冊》之程式碼風格Java
- 建立 SysV 風格的 linux daemon 程式Linux
- Linux 核心開發組成員合照Linux
- 淺談Python專案開發&管理Python
- 軟體架構風格——閉環架構風格(過程風格)架構
- 從遊戲文化輸出淺談國產遊戲風格遊戲
- 基於ThinkPHP開發的清新風格部落格系統帶WAP手機版PHP
- 用Rust重寫Linux核心?Linus 創始人持觀望態度RustLinux
- 公開“Google開發者文件風格指南”Go
- 軟體架構風格——倉庫風格架構
- Linus Torvalds釋出支援暢玩遊戲的Linux 5.16核心候選版本遊戲Linux
- 管理者的四種不同授權風格
- PgSQL · 核心開發 · 如何管理你的 PostgreSQL 外掛SQL
- Flask開發團隊Pocoo的內部編碼風格指南Flask
- TP5.015+Layui2開發的簡潔風格個人部落格系統UI
- jQuery手風琴風格收縮展開導航選單jQuery
- Linux 核心 2021:Linus Torvalds 領跑 sourcetree 提交量 | commit 數驟降LinuxMIT