開發抽象層 - The Development Abstraction Layer
程式員的工作層次(比方說,Emacs)實在太過於抽象了,抽象到做不了生意。在抽象層工作的軟體開發者,還需要一個實作層 -- 一個能將程式碼轉換成產品的組織。
桃莉巴頓(Dolly Parton)是在”唱好歌”那一個層次的,她也需要一個龐大的實作層,來幫她灌唱片、訂演唱會場地、賣票、音效、宣傳、收版稅。
任何成功的軟體公司都會包括薄薄一層的開發者,這些開發者散佈在巨大管理組織抽象層之上建立軟體。這個抽象層存在的目的,只是為了建立一種假象,讓大家覺得一個程式員的日常活動(程式碼的設計及撰寫,程式碼的簽入、除錯等等),就是建立軟體產品並將之引入市場的一切。
這一點讓我得出本文最關鍵的重點:
身為軟體團隊經理,你的第一要務是建立開發抽象層。
大多數軟體經理新人都未察覺這個重點。他們只會一直想由好萊塢電影學到的傳統命令式管理模式。
在命令式的作法中,經理/團隊領隊會找出公司的目標,然後對副官下達適當命令把公司往讓方向移動。副官接下來會細分工作再命令下屬執行。這個過程會沿著組織圖往下重複進行,直到最後某個在最底層的人實際做事為止。在這種模式之下,程式員就是機器中的一根齒輪牙:一個執行管理階層命令中某一部份的打字員。
對一家軟體公司而言,管理的第一要務就是替程式員建立那樣的抽象層。
如果某個程式員正為椅子壞掉而操心,或是因為等Dell送新電腦來閒置,表示這個抽象層已經有了裂縫。
把你的開發抽象層想像成一艘具備超級馬力的美麗大遊艇。遊艇的維護無懈可擊。美食準時送上。包廂每天有兩次整理服務。導航地圖隨時更新。全球定位系統和雷達從不出問題,就算壞了艙內也有備份。而在艦橋上則是只需要考慮速度方向以及午餐吃鮪魚還是鮭魚的程式員。同時有一大隊身著漿硬白制服的專業人員在甲板下悄悄活動,維持所有事情的運作、填滿油槽、刮除藤壼、熨平午餐餐巾。這個支援團隊知道要做什麼,不過全都聽從臭屁老領隊(salty old fart)的指示。後者只要往某個方向輕輕點頭,整隊人就會完全協調演出,讓程式員能把遊艇的細節全部抽象掉,只要管速度和方向,以及午餐要吃些什麼。
最需要為建立程式員的抽象層負責的就是軟體公司的管理階層。我們建造遊艇,我們服務遊艇,我們就是遊艇本身,不過我們不駕駛遊艇。我們做的每件事都是要為程式員提供一個無縫隙的抽象層,讓他們能創造出偉大的程式,再讓那些程式抵達能因而獲益的客戶手中。
程式員需要Subversion儲存庫。建立一個Subversion儲存庫意味著你需要一個網路和一台伺服器,必須去採購、安裝、備份,還要配置不斷電系統;伺服器會產生很多熱,表示你得準備一個有額外空調的房間去放;而空調得連接到大樓外,表示大樓外牆外面要裝一個80磅的風扇;安裝這東西會讓屋主緊張,所以他們得帶自己的工程師來,協調要在哪裡安置空調設備(決策結果:要裝在往上到18樓的外牆上,可能是最不方便的位置),而屋主也會拉律師進來,因為我們得付出許多才獲淮進行;然後當空調安裝人員出現了,還帶著有如芭比玩具組的吊索機具,讓我們的建築工頭緊張起來,不肯讓他們穿著半吋粉紅塑膠製的美泰兒(Mattel,譯註:著名玩具商)繫具爬出18樓窗外,於是有人得再把包商找來,搞清楚他們為什麼在施工12週後,會突然發現得為這該死空調再次修改合約,而且這東西早在耶誕節前就知道要裝但是剛剛才弄清楚。而這件事即使只讓你的程式員花一分鐘去想都嫌太多。
就你的團隊中的軟體開發者而言,這一切都必須被抽象化成只要在命令列鍵入svn commit。
這就是要有管理階層的原因。
管理階層就是為了那些沒有公司能避免的事,不過如果讓你的程式員為此而操心,那麼管理階層就算失敗了。這就像如果百萬富翁船主得下去引擎室建造引擎,這台一百英呎長的遊艇也算失敗了。
要讓一位程式員發揮最大的生產力,必須搭配一間安靜的個人辦公室、一台強大的電腦、無限制的飲料,華氏68到72度的室溫、螢幕上沒有反光、一張極舒適而不會感覺到的椅子、一位替他們帶來信件和訂購的書籍手冊的管理者,一位讓網際網路讓氧氣般隨時可用的系統管理者、一位能找出他們自己看不到的臭蟲的測試人員、一位讓他們的畫面美麗悅目的繪圖設計師、一組讓大眾想要他們產品的行銷團隊、一組確保大眾能拿到這些產品的業務團體、幾位協助客戶使用產品,並讓程式員瞭解導致客服電話的問題,極具耐心的技術支援聖人、以及其他十幾位支援及行政人員,而這些在一家典型的公司裡總共會佔用八成的薪資支出。羅馬軍隊中每位士兵配置四名僕人的比例並非巧合。這並不是墮落。現代軍隊的比例可能高達7:1。
沒有人期望桃莉巴頓知道如何接上麥克風。她背後有一個無法想像,由經理人、音樂家、錄音技師、唱片公司、巡迴演出經紀人、美髮師、宣傳人員組成的基礎結構,這全部的一切只是要在她唱歌時建立那種抽象性,好像數百萬人會聆聽只是因為是她在唱歌。這所有讓桃莉巴頓得以實現的支援人員和管理階層所能做的最佳工作,就是提供最完美的抽象:那種桃莉巴頓為我們而唱的完美假象。這就是她的歌。當你用你的iPod聆聽她的歌,其實是有個巨大的基礎結構讓這件事實現,不過這個基礎結構所能完成最棒的事就是完全消失。只剩下桃莉巴頓獨自對我們唱歌這個完美的抽象意念。
===
由程式員驅動,在組織上讓程式員坐上駕駛座,同時卻有優異的抽象層能在甲板下完成所有把程式碼轉成產品的苦工。
沒有留言:
張貼留言