前 言 Preface
為什么寫這本書?退休后,我開始為孫輩們撰寫一本以家庭為中心的回憶錄,我意識到自己正在以前所未有的方式進(jìn)行一次全方位的時光回溯。這些遍及我的戶外和職業(yè)冒險經(jīng)歷的回憶發(fā)人深省。每一次,當(dāng)我問年輕的同事是否知道湯姆·德馬科、杰瑞·溫伯格或肯·奧爾時,他們都說不知道。他們知道Azure、Ruby和敏捷實踐,但對軟件開發(fā)歷史卻知之甚少。技術(shù)飛速發(fā)展,讓人無暇顧及過去。
我想寫一寫軟件開發(fā)的歷史,用我的親身經(jīng)歷加以點綴,來介紹那些人,那些通過構(gòu)建更好的軟件,努力讓世界變得更美好的先驅(qū)們。無論是1800年代的毛皮捕獵者吉姆·布里杰(Jim Bridger)、阿波羅宇航員、結(jié)構(gòu)化軟件開發(fā)者肯·奧爾,還是敏捷方法論者肯特·貝克,這些先驅(qū)都表現(xiàn)出了冒險精神、適應(yīng)能力和特立獨行的個性。我希望重溫早年間與同事分享的經(jīng)驗,為新進(jìn)的同事提供一種視角。
新冠。封城。退休。構(gòu)建項目完成。萎靡不振。下一步是什么?這些都是2022年開始時我腦海中閃過的念頭。隨著我開始回憶、研究、查找舊郵件和文件,把家庭回憶錄寫成一本書的想法開始成形。我的想法是圍繞軟件開發(fā)的不同時代來組織這本書,寫下我在每個時代的工作、故事、經(jīng)歷和觀察。就這樣,一點一點地從幾個模糊的敘事片段演變成書。我想探索軟件行業(yè)如何以及為什么會從1960年代的臨時代碼涂鴉發(fā)展到2022年的各種方法、方法論和工具。
我的職業(yè)生涯和整個軟件開發(fā)都受到信息技術(shù)(IT)變革的巨大影響。舉個簡單的例子:iPhone的64 GB內(nèi)存是1970年代初我用過的IBM 360大型計算機(jī)的25萬倍。2021年,1 GB內(nèi)存的價格約為10美元。然而在蠻荒時代,雖然技術(shù)上不可能實現(xiàn)1 GB的內(nèi)存,但加起來的1 GB內(nèi)存的成本將近 7.34 億美元!我們需要記住,方法、方法論和思維方式都是為了解決每個時代的問題而演變的,它們既受到當(dāng)時技術(shù)的推動,也受到其制約。
在我探索這段歷史的過程中,本書演變成了一部交織而成的創(chuàng)意非虛構(gòu)作品。非虛構(gòu),顧名思義,是與虛構(gòu)相對的。我一直不明白為什么這種體裁被命名為其他事物的非。關(guān)于技術(shù)和科學(xué)的書籍通常都是非虛構(gòu)的,而且很遺憾,對于非研究者來說,有時會覺得乏味。而創(chuàng)意非虛構(gòu)作品的出現(xiàn),則是作家們利用人物、故事、結(jié)構(gòu)、張力和情節(jié)等文學(xué)工藝元素,使非虛構(gòu)作品具有可讀性和趣味性。簡而言之,它們是真實的故事,精心的講述。
交織敘事是非虛構(gòu)(或虛構(gòu))作品的一種類型。一條故事線講述作者的個人故事,另一條故事線探討環(huán)境、社會公正問題或歷史事件。隨著時間的推移,這兩條故事線交織在一起,相互促進(jìn),形成一個具有黏著力的整體。
本書包含了幾條故事線。第一條故事線包括軟件開發(fā)在四個不同時代的演變和各種革命。第二條故事線描述了我個人和客戶在每個時代的經(jīng)歷。第三條故事線是向勇于探索、敢于創(chuàng)新的先驅(qū)們致敬。第四條和第五條故事線是技術(shù)創(chuàng)新和管理趨勢。
用這種交織式的敘事體裁寫作有兩個好處,即范圍和故事。如果要寫一本關(guān)于軟件開發(fā)歷史的書,那將遠(yuǎn)遠(yuǎn)超出我的興趣和能力。將范圍限制在我所參與的事件上大大縮小了覆蓋面。我的職業(yè)生涯完全與業(yè)務(wù)系統(tǒng)有關(guān)(除了早年作為電氣工程師的經(jīng)歷)。我從未參與過科學(xué)或工程計算,從未編寫過編譯器或操作系統(tǒng),從未編寫過復(fù)雜的算法,也從未在UNIX系統(tǒng)上工作過。我所研究的是業(yè)務(wù)系統(tǒng),如用于會計、財務(wù)、訂單處理、庫存管理和運輸?shù)南到y(tǒng)。我研究的是改進(jìn)軟件開發(fā)的方法和方法論。我研究的是技術(shù)、項目管理、組織和領(lǐng)導(dǎo)問題。
這其中的一個挑戰(zhàn)是術(shù)語。今天的流行術(shù)語在以前可能根本不存在。我應(yīng)該使用軟件開發(fā)、軟件交付還是軟件工程?關(guān)于術(shù)語的爭論,過去和現(xiàn)在都很激烈。軟件工程真的是工程嗎?軟件開發(fā)是軟件工程的子集還是超集?等等,不一而足。我的第一反應(yīng)是加入這場定義之爭,但后來我重新考慮了這個決定:這是一條瘋狂之路! 因此,考慮到我個人的偏好,我將軟件開發(fā)作為一個寬泛的術(shù)語,并在覺得合適的時候加入一些軟件工程的標(biāo)簽。在本書中,我對軟件開發(fā)的定義涵蓋了從產(chǎn)品和項目管理到需求、設(shè)計、編程、測試和部署的所有活動。
另一個難題是主題時間。例如,面向?qū)ο缶幊桃辉~最早出現(xiàn)在1960年代中期,但使用一直很有限,直到1990年代市場迅速擴(kuò)大。技術(shù)債務(wù)也是類似的情況。我的指導(dǎo)方針是到市場擴(kuò)張期再深入研究這些主題。
能與兩代軟件開發(fā)先驅(qū)合作,我感到既幸運又慚愧。早期,我的同事有肯·奧爾、湯姆·德馬科、蒂姆·利斯特、埃德·尤爾登、拉里·康斯坦丁和杰瑞·溫伯格。在1999年即將跨入21世紀(jì)之際,我又將阿利斯泰爾·科伯恩、帕特·里德、肯特·貝克、邁克·科恩、肯·施瓦布、杰夫·薩瑟蘭和馬丁·福勒等敏捷專家列入了這個名單。
我寫這本書有如下目的:
- 記錄軟件方法、方法論和思維方式的演變和革命。
- 記錄并致敬軟件開發(fā)先驅(qū)。
- 以史為鑒,面向未來。
- 給我們這一代人一個追憶似水年華的載體。
- 讓年輕一代一瞥那些他們可能錯過的事件。
此外,我還希望我的孫輩們能更多地地了解我,了解我的職業(yè)生涯并探索其意義。
最后,談?wù)勎覍浖_發(fā)歷史的看法。視角是一個人看待歷史事件的角度……每個資料來源都有其視角。二 ○我從我的視角來看待這段歷史,這當(dāng)然包括我的年齡、受教育經(jīng)歷、工作經(jīng)驗和地理位置,還包括種族、性別、性取向和宗教信仰。我只能從我的視角來寫作,但我也認(rèn)同并支持圍繞多樣性、公平性和包容性而百花齊放的目標(biāo)。
本書的故事線交織在一起,講述了一個故事。對于登山者來說,一根編織緊密的登山繩將他們捆綁在一起,形成一個協(xié)作、自組織的團(tuán)隊。而將人團(tuán)結(jié)在一起的繩子,有很多種。