開發人員完全指南

From The Joel on Software Translation Project

Jump to: navigation, search

原文:http://www.joelonsoftware.com/articles/FieldGuidetoDevelopers.html

作者:周思博 (Joel Spolsky)

Wednesday, September 06, 2006


你可以在所有對的地方打廣告、提供美妙的實習計畫,也能面試任何的人。但令人遺憾的是:如果優秀的程式員不想替你工作,他們就絕不會前來響應你的號召。所以,這個章節將引領你來瞭解開發者:他們關心甚麼?他們在工作場合裡,喜歡甚麼和不喜歡甚麼?以及,如何(讓你的公司)成為頂尖開發者的頭號選擇。(譯註:如此是謂「開發人員實務指南」)

Contents

私人辦公室

Ggth09.jpg

去年,我在耶魯參與一個計算機科學研討會,講者之一是位矽谷老兵(曾創立或領導一票聲譽卓著且有創投資金挹注的新公司)拿出了Peopleware這本書。

他說:「你一定要讀這本書,它可是經營軟體公司的聖經。這是市面上談軟體公司經營最重要的一本書。」

我必須同意:Peopleware的確是一本劃時代巨著。而這本書中最重要、也最惹人爭議的議題是:如果你希望程式員變得較有生產力,必須他們許多安靜的空間,也許(就是)私人辦公室。作者DeMarco和Lister,圍繞在這個主題上不斷地打轉。

演說結束後,我朝著講者走去,問道:「我認同你對Peopleware的觀點,告訴我,你所有的新創公司都有為開發者準備私人辦公室嗎?」

「當然沒有」 「創投基金的人絕不會幹這種事的」他說道。

噢。

「但這也許是書中最重要的一個概念」我說道。

