商周

啟動成功關鍵,隨時掌握商周.com最新資訊

提供第一手新聞解析、財經趨勢、專屬活動

已加入收藏
已取消收藏
帳號頭像 帳號選單下拉箭頭
/
熱搜內容
現正閱讀
為什麼「這個錯誤」工程師40年來一犯再犯?
畫重點
段落筆記
新增筆記
「請稍等」英文別直接中翻英說please wait a minute!一次掌握,常用的電話對談英文
0
/500
不公開分類 公開分類
儲存
至頂箭頭

財經 | 產業動態

為什麼「這個錯誤」工程師40年來一犯再犯?

撰文者:yunjie_z
科技報橘 2014.01.02

本文獲科技報橘科技報橘授權刊登,原文出處

《TO》導讀:本篇原文來自《FasrCompany》,本篇後半將有原文作者Ciara Byrne訪問軟體工程師、電腦科學家Fred Brooks的訪談紀錄,討論為何現今的工程師,仍和四十年前的工程師犯同樣的錯誤。

1964年Fred Brooks接下電腦史上最大程式設計計畫之一,負責IBM電腦公司System/360開發。此計畫問世代表著世界上的電腦有一種共同的語言,這也成為現在大型電腦系統的前身,影響深遠。

Brooks在進行此計畫時,發現到軟硬體設計之間的不同,於後他將他的工作經驗談,與對於軟體設計的見解,寫成一本軟體書籍的經典《The Mythical Man-Month》,此本書中最有名的論點之一就是千萬不要在計畫死線前加入新血,那樣只會幫倒忙。

雖然這本書為40多年前的老書,但對映現今社會,仍是發人深省。Brooks以風趣直白的風格講述人類工程史上一項里程碑:大型複雜軟體系統的開發經驗,以及程式設計者內心到底在想什麼。(他曾說過所有軟體工程師都是樂觀主義者。)

廣告

Brooks後來創立了北卡羅萊納大學的電腦資訊工程系,並在1999年時獲頒專門鼓勵電腦工程人員的Turing Award;2010年,發行最新書籍《The Design of Design: essays from a Computer Scientist》。

如今Brooks以82歲的高齡,以見證現代電腦資訊工程發展的角色,與我們分享軟體工程、程式設計的相關問題,以及為何工程師仍然會犯些早在40年前就發生過的同樣錯誤。

以下以訪談形式進行。

與Fred Brooks的訪談內容:

廣告

Q:你如何發現自己對於電腦的興趣?

A:我在北卡羅萊納州的Greenville長大,當時在圖書館裡看到一本雜誌封面上,印有第一部大型自動數位電腦馬克一號(Havard Mark I),我立刻瘋狂著迷於它,並決定這就是我想要畢生投入、研究的事物。

Q:經典著作《The Mythical Man-Month》是根據你在IBM電腦公司領導OS/360計畫而寫成的書籍,你是如何開始領導這個計畫的?

A:我就讀於哈佛電腦資訊工程系(那時後被稱為應用數學系),後來在馬克一號的創立者Harvard Mark教授指導下完成論文。然後我加入IBM工作,在研發幾個後來並沒有量產的產品後,1961年我被選為System 360開發計畫的部分硬體負責人。三年後system 360的硬體設計開始日上軌道,並且準時投入工廠生產,可是關於軟體設計部分仍然一團糟,於是我的老闆決定讓我試試看領導軟體設計的計畫,看看可以闖出些什麼成就來。

Q:IBM的OS/360計畫規模有多大?

A:我不知道此計畫的總成本,但我曾聽說過此計畫在1960年代就燒掉3億到5億美元,當時的美元比現在貴十倍,所以以現在的幣值來講,可能是30至50億美元。此計畫最多曾招募到近千人,不過大部分時間並沒有這麼多。IBM也因此在全球廣設實驗室:德國、英國、法國、瑞典、加州、紐約都有此計畫的專用實驗室。

Q:你曾說過「大家都引用《The Mythical Man-Month》;有一些人會閱讀;但很少人真的學到書中經驗」,為什麼呢?

A:其實此書就是有關軟體工程師在領導時所做的重大性決策,只要看看現在美國健保所發生的重大程式設計錯誤,就可發現那些人犯下書中所有曾提及過的錯誤。

現在這本書已經被翻印超過五十萬次,並且應用於許許多多資工系課程上,照理講應該很多人都知道軟體設計應該避免哪些錯誤,但只要領導重大軟體設計計畫的工程師不是資工系出身,就很難期待他們會注意到這些過往經驗,因此錯誤總是一再重演。

美國健保系統所犯下最嚴重的錯誤就是,整個團隊沒有一個領導人,這是導致後續情況越走越錯的關鍵,此計畫沒有人主導架構,更沒有人負責管理,我簡直不敢想像後續會有多糟。

Q:為什麼一個軟體設計計畫需要有人負責管理和進行整體架構?

A:我認為就算是個小團隊,分工也要非常明確:有人負責管理團隊進度,有人負責架構整個計畫大綱。

當我在北卡羅來納大學電腦工程學系任教時,我總是讓學生清楚的辨別各個職位的不同之處。負責統合軟體整體架構的角色,就必須要負責所有的科技技術部分;管理團隊運行的角色,就得扛起團隊進度、排程、資源搜尋等事項,兩者工作內容皆十分重要且大不相同。

