“人際關係才是最難的”Bill Coughran(前Google工程部資深副總裁)

暘谷發表於2013-04-02

“工程問題都很簡單。人際關係才是最難的。”

—Bill Coughran,前Google工程部資深副總裁

本文節選自《極客與團隊》一書的前言。

生活中總是充滿了離奇的轉折,就好像我們倆從沒想過會合作寫一本軟體工程的書一樣。

和大多數電腦狂一樣,大學畢業後我們發現自己的興趣和熱情(折騰電腦)居然也是不錯的謀生手段。而和那個時代的大多數黑客一樣,我們的整個20世紀90年代中期都是在幹這些事情,用別人剩下的零件攢機,拿著一大疊軟盤安裝預覽版的Linux,然後學著操縱UNIX機器。我們都是系統管理員出身,然後在網際網路泡沫剛起來的時候跑到小公司裡去當程式設計師。泡沫破裂後,我們開始為那些倖存的矽谷企業(比如Apple)工作,後來又跳槽去了一家創業公司(CollabNet),全心設計開發了一款開源版本控制軟體Subversion。

然而2000年到2005年期間,一些意想不到的事情發生了。儘管我們創造了Subversion,但是我們每天的任務卻漸漸發生了變化。我們不再只是天天坐在那裡寫程式碼,而是開始領導一個開源專案了。這意味著我們要整天掛在聊天室和一堆程式設計師志願者打交道,關注他們都在做些什麼。這還意味著要幾乎完全通過郵件列表來協調各種新特性。我們逐漸發現一個專案成功的關鍵不僅僅是寫出漂亮的程式碼:所有人向著同一個目標一起合作也是同樣重要的。

2005年的時候我們一起建立了Google芝加哥分部,以程式設計師的身份繼續著我們的職業生涯。這時我們已經完全融入開源世界了——不僅僅是Subversion,還有Apache軟體基金會(ASF)。我們把Subversion移植到Google的BigTable架構上,並以Google Code為名釋出了一項開源專案託管的服務(類似於SourceForge)。我們開始參加(後來開始做演講)各種開發者大會,例如OSCON、ApacheCon、PyCon,還有Google I/O。我們發現同時為企業和開源專案工作的經歷讓我們無意之間瞭解到了軟體工程團隊運作的奧祕。一開始我們做的演講都是輕鬆幽默的,大多是批判無用的開發流程(“Subversion最差實踐”),後來則開始轉向探討如何保護團隊不受害群之馬的影響(“開源專案如何應付害群之馬”)。越來越多的聽眾聚集到我們的演講會場,我們稱之為程式設計師的“集體療法”。每個人都對我們談論的問題有著切膚之痛,都想要對大家抱怨一下。

於是,六年來我們做了一大堆反響熱烈的和軟體開發過程中人際關係有關的演講。最後奧萊利公司的編輯瑪麗•特萊斯勒建議我們乾脆把這些演講寫成一本新書。接下來發生的事情就略過不表了。 enter image description here

想要編寫出色的軟體?這本書就是為你寫的

本書的讀者

本書是專門寫給那些想要更上一層樓以及編寫出色軟體的程式設計師看的。CEO、心理學家、管理層\計算機理論學家,還有焊電路板的技師等都不算是我們的目標讀者(雖然這些朋友或許也能讀得津津有味)。在此我們假設本書的讀者具備以下兩個重要條件。

  • 你需要和團隊裡的其他程式設計師合作。無論是為公司企業工作,或是某個開源專案或是學校作業的一員都可以。
  • 你喜歡軟體工程,並且覺得它應該是一件很有成就感、很好玩的事情。如果你只是應付工作混口飯吃的話,那估計你對實現自我價值和獲得職業滿足感不會有什麼興趣。

在討論程式設計師怎麼才能“通力合作”的時候,我們總結出了一些表面上看起來和程式設計師這份工作風馬牛不相及的經驗和準則。我們會在各章裡談到怎麼才能更好地領導一支團隊和企業,怎麼才能和使用者建立起良性的關係等話題。乍看起來這些章好像是專門寫給所謂的“管人的人”或者說“產品經理”看的,但我們可以保證,你的職業生涯到了某個階段的時候一定會有意無意地擔當起這樣的角色。所以先放下疑慮,繼續往下讀吧!這本書裡講到的東西是每個軟體工程師最終都會碰到的。

