這是人月神話:軟體專案管理之道(20週年紀念版)的第七章:巴別塔為什麼失敗?,開場白是聖經舊約創世紀的創世記11:1-9(中文和合本):『那時、天下人的口音言語、都是一樣。他們往東邊遷移的時候、在示拿地遇見一片平原、就住在那裏。他們彼此商量說、來吧、我們要作磚、把磚燒透了。他們就拿磚當石頭、又拿石漆當灰泥。他們說、來吧、我們要建造一座城、和一座塔、塔頂通天、為要傳揚我們的名、免得我們分散在全地上。耶和華降臨要看看世人所建造的城和塔。耶和華說、看哪、他們成為一樣的人民、都是一樣的言語、如今既作起這事來、以後他們所要作的事、就沒有不成就的了。我們下去、在那裏變亂他們的口音、使他們的言語、彼此不通。於是耶和華使他們從那裏分散在全地上。他們就停工、不造那城了。因為耶和華在那裏變亂天下人的言語、使眾人分散在全地上、所以那城名叫巴別。』ㄚ琪自是對這一段經文很熟,當然對摩爾門經中以帖書的雅列人從巨塔到應許地到滅亡,這段歷史也不生疏。
好吧,總之,這一章主要在討論其失敗的原因,作者把建巴別塔比喻到大型專案中來分析,這個專案有明確目標、有足夠的人力、材料也不虞匱乏、時間多到沒有限制、技術也沒有問題,但是卻因為溝通(communication)跟組織(organization)失敗了,當然這是神的旨意造就的,不過在一個大型專案中,我們該如何避免這兩個問題發生呢?
要解決大型軟體開發專案的溝通問題,有非正式方法(informally)、會議(meeting)及工作手冊(workbook),我想非正式方法大家應該都懂得怎麼運用,會議在The Introduction of Passing the Word也有提到,這一章就把火力集中在工作手冊上來討論。
什麼是工作手冊?『所有在專案中所使用到的文件都應該是屬於這個組織結構中的一部分,包括:計畫目標、外部規格、介面規格、技術標準、內部規格、管理備忘錄。』
為什麼要有工作手冊?第一個理由『對技術工作者而言,善用前人或現有的素材,跟親自操刀創作一樣地重要。』,第二個理由『用來控制資訊的分佈』。
為了解決溝通的問題,在大型軟體開發專案需要透過人力配置(division of labor)和專業分工(specialization of function)來減少隨著軟體的大型化所增加的溝通問題!這一章有強調,我們常見的組織結構是樹狀的,但是溝通的實際狀況卻是網狀的,所以有時組織並不一定解決溝通上的問題。
所以要利用樹狀的組織結構來減少溝通的成本,每個子樹必須具備基本要素:
—(1)任務
—(2)管理者(producer)
—(3)技術總監(technical director)或架構設計師
—(4)時程
—(5)人力配置
—(6)各個職掌之間的介面定義
文後提到管理者跟技術總監的角色再人力配置上的討論,昨晚睡前突然有一個靈感可以仔細的討論一下:
1.由管理者兼任技術總監:6~8人的小團隊很適合,大型專案團隊就很少可以行得通,原因有二,一是具備優秀管理天份與技術天份的人才相當少,二是這兩種角色都是全職角色。
2.管理者是老闆,技術總監是副手:這個困難在於如何賦予技術總監充分下達技術決策的權力,以免使他陷入管理的命令體系之中而浪費太多時間。這裡面我想到中國歷史上有很多類似的案例,但不一定都有很好的結果,像漢高祖劉邦的韓信,韓信後來沒有很好的下場,反倒是張良就比較聰明,這裡頭有的是功高震主的問題,但也有很好的張良下場,三國的劉備跟諸葛孔明也是好結果,這之間牽涉到管理者與技術總監的互信問題,所以人之間的溝通問題真的很難。
3.技術總監是老闆,管理者是副手:這裡頭用了《The Man Who Sold the Moon》的人事安排的一個例子,不過我不覺得行得通,看起來也覺得怪怪的!
最後作者提到喜歡管理者當老闆在大型的樹狀組織結構中,看起來是比較適合的,ㄚ琪也這樣覺得,你覺得呢?
1 則留言