我發現在電影業,也有如此系統性的分工,製作人負責協調大小事項,可是最終功勞仍舊歸給導演;導演負責藝術方面的發想,製作人就要負責讓這些想像成真。我認為套用到軟體設計上,計畫管理者就如同製作人,得想辦法使技術架構出的理論變成事實。

計畫管理者第一要素就是要具備堅毅性格,也必須要能夠隨機應變。一句最適合管理者的格言就是「對於未知事物,永遠保持開放的心」,並且永遠朝著目標前進,但是在朝著計畫前進的過程中,也必須因應事實而修正方向。計畫管理者就代表著打理團隊大小事務的負責人,所以處事必須圓融,團隊裡是由每個人協心同力才能完成,不過通常問題發生,也是來自於溝通不良。

Q:為什麼在《The Mythical Man-Month》發行將近四十年後,要預估一件大型軟體計畫所需時間仍然很困難?

A:因為我們必須要面對的是,設計一個全新的程式,或是發想一件全新的科技。而研發新程式總是會藏有許多不定性因子,就像是第一次建造核彈潛艇或是火箭是一模一樣的道理,你永遠不知道接下來可能會碰到什麼問題,只要是程式設計,永遠是在探索新可能。

Q:在新書《The Design of Design》內,你提到「設計的科學」是個不可能,也是個誤導的概念,為什麼?

A:科學家與工程師若是以實際作為上來做區別,有著本質上的差異。科學家需要花很多時間,形成一套假設,他設立一套假設是為了學習未知的科學真理;工程師每天花很多時間研究既有資料,以做研究的精神來創見新事物,兩者雖然相輔相成,其中的差異卻十分重要。

所以我認為國家科學機構(National Science Foundation)計畫要在設計、研發新技術的步驟中,找出既有脈絡是不可能的。物理學的理論可以被系統化,可是沒有人可以將物理學家做研究的過程也跟著建立一定步驟。

換言之,設計的科學是一個誤導概念,因為其根本就無法找出一個既定的過程。

Q:你也曾說過「標準作業設計流程,其實是創新與偉大設計的絆腳石」,但是標準化的作業流程,也有助於提昇一般設計的水平,程式作業者在設計程式時,該如何面對這樣的狀況?

A:這就是辨別優秀的程式設計師與一般的程式設計師的差別。

其實根本無法教導一個人怎樣進行程式設計,唯有經歷不同的程式設計經驗後,當事人才有辦法逐漸抓到那種感覺,以及思考判斷的能力。有句俗話說「好的判斷來自於經驗,經驗來自於先前的失敗」,我認為這句話應用在程式設計師的訓練上,非常適合。

Q:該如何訓練程式設計師?

A:應該藉由不同種類的計畫,使新的程式設計師能夠多方吸取不同經驗,並且在不同職位上,對於程式設計發展出全面的見解。因為設計師是介於使用者與開發者之間的媒介,他必須要了解使用者的需求,也要了解這個程式的設計目的,以及它想達到的功用,因此不管是使用者面,或是設計者面,設計師都要認真花時間下去了解。

大多數的大公司皆有這種計畫,以角色轉換的方式來訓練設計師,從學術面到實際應用面的各種職位,都會讓設計師實際參與。在IBM,最有潛力的年輕設計師皆是從助手開始做起,財政總監、CEO、執行總監身邊都有助手,這些人日後或許都有相當潛力,可以接替決策大位。而負責決定哪些人該受訓的管理人也很重要,他們知道訓練新人的重要性,不過有些人卻會選擇不給新人受訓機會,以免新人日後成就超越自己。

Q:IBM的CEO帶給你什麼樣的啟發?

A:當我離開IBM前往北卡羅萊納大學教書時,IBM的CEO Thomas Waston Jr.邀請我前去共進私人午餐,他希望我能夠繼續留在公司,可是我並無此意。當時我擔任的是第三級的工程師,我對他說:「我很喜歡研究、製造東西,所以我要回到學校裡貼近那個領域。」

CEO只問我你有沒有看過團隊最新的Poughkeepsie(IBM 最大的電腦設計計畫),此計畫底下有一萬個人在為此工作,而整個實驗的計畫是由IBM的CEO領導。

在那個瞬間我的視野被整個提昇了,我從來沒有想過所謂的「製造東西」可以巨大到這種層級,也讓我對於個人的觀點,有了不一樣的見解。

(資料來源:FastCompany

作者簡介_科技報橘

TechOrange,專門追蹤全球網路產業的科技網誌。提供網路創業者、行銷人員、媒體人員關於網路的資訊與知識是我們的任務。文章輕薄短小,吸收科技新知沒負擔,每天大概花吃顆橘子的時間來瀏覽就夠了。

「科技報橘」專欄文章列表

下滑箭頭 下滑載入更多報導 下滑箭頭
軟體 工程師 錯誤 電腦
科技報橘
科技報橘
TechOrange
展開箭頭

TechOrange,專門追蹤全球網路產業的科技網誌。提供網路創業者、行銷人員、媒體人員關於網路的資訊與知識是我們的任務。文章輕薄短小,吸收科技新知沒負擔,每天大概花吃顆橘子的時間來瀏覽就夠了。

廣告
留言討論