「沒錯,但你必須有所取捨(pick one's battles=有選擇地戰鬥,指沒有勝算)。對於創投者來說,私人辦公室就像是在浪費錢。」

矽谷有一種強烈的文化,要你把許多程式員塞進一個開放的大空間內,毫不理會已有明顯證據證明,證明私人辦公室可以讓生產力大幅提昇(我在這兒一再重複說明過)。雖然很難讓大家真的理解(我沒這樣想),由於程式員有點喜歡社交,即使這意味著低落的生產力。所以這實在是很難。(原譯:我真的無法說服大眾,我不並認為我可以,因為程式員似乎有群聚的傾向,即使這意味著低落的生產力,所以這是一個艱難的戰鬥。)

我甚至聽過有程式員這麼說:「沒錯,我們都在小隔間內工作,但公司裡每個人都如此,連執行長也是啊!」

「公司的執行長?他真的也在小隔間裡工作?」

「好吧,他是一個小隔間,但既然你提了,事實上是有一間會議室讓他處理他所有重要的會議...」

嗯,矽谷有種很常見的現象:執行長會作秀,假裝他跟大家一樣在小隔間內工作,不過通常會弄一間會議室給他自己用(他會辯稱「只有在討論非公開事務時才會用」,但當你經過那間會議室時,有一半的機會,會發現執行長獨自一人在內,把穿著Cole Haan名鞋的腳搭在會議桌,跟他的高爾夫球球友講電話。)

Ggth10.jpg

無論如何,我不想再重談這些議題:關於私人辦公室為何能讓軟體開發者更有生產力、為什麼戴耳機聽音樂壓抑環境噪音已被證明會降低程式員的工作品質,也不想談讓開發人員擁有私人辦公室為什麼不會貴多少之類的事。那些事早已談過了。今天,我主要談論招募、還有私人辦公室對於招募的影響。

無論你怎麼看待生產力和平等的工作空間,有兩件事是無法辯駁的:

  1. 私人辦公室意味著較高的地位
  2. 小隔間和其他共用空間都可能讓人尷尬

由這兩個事實,可知程式員會比較想要可以提供他們私人辦公室的工作,尤其是辦公室有一扇可關的門、一扇窗以及良好的視野。

不過遺憾的是,這些能讓招募更容易的事有部份超出你的權限。假若公司依賴創投資金,可能連執行長跟創始人都沒有自己的辦公室。大部分公司要每5到10年才會搬遷或重新安排辦公室空間,較小的新創公司可能無法負擔私人辦公室。因此我的經驗是:除了最開明的公司之外,任一家公司都會找盡理由,幾乎是不可能讓開發者獲得私人辦公室。不過即使是那些最開明的公司,大約每十年就要大風吹一次。而搬遷地點和工作場所,卻是由辦公室主任的秘書跟大建設公司的新進合夥人所組成的委員會決定。這些新進合夥人(常會相信開放空間意味開明公司之類的建築學校等童話),而整個決定幾乎完全沒有參考開發者或開發團隊的意見。

這有一些難以啟齒,而且我會持續為良好的爭論而戰,但同時要知道私人辦公室並非空中樓閣。即使在全世界租金最高的紐約市,大體上我們想是能為全職程式員提供。毫無疑問地,它也讓人們更樂意在Fog Creek工作,所以假若你們還想持續抵抗,隨你吧,我會將它視為一種競爭優勢。

工作現場

Ggth11.jpg

對於私人辦公室,工作現場有更多可談論的地方。當一個應徵者來到你的公司面試時,他們會到處看看人們在哪邊工作,並想像他們自己在那邊工作。假如辦公室空間是令人愉快的、明亮的、在一個好的地區、一切事物都是嶄新明淨的,他們會覺得快樂;假若辦公室空間狹小、地毯破爛、有些牆壁沒被油漆、且掛著划船隊的圖片和「團隊合作」四個大字,他們會覺得自己像是呆伯特(Dilbert)。

許多搞技術的人明顯地對他們辦公室的使用情形漠不關心,事實上,即使人們有時能額外從好的辦公室嚐到甜頭,也有可能對他們自己的辦公室特定的缺點視而不見,因為他們對此已經習以為常。

從求職者方面設身處地、坦誠地思考:

  1. 他們對我們座落的地方有何看法?像是布法羅(Buffalo)聽起來如何,與奧斯汀(Austin)比起來又如何?人們真的想搬到底特律嗎?如果你身在布法羅或底特律,能否盡量在九月裡進行大部份的面試嗎(譯:因為布法羅平常太冷,底特律則是太熱)?
  2. 當他們進入辦公室時,體驗到何種感覺?看到了甚麼?是一個乾淨且讓人興奮的地方嗎?中庭門廊有生意盎然的棕櫚樹跟噴泉;或者是讓人感覺像是貧民窟裡的一個公立牙齒診所,旁邊還散佈著枯黃盆栽與過期雜誌?
  3. 工作區看起來如何?所有的東西都是嶄新明亮的嗎?或者你依然有張泛黃的TEAM BANANA標語,是在曾經有個東西叫做報表紙和點矩陣印表機的那個年代,所列印出來的?
  4. 桌面看起來如何?程式員有多個大平面螢幕或單個傳統螢幕?椅子是Aerons出廠的抑或是Staples跳樓大拍賣時的特賣貨?

讓我暫時離題討論一下Herman Miller製作的著名Aeron辦公椅:他們售價大約為$900,比OfficeDepot或Staples的便宜辦公椅要貴上$800。

他們比便宜的椅子更舒適,假若你得到正確的尺寸且適當的加以調整,大部分的人可以坐上一整天而不覺得不舒服。椅背跟座位編織成網狀結構以便空氣順暢流通,讓你不會有悶濕的疑慮,特別是搭配較新的腰部支撐模組,人體工學可說是一級棒。

他們可用的壽命比便宜的椅子長,陪我們度過這六年以來的每張Aeron椅子,都幾乎跟新的一樣,我懷疑有任何人可以分辨出我們在2000年跟三個月前買的椅子之間的不同。他們的使用年限可輕易的超過十年,而說便宜的椅子則在買了幾個月後就會開始解體,則一點都不誇張,你將需要至少四把100美元的椅子才抵得上一把Aeron的壽命。

Ggth12.jpg

所以結果是以十年來計Aeron實際上只多花費$500,或者說每年多$50美元,每個程式員每週一塊錢。

一卷好的廁用衛生紙大約值一美元,所以可看成你的每一個程式員每週用掉一卷。

所以將他們升級到Aeron椅子的花費,幾乎等同於你在他們的衛生紙上的支出,而且如果你在預算委員會上提出任何衛生紙的事,我保證你一定會被嚴正的警告不要再瞎混,還有許多重要的事要討論。

不幸的是,Aeron椅子總是和奢侈浪費劃上等號,而顯得聲名狼籍,特別是對新成立的公司來說。他莫明奇妙成為在網路繁榮時期浪費創投基金的一種象徵,這真是種恥辱,因為當你考量到可用的年限時,其實他是不昂貴的;尤其是當你考量你一天有八個小時要坐在上面,即使是模組系列中的頂尖貨:配有腰部支撐跟那該死的尾翼,也可說是超便宜的,因為實際上你根本是買到到。

玩具

(譯註:指能讓開發者快樂的東西)

相同的邏輯可以套用在其他的開發者設備上,用膝蓋想也可推論出,沒有甚麼理由不讓你的開發者擁有搭配至少兩個大(20吋)液晶螢幕(或一個30吋的)的頂級電腦,並讓他們可自由地從Amazon.com購買任何想要的技術性書籍。這明顯的可增進產能,但我們這裡所討論更重要的是:這些是招募員工的關鍵,特別是這世上還有許多公司將程式員視為可替換性的齒輪或打字員,真的,他們會質疑為何你需要如此大的螢幕,難道15吋的傳統螢幕不夠用嗎?然後再拿他們年輕時的情況來比較。

社交生活

並非所有的軟體開發者都異於常人,當然,我知道這些日子以來大眾認為開發者就跟典型獨行駭客(譯註: 亞斯伯格症候群)一樣,幾乎沒有和別人進行互動,但這並非事實,即使獨行駭客也會關心工作區的社交活動,像是:

Ggth13.jpg
  • 程式員在組織中是怎麼被看待的?

他們是明星還是打字員?公司經理是由工程師或曾任程式員的人組成的嗎?開發者能乘坐頭等艙去參與研討會嗎?(我不在乎這是否像是在浪費錢,明星就該坐頭等艙,要逐漸習慣這樣的思維!)當他們飛抵機場準備來參與面試時,將會有輛轎車來接送呢?還是得自己想辦法到達公司?基於相同的背景條件下,開發者傾向於選擇將他們當成明星的組織。假若你們公司的執行長是個壞脾氣的銷售員,他不能理解為何這些嬌貴的開發人員會持續的爭取類似腕墊、大螢幕跟舒適椅子等等之類的東西,他們以為自己是誰呀?那麼你的公司或許需要好好的調整態度,如果你不尊重他們,你將永遠無法獲得優秀的開發人員。

  • 他們的同事是哪些人?

程式員在面試的那天還會密切注意他們所遇見的任何人。他們友善嗎?更重要的是:他們都聰明機靈嗎?我曾經在Bellcore暑期實習過(這是貝爾實驗室的子公司),我遇到的每個人都一遍又一遍地告訴我相同的事:能遇到這兒的人們是他們在Bellcore工作時最美好的事。

這告訴我們,不要讓無法駕馭、怪脾氣的開發人員參與任何面試活動,相反的,記得找具有親和的、社交能力強、個性溫和等特質的人一起參與。隨時提醒自己,當你的求職者們回到家並且要決定到哪兒上班時,若是他在你的公司遇到的每個人都是陰沈憂鬱地,則他們絕不會有正面印象。

另外,原本Fog Creek公司預想的徵人規則(這概念是從微軟偷來的)為「聰明、可將事情做好」,但就在我們正式讓公司營運之前,我們理解到還應該加上第三個規則:「不要討人厭的怪喀(譯註:jerk,粗魯、不顧別人感受、讓人厭惡的人)」。回想起來,想在微軟獲得一份工作,不是怪喀向來不是個必要條件;雖然我很肯定他們會客套地說:能對他人友善是件重要的事,但真實情況為:他們絕不會只因某人惹人嫌就開除掉他,事實上,當個怪喀有時還會是個進入高階管理階層的先備條件。從管理角度來看這似乎是無害的,但從招募的角度來看卻是有害的:有人願意在一家容忍怪喀的公司上班呢?

Ggth14.jpg
  • 獨立和自律

回顧1999年,當我離開Juno、建立Fog Creek軟體公司之前,人力資源處找我進行標準離職面談,我滔滔不絕地將公司管理所犯的錯,一股腦地告訴這些萍水相逢的人力處職員。我很清楚這對我來說絕無好處,只會造成傷害,但我還是通通說了出來;抱怨的重點還是在Juno「打了就跑」(譯註:可以參考這一篇)的管理風格。經理人通常都不會出現,讓大家自己把工作做好,但他們偶爾會插手非常細微的細節,無來由地堅持某些事該以他們的方式來完成,隨後將過度管理的注意力移到其他的工作上,每件事插手的時間都很短,看不到衍生出的滑稽後果。舉例來說,我記得曾經有一段特別令人反感難熬的日子,在這兩三天內,所有主管(從我的直屬長官一直到執行長)都跑來告訴我該怎麼填寫Juno註冊詢問表上的日期欄位。他們從未受過使用者介面設計的訓練,也不願花費時間與我討論、瞭解為何我剛好會遇到這種特殊情況,不過這些並不重要:主管就是不願意降貴紆尊來面對這個問題,甚至不願花時間傾聽我的抱怨。

基本上,若你打算雇用聰明的人,你需要讓他們在工作上發揮所長,經理人歡迎提出建議,但他們必須相當小心別讓「建議」變成了「命令」,因為對於任何一個技術上的議題,在裡頭打滾過的工程師都會比經理還要清楚,特別是我剛剛提到的:假若你雇用的是高素質的人。

開發人員會希望雇主因看重他們的能力而被雇用、以專家的身份來看待、並且允許在他們的專門領域內有決策權。

Ggth15.jpg
  • 不搞政治

現實世界裡,有超過兩人聚集的地方就會有政治,這是再自然不過的事,而這兒我所謂的「不搞政治」是指「沒有惡性的政治干擾」。程式員們有個非黑即白的評價法:程式碼要嘛能動、要嘛不能。爭論某個錯誤是否存在是沒有意義的,因為你可以測試並找出問題所在。編程的世界是非常地有秩序,這也是那麼多人進入編程世界的首要理由,因為他們寧願把時間耗在一個秩序嚴謹的地方,在這個地方只要是的就能通行無阻。

你必須建立這樣的環境以吸引程式員,當一個程式員抱怨到這是「政治干擾」,他們實際上是抱怨發生了某種「個人考量優於技術考量」的情況。最讓人不爽的狀況就是:開發人員被告知要使用某特定程式語言,理由不是它是目前能用的最佳選擇,而僅因為老闆喜歡它。最讓人惱羞的事就是:不直接依據工作績效,而是依據交際手腕來決定晉升。最最可惡的事就是:一個開發者被強迫去做低技術層次的工作,僅因為某個在組織內階層較高或是關係較好的人堅持要這麼做。

當你以技術上的理由贏得了本來應該會因為政治因素而輸掉的爭議,這比任何事都更讓人覺得滿足。當我開始在微軟工作時,當時有個已經步入歧途的大型專案MacroMan,其主要目標在創造一種圖形化巨集編程語言。這種程式語言會讓真正的程式員十分挫折,因為圖形的特性無法讓你實作迴圈或狀況判斷;此外它對於非程式員也幫不上什麼忙,我覺得他們不習慣在演算法層面上思考、也無法在第一時間就瞭解MacroMan。當我抱怨MacroMan時,我的老闆告訴我:「放棄吧,別自不量力了。」但我還是努力不懈地一直爭取、爭取再爭取,最終人們終於接受我提出駁辯的理由,而關閉了該專案,而當時我還只是個剛出社會的小毛頭,在微軟內毫無背景。重點是我是對的,而人們不會因為我的身份背景而有所差別待遇,這是程式員所喜愛的非政治組織。

總的來說,專注於你公司的社交型態,可讓公司成為一個健康、愉快的工作場所,這是留下好員工、並吸引新員工的關鍵所在。

我正在做些什麼事?

在某種程度上,你能吸引開發者的最佳策略是讓他們做些真正有趣的事。這或許是最難改變的事:當你是替砂石場開發軟體時,那可真是見鬼了。這就是你目前身所在的職場,而你不能只為了吸引開發者,就假裝自己是家酷炫的網路新創公司。

開發者喜歡的另一件事,就是工作內容單純或通俗到能在感恩節跟Irma嬸嬸說明(譯註:Aunt Irma是IT Crowd劇場出現的人物之一),而Irma嬸嬸當然是位核子物理學家,而且不太很瞭解Ruby編程在砂石工業應用。

最後,許多開發者會注意未來所屬公司的社會價值,社交網絡和部落格公司的工作可以協助人們連結在一起,又完全不會造成任何污染,所以他們很受到歡迎;相反的,軍火工業或造假帳挑戰道德規範的公司就不受歡迎。

不幸的是,我不認為我真能想到任何方法,能在這方面對一般招募經理有任何幫助。你可以試著改變你的產品陣容弄出酷的感覺,然而作用並不會太大。不過我還是看過某些公司在這方面做的一些事:

  • 讓頂尖的應徵者選擇他們想參與的專案

多年以來,Oracle公司一直執行一個MAP計畫(多選擇性計畫),針對各個班級中被認為最頂尖的畢業生。基本作法為:他們可以花個一到兩週的時間來Oracle到處看看,拜訪所有有職缺的團隊,然後選擇一個他們想要參與的團隊。

雖然大概要Oracle公司的人才知道這方法是否真的有用,但我真的認為這是一個好主意。

  • 使用非必要的酷炫新技術

程式員一向認為在紐約大型投資銀行工作是件苦差事,工作環境惡劣、伴隨長時間的噪音、還有個暴虐無道的老闆,在此環境下,程式員簡直就是個三等公民;尤其是面對那個瘋狂從事經濟炒作、好似睪酮素作祟(譯註:作者在此好像引用這本書:睪酮素作祟:大老闆的瘋狂故事)的大猩猩、每年有三千萬美元紅利的傢伙,在他被捧為公司大紅人的同時,程式員們只有起司漢堡可以啃(而且常常是剛好路過的程式員施捨的)。無論如何,想要留下最好的開發人員有些不成文的規定在,所以投資銀行使用以下兩個策略:支付一噸的錢、並且賦予程式員完全的自由,可使用任何最新最熱門最想學的程式語言,不斷的重寫每個東西。想要用Lisp重寫整個交易程序?沒問題,只要給我一個他媽的起司漢堡就行了。

部分的程式員根本不在乎所使用的編程語言為何,但大部分人都樂意有機會把酷炫新技術用在工作上。今日也許是Python或Ruby on Rails;三年前是C#;更早則是Java。

注意,我並不是要你不用最好的工具來工作,也不是要你每兩年就用新出爐的熱門語言來重寫。不過假若有方法讓開發人員能習得新語言、新平台和新技術的經驗,他們會過的更快樂。即使你不敢重寫你的核心程式,我看不出有任何理由,以學習的專案的名義,用讓人興奮的新語言來重寫內部用工具、或較不具重要的程式。

我能認同公司嗎?

大部分的程式員工作並不僅是為了餬口,他們不要為工作而工作,他們想要一份有意義的工作,他們希望能和公司有一致的信念,特別是年輕的程式員會被有理想抱負的公司所吸引,許多的公司和源碼開放或自由軟體運動(這兩者是不同件事)有所關連,而這會吸引一些有理想、有抱負的開發者。其他公司會與社會理想緊密結合,或者生產就某方面對社會有益的產品。

身為一位面試官,你的職責是找出你們公司的理想性面相,而且確定應徵候選人都瞭解。

一些公司甚至積極創造他們自己的意識型態運動,芝加哥地區一家新創公司37signals已經緊緊地將自己和簡易化的觀念繫在一起:像Backpack這樣單純、容易使用的應用程式,像Ruby on Rails這麼單純、容易使用的編程語言平台。

Ggth16.jpg

對37signals來說,簡易化是一種主義,實際上就是種國際政治化運動。簡易化不只是簡易化,噢不,他是夏季、他是美妙的音樂、平和、公正、快樂,以及有髮上別著花朵的美女。Rails的創造者David Heinemeier Hansson說道:他們的故事是個美好、愉快而積極的故事,在你的工作和你的工具裡享受著樂趣並引以為自豪,那故事並不是一時流行,相反的,這是個趨勢,這故事談到如何讓一些像是熱情與熱忱的字語,變成開發者所認同的詞彙之一,而不必替自己找藉口,或為自己做的事感到窘迫。(譯註:變成自發性的投入、而不是被迫)。將一個網頁編程平台恭維成「美好、愉快且熱血沸騰」似乎有些傲慢,但它突顯出他們公司與眾不同的地方。由於將Ruby on Rails描述為快樂的同義詞,他們可保證外面至少會有些開發者會想找Ruby on Rails的工作。

但37signals在這種認同運動上資歷尚淺,還比不上Apple Computer。Apple在1984年一個超級杯廣告中,將自己定位為反抗反傳統,大鳴大放對抗一言堂、自由對抗壓迫、彩色對抗黑白、穿著漂亮紅短褲的美女對抗穿著西裝被洗腦的男人。我恐怕這其中有很反諷的歐威爾式(Orwellian)暗示:大型企業以沒麼道理的作法(比如說他們是家電腦公司,怎麼會跟反獨裁有關係呢?)來操縱他們的公眾形象,卻成功地創造出一種認同文化:讓全世界買電腦的顧客覺得他們不僅是購買一台電腦,而是購買一種潮流、一種風尚。當你購買一台iPod時,當然是在支持甘地對抗英國殖民主義;購買每一台MacBook也都明確表達出反抗獨裁統治與飢餓的立場。

算了吧。深呼吸冷靜一下,這一節要點出的主題為思考你的公司象徵些什麼,這些象徵是如何被察覺又能如何被察覺。好好的管理你的公司品牌,對招募來說與行銷上是一樣地重要。

程式員不關心的一件事

說實在話,除非你在某些地方搞砸了,否則他們不會在乎錢。假若你開始聽到有人抱怨以前未曾提及的薪資問題,那通常是人們不是真的喜歡他們的工作的一種跡象。假若某些可能進入公司的新人,不願意降低高得出奇的薪資要求,很可能你所遇到的人正在想著:「好吧,假若這工作那麼痛苦,我至少應該獲得優渥的酬勞。」

這不是說你可以在降低人們的薪資,因為他們在乎的是公正、公平,假若他們發現同工卻不同薪,或者公司內每人的薪資都比同條街上相同性質公司要少個20%,他們將會非常的憤怒,此時錢將會成為一個大問題。你是該為了競爭力而付薪水,但對程式員來說,決定在哪兒工作時所考慮的事項當中,薪資只是一個很基本的考量,這在考慮清單中的排名,常常是不可思議的低;另外給予高薪對下列問題的幫助也是少得讓人意外:像是程式員只能用15吋傳統螢幕、常常被銷售員使喚來使喚去、或者工作的內容是用小海豹當原料製作核武。

求職信排序

這系列的文章接下來會談論如何將履歷排序,讓你面試的第一個人成為最有可能符合工作需求的人。

Personal tools