千載難逢的軟體管理大師──溫伯格
經濟新潮社編輯部
在陸續出版了《人月神話》、《最後期限》、《與熊共舞》、《你想通了嗎?》等等軟體業必讀的經典之後,我們感覺,這些書已透徹分析了時間不夠、需求膨脹、人員流失、管理不當,每每導致軟體專案的失敗。這些也都是軟體產業永遠的課題。
究竟,這些問題有沒有解答?如何做得更好? 專案管理的問題千絲萬縷,面對的偏偏又是最(自以為)聰明的程式設計師(知識工作者),以及難纏(實際上也不確定自己要什麼)的客戶,做為一個專案經理,究竟該怎麼做才好?
軟體能力,於今已是國力的指標;縱然印度、中國的軟體能力逐漸凌駕台灣……我們依然認為,這表示還有努力的空間,還有需要補強的地方。如果台灣以往的科技業太「硬」(著重硬體),那麼就讓它「軟一點」,正如同軟體業界的達文西──Martin Fowler所說的:Keeping Software Soft(把軟體做軟),也就是說,搞軟體,要「思維柔軟」。
因此,我們決定出版軟體工程界的天王巨星──溫伯格(Gerald M. Weinberg)集40年的軟體開發與顧問經驗所寫成的一套四冊《溫伯格的軟體管理學》(Quality Software Management),正由於軟體專案的牽涉廣泛,從技術面到管理面,得要面面俱到,而最重要的關鍵在於:你如何思考、如何觀察發生了什麼事、據以採取行動、也預期到未來的變化。
前微軟亞洲研究院院長、現任微軟中國研究開發集團總裁的張亞勤先生,為本書的簡體版作序時提到:「溫伯格認為:軟體的任務是為了解決某一個特定的問題,而軟體開發者的任務卻需要解決一連串的問題。……我們不能要求每個人都聰明異常,能夠解決所有難題;但是我們必須持續思考,因為只有如此,我們才能明白自己在做什麼。」
這四冊書的主題分別是:
1. 系統化思考(Systems Thinking)
2. 第一級評量(First-Order Measurement)
3. 關照全局的管理作為(Congruent Action)
4. 擁抱變革(Anticipating Change)
都將陸續由經濟新潮社出版。四冊書雖成一系列,亦可單獨閱讀。希望藉由這套書,能夠彌補從「技術」到「管理」之間的落差,協助您思考,並實際對您的工作、你所在的機構有幫助。
前言
拙劣的管理所造成軟體成本上的增加,遠超過任何其他的因素。
──BarryW.Boehm1
本書是某種形式的週年紀念禮,可用以慶祝我與電腦之間長達四十年的愛情長跑。早在1950年時,我讀到某一期《時代雜誌》的封面故事,2它所談的主題是電腦,或者可以說是「會思考的機器」。該期的封面是由《時代雜誌》最受歡迎的一位封面設計師Artzybashef所設計,封面上畫著一個由擬人化的電子設備所組成的盒子。它的一隻眼睛盯著右手上拿著的打孔紙帶,同時用左手在一台電傳打字機上打出一些輸出的資料。這個盒子的上端戴了一頂海軍軍帽,上面放了許多個「炒蛋」,標題寫著:「Mark三號,人類能夠製造出超人嗎?」
稍微搧情了些,沒錯,不過它卻在一個即將從高中畢業的十六歲學生的腦海中留下了深刻的印象。或許我對該篇文章中的許多細節已不復記憶,但是,我仍然清楚地記得,我當場就下定決心這輩子要跟定電腦。
這篇文章中最讓我感到印象深刻的一件事,就是在電腦製造這個行業裡,IBM佔有舉足輕重的地位。到了1956年我發現,還沒有一所大學能教授電腦方面的課程,於是我毅然決然地投效IBM。
IBM在我的眼中是一家頗值得尊敬的公司,有十四年之久,特別是對於該公司的座右銘「THINK(思考)」。IBM在這一點上是對的。思考是非常重要的一件事。但是,在那兒工作一陣子之後,我卻發現IBM和該公司的客戶們經常是在表面上把思考二字奉為神明,但實際上卻從來不去實踐──這現象在公司的軟體部門尤其嚴重,思考在IBM的最高主管心目中總是被排在最後一位。
就我所知,擺在我辦公桌上的那個「THINK」的牌子似乎從未能幫助我們把軟體給早點送出門。不過,IBM的經理人員似乎也從未能在改善工作的流程上有什麼新的作為。後來,當我離開IBM去開始我獨立的顧問生涯,我才發現,IBM的經理人員並不會比其他公司的經理人員表現得更差。
軟體的經理人員對於思考這件事都只是耍耍嘴皮,卻沒有多少實際上的作為,這個現象舉世皆然。究其原因,主要是因為他們從來都不曾明瞭,為什麼一般人在他們該思考的時候卻不去思考。當然啦,我本人也是不甚明瞭。
事後回想起來,我突然領悟為什麼當年《時代雜誌》對我會造成這麼大的震撼。在學校裡,人人都誇我是多麼的聰明。的確,我在各種考試上都有極其優異的表現,但是,我在思考自己的生命時,卻似乎從未能想出個所以然。我是一個充滿煩惱的少年,而我認為一旦有了那種會思考的機器,或許就能幫助我解決我所有的問題。
結果,這種會思考的機器並沒有解決我所有的問題;它反而把問題搞得更難解決。當我試圖要用它來建造新軟體的時候,電腦總是毫不留情地把我所有的錯誤都突顯出來。當我為了一個程式而苦思時,在我的思路上若有任何一丁點的瑕疵,程式就跑不起來。我學到的經驗是,電腦是一面鏡子,它會忠實地反映出我的智慧,而我很不喜歡這面鏡子中的那個我。
後來,每當我有機會與他人合作來寫一個較大的程式時,我得到的經驗是,電腦不僅是一面鏡子,它還是一個有放大效果的鏡子。無論何時,只要我們無法有條不紊地為我們的軟體專案做思考,我們立刻就會製造出一個巨大的怪獸。我開始學到一件事:我們若是想有朝一日能夠把「會思考的機器」的功用充分地發揮,首先我們就得從改善我們自己的思考方式下手。
於是,我開始把「思考」本身當作我的研究主題,特別是可以應用到軟體問題上的思考方式。由於IBM的慷慨大度,我得以重回學校去唸書,還寫了一篇論文,專門探討如何拿電腦當工具來反映我們的思維方式。我的足跡曾踏遍世界各地,拜訪過許多個軟體機構,並研究他們在開發軟體時是如何去思考。我與別人分享與此有關的各種想法,並試圖能夠在軟體專案中加以實踐。對於哪些想法可行,哪些不可行,我加以觀察,然後再回頭修正我的想法。我將部分的想法出版成書,然後再利用數以百計的讀者給我的指教,繼續修正我書中的某些看法。本書即是總結到目前為止,在如何能有效地管理一個軟體專案一事上,我所學習到的經驗。
管理一個軟體專案的能力為什麼這麼重要呢?多年前《時代雜誌》的那篇文章上所做的諸多預言中,有一個是這麼說的:
環繞在每一台全速運轉的電腦四周的,是一群帶著夢幻般眼神的年輕數學家。桌上擺滿了許多冰冷的數字,他們將現實生活中的問題都轉換成以數字來表達的語言。通常,若是用這樣的方法來解決問題,他們為某個問題預做準備所花的時間,比起電腦解決該問題所花的時間,還要多出許多。
提出問題的人類必然會落後給要回答問題的機器,而且會落後得愈來愈多。3這篇文章中的預言並未全部實現(截至目前為止),然而,這一個預言卻真的說對了。自從我加入那群帶著夢幻般眼神的年輕的「回答問題的人」那一天起(「程式設計師」這個名詞在那個時候還沒發明出來),我就學會了一件事,你如果不想落後給能夠回答問題的機器愈來愈多的話,你需要擁有三項基本的能力:
1. 有能力對發生了什麼事進行觀察,並且有能力對你的觀察結果所代表的意義加以解讀。
2. 在複雜的人際關係中,即使你會感到迷惘、憤怒、或是非常地害怕,甚至害怕到想要當場逃離並找個地方躲起來,你仍然有能力採取能關照全局的行動。
3. 有能力了解各種複雜的狀況(此項能力讓你能為專案做好事前的規劃,並準此來進行觀察及採取行動,以保持專案可依計畫進行,或再回頭去修正原本的計畫)。
對高品質的軟體管理工作而言,這三項能力缺一不可,但是我不想將本書寫成一本皇皇巨著。因此,如同任何一位稱職的軟體經理一般,我將寫書的計畫拆成三個小計畫,在每一個小計畫中都針對這三項基本能力中的一項來討論。我將從第三項能力開始寫起:有能力了解各種複雜的狀況,其原因將在本書的內文中做清楚的交代。
換句話說,這是一本談論如何去思考的書。本書的座右銘正是IBM公司的座右銘,這是我回報IBM和許多曾經幫助過我的人的一種方式,感謝我在軟體這個行業四十年來從他們身上所學習到的諸多美好的經驗。我實在想不出還有什麼禮物會比幫助他人(就像我曾接受過許多人的幫助)更為美好,我希望幫助他人在思考某個關乎其個人,也關乎這個世界的極其重要的課題時,能夠以更有效的方式來思考。
致台灣讀者
傑拉爾德.溫伯格
2006年8月14日
最近,我很榮幸地得知,台灣的經濟新潮社要引進出版拙著的一系列中譯本。身為作者,知道自己的作品將要結識成千上萬的軟體工程師、經理人、測試人員、諮詢顧問,以及其他相信技術能為我們帶來更美好的新世界的人們,我感到非常驚喜。我特別高興我的書能在台灣出版,因為我有個外甥是一位中文學者,他曾旅居台灣,並告訴過我他的許多台灣經驗。
在我早期的職業生涯中,我寫過許多電腦和軟體方面的技術性書籍;但是,隨著經驗的增長,我發現,如果我們在技術應用和建構之時對於其人文面向沒有給予足夠的重視,技術就會變得毫無價值--甚至是危險的。於是,我決定在我的作品中加入人文領域的內容,並希望讀者能注意到這個領域。
在這之後,我出版的第一本書是《程式設計的心理學》(The Psychology of Computer Programming)。這是一本研究軟體開發、測試和維護當中關於人的過程。該書現在已經是25週年紀念版了,這充分說明了人們對於理解其工作中人文部分的渴求。
各國引進翻譯我的一系列作品,讓我有機會將這些選集當作是一個整體來思考,並發現其中一些共通的主題。自我有記憶開始,我就對於「人們如何思考」產生了濃厚的興趣;當我還很年輕時,全世界僅有的幾台電腦常常被人稱為「巨型大腦」(giant brains)。我當時就想,如果我搞清楚這些巨型大腦的「思考方式」,我或許就可以更深入地了解人們是如何思考的。這就是我為什麼一開始就成為一個電腦程式設計師,而後又與電腦共處了50年;我學到了許多關於人們如何思考的知識,但是目前所知的還遠遠不夠。
我對於思考的興趣都呈現在我的書裡,而在以下三本特別明顯:《系統化思考入門》(An Introduction to General Systems Thinking,這本書已是25週年紀念版了);它的姊妹作《系統設計的一般原理》(General Principles of Systems Design,這本書是與我太太Dani合著的,她是一位人類學家);還有一本就是《你想通了嗎?》(Are Your Lights On? : How to Figure Out What the Problem Really Is,這本書是與Donald Gause合著的)。
我對於思考的興趣,很自然地延伸到如何去幫助別人清晰思考的方法上,於是我又寫了其他三本書:《顧問成功的祕密》(The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully);《More Secrets of Consulting: The Consultant's Tool Kit》;《The Handbook of Walkthroughs, Inspections, and Technical Reviews: Evaluating Programs, Projects, and Products》(這本書已是第三版了)。就在不久前,我寫了《溫伯格談寫作》(Weinberg on Writing: The Fieldstone Method)一書,幫助人們如何更清楚地傳達想法給別人。
隨著年齡的增長,我逐漸意識到清晰的思考並不是獲得技術成功的唯一要件。就算是思維最清楚的人,也還是需要一些道德和情感方面的領導能力,因此我寫了《領導的技術》(Becoming a Technical Leader: An Organic Problem-Solving Approach);隨後我又出版了四卷《溫伯格的軟體管理學》(Quality Software Management),其內容涵蓋了系統化思考(Systems Thinking)、第一級評量(First-Order Measurement)、全面關照的管理作為(Congruent Action)和擁抱變革(Anticipating Change),所有這些都是技術性專案獲得成功的關鍵。還有,我開始寫作一系列小說(第一本是《The Aremac Project》預計2006年秋天出版)是關於專案及其成員如何處理他們碰到的問題──根據我半個世紀的專案實務經驗所衍生出來的虛構故事。
在與各譯者的合作過程中,透過他們不同的文化視野來審視我的作品,我的思考和寫作功力都提升不少。我最希望的就是這些譯作同樣也能幫助你們──我的讀者朋友──在你的專案、甚至你的整個人生更成功。最後,感謝你們的閱讀。