警告:本書不是技術手冊

首先我們需要澄清一些事情。好學的程式設計師通常都喜歡去讀一些能將某些個特定問題用純數學的形式展現出來的書籍,而通常這樣的問題都存在完美的流程化的答案。

本書並不屬於這種型別。

本書主要關注的是軟體開發中有關人的那個方面,而人是很複雜的。正如在我們自己的演講中說到的那樣,“人基本上就是由一大堆間歇性bug組成的”。這裡論及的問題和答案都是很凌亂的,很難用完美邏輯來解釋。本書讀起來像是論文集,而事實上它的確也就是一本論文集。每一章我們都會討論一系列相關的問題(通常是用案例故事的方式),然後針對整個主題再探討各種應對方案。你可能需要反覆閱讀很多頁,努力把它們聯絡起來,甚至思考數日才能融會貫通!

我們在此還要作一些宣告。正如我們在演講裡開過的玩笑,“這裡的觀點完全是基於我們自己的經驗得出的,完全屬於我們自己。要是你不同意我們的觀點,完全可以去自己做演講啊”。和我們的現場演講一樣,只要和本書主題相關,任何討論都是值得鼓勵的。我們歡迎各種反饋、修正、新觀點,以及反駁:你可以在http://www.benandfitz.com上找到我們。本書的所有內容都來自我們的親身經歷和無數錯誤中得到的教訓。

你還應該注意,我們在例子中提到的都是化名,以保護無辜(或者犯錯)的當事人。

本書的內容都是課本里學不到的

我們認識的軟體工程師絕大多數都花了4~10年的時間在學校裡學習電腦科學和軟體工程。截至本書出版為止,我們不知道有任何一門課程 是真正教你怎麼在團隊和公司裡與人合作交流的。好吧,大多數學生都會在學校裡被要求參與某個專案,但是教一個人怎麼好好地和另一個人協作與把他直接丟到一個迫使他協作的環境裡完全是兩碼事。絕大多數學生最後都不怎麼喜歡這種經驗。

enter image description here

小結

所謂成功的程式設計師不僅僅是追逐最新的語言或是編寫最快的程式碼。職業程式設計師幾乎都是要參與團隊合作的,而且事實上團隊直接影響個人生產力和幸福感的程度超出很多人的想象。

本書的目標很簡單:編寫軟體是集體專案,而且我們認為人的因素對結果的影響不亞於技術因素。大多數人雖然在程式設計技術上耕耘數載,但是在人際關係上卻從來沒有下過功夫,而學習與人合作也是成功路上不可或缺的重要環節。只要你能在軟體工程的“軟技能”上下點功夫,就能達到事半功倍的效果。

作者介紹

Brian W. Fitzpatrick 現在是Google資料解放陣線和透明度工程兩個團隊的負責人,之前他還領導過Google的專案託管團隊以及電子商務夥伴團隊。他幫忙建立了Google芝加哥分部,並且為Google在開放資料上提出了很多想法和建議。

Ben Collins-Sussman 是Subversion的初創成員之一,領導過Google的專案託管團隊,現在是Google電子商務夥伴團隊的負責人。他幫忙建立了Google芝加哥分部,並將Subversion移植到Google的BigTable平臺上。

enter image description here

“這個領域早就需要這樣一本書了。現在終於有了。”
——彼得·諾維格,Google研發主管

“人際關係在工作中的重要性不亞於科學技術,但很多工程師都不太願意投入 太多精力去了解如何與人合作。如果你想要更有效地進行創新,那絕不能 錯過此書。”
——狄恩·卡門,DEKA研發公司創始人

“精彩至極,直指人心!哪怕你不認為自己是極客,它提供的建議也值得一 讀。”
——文頓·瑟夫,Google首席網際網路專家

相關文章