敏捷史話(十七):維基(Wiki)背後的靈感來源—— Ward Cunningham
在軟體開發領域, Ward Cunningham 有許多獨到的見解與成就。
1949年,Ward Cunningham 出生於印第安納州的密歇根市,並在萊克縣的一個小鎮中長大。懷揣著對計算機濃厚的興趣,在普渡大學學習期間,他獲得了跨學科工程(電子工程和電腦科學)學士學位以及電腦科學碩士學位。1978年,Ward Cunningham 完成了全部學業。
( 普渡大學校徽)
畢業後的 Ward Cunningham 先後擔任過研發總監、首席工程師等職位,也自己創辦了 Cunningham&Cunningham,Inc.——專門從事物件導向程式設計的諮詢公司,以及一個面向軟體開發人員的教育性非盈利組織:The Hillside Group。
在自己豐富的軟體開發實踐的基礎上,Ward 總結出了很多經驗以及獨到的思想,而這些思想也成為日後軟體開發人員進行開發實踐的準則。
Cunningham 定律與 Wiki
Ward Cunningham 認為:“
在網際網路上獲得正確答案的最佳方法不是提出問題,而是釋出錯誤的答案
。”這就是 Cunningham 定律,指人們更正錯誤的答案比回答問題更快。在日後的工作中,Cunningham 也在一直貫徹這個想法。
20世紀80年代末,Cunningham 在使用一個名為 HyperCard 的程式時,發現了這樣一個問題:雖然 HyperCard 程式管理了許多稱為“卡片”的資料,每張卡片都可劃分欄位、上傳圖片,且支援修改編輯。這個類似網頁的程式對當時的人們來說很有用,但要想建立卡片與卡片之間的連結,就非常難了。
為了解決這個問題,他在原有程式的基礎上增添了一個新的連結功能。使用者只需將連結輸入卡片上的一個特殊欄位,原有每一欄位的按鈕便會引導使用者去新的目標卡片。連結功能加上 HyperCard 卡片的應用,能夠讓使用者更正卡片上的錯誤內容,並連結到正確的卡片上。
這個在 HyperCard 的程式上寫出的小功能,就是 Ward Cunningham 對 Wiki 的最初構想。
1995年,Ward Cunningham 正式推出了第一個 Wiki 網站:WikiWikiWeb,方便程式設計師們進行思想交流。
關於為什麼要建立 Wiki 這一問題,Cunningham 有話要說:“
起初建立 Wiki,我的目的就是建立一個能夠將彼此經驗聯絡起來的環境,從而發現程式設計的模式語言
。”這個想法在他看來稀鬆平常。以至於後來接受採訪時,被問及是否考慮過為 Wiki 的概念申請專利,Cunningham 解釋說:“這個想法聽起來就像是沒人願意為之付費的東西。”
儘管 Ward Cunningham 不考慮為 Wiki 申請專利,但這並不表明他放棄了 Wiki。自Wiki 誕生之後,他就一直希望在全世界範圍內推廣 Wiki。
2001年,Cunningham 與他人合著了一本名為《The Wiki Way》的書,書中主要介紹瞭如何安裝、建立並管理 Wiki 系統。2011年,他又啟動了 Smallest Federated Wiki 專案——用於 Wiki 聯合的軟體平臺,他為 Wiki 新增了原始碼控制系統,以及其他軟體開發工具中的分叉功能……
至今,Ward Cunningham 仍在致力於推廣 Wiki 技術。
Cunningham 與物件導向程式設計
作為一名程式設計師,Ward Cunningham 幾乎對所有的程式設計模式都有所涉獵,包括物件導向和敏捷建模。
他支援物件導向程式設計中長期關注程式碼設計的實踐,更偏向於注重程式碼和人的關係。為了推動模式語言的運用,Cunningham 釋出了一個新的網站:
模式共享社群
,希望將不同作者的軟體模式集中在一起,展示現有模式之間的關係,以鼓勵使用者貢獻更多的模式,獲得更好的軟體。
Cunningham 與極限程式設計
在建立 Wiki 的前幾個月,Ward Cunningham、Kent Beck 一直與堅持軟體工程的教條主義者們爭論,爭論的內容主要在於是否實踐程式碼集體所有權。
Cunningham 認為,“程式碼集體所有權有很大的好處,不僅能夠降低風險,還可以提升開發效率……”而教條主義者們認為,“這簡直太荒謬了!實行程式碼集體所有權後,你永遠不會有責任。如果你沒有責任,你永遠不會有質量。唯一能讓你負起責任的方法就是承擔責任。如果你不想再讓一些人寫出 Bug,你就必須把這個責任放在他的身上……”雙方並沒有說服彼此,但這場爭論讓
Cunningham 更堅定了維護程式碼集體所有權的信念。
在設計 Wiki 的時候,Cunningham 認為 Wiki 也應該實現在大型程式碼庫中協作的過程。例如,你在一堆程式碼中發現了一個問題,並且知道這個問題的解決方案。但是當你想去解決這個問題的時候,必須同這些程式碼作者們去溝通、協商,這是一個非常困難且麻煩的過程。而實現程式碼集體所有,實際上就會大大地減少溝通的成本。
因此,Wiki 中應用了程式碼集體所有權的理念。Wiki “
開放
”的特點決定了當內容不完整或者出現錯誤的時候,所有人都可以用他們認為合適的方式加以編輯。
在 Wiki 中,所有參與者都對此負責
。
Cunningham 與《敏捷宣言》
“
我寧願轉向下一個想法,也不願為保持最後一個想法的純正而奮鬥
。”
敏捷真正帶給軟體的是一種能力,透過使團隊中的成員達成共同的目標,實現高質量的產品交付。“當《敏捷宣言》的四個價值觀被整齊地列在黑板上時,我們只是在感慨,雖然我們是十七個不同的個體,但寫在黑板上的內容是我們共同想要表達的東西。”回憶起2001年的雪鳥會議,Cunningham 這樣說。
而對於“
稀釋
”,也就是新想法的注入,他認為,這一行業是在不斷髮展的,如果不能不停地嘗試用多種方法去做事情,就不再會有新的創造力。因此,作為一名極限程式設計的狂熱愛好者,Cunningham 極力支援將敏捷與極限程式設計的工程實踐結合使用。
不論是 Wiki、物件導向程式設計、極限程式設計還是《敏捷宣言》,對於這些新的嘗試,Ward Cunningham 選擇迎難而上。對此,他也有自己的一套看法:“
如果你想要做的好,那就想辦法每天都去做
。選擇你害怕的事情,而不是選擇你擅長的事情,然後克服它,這就是推動我前行的動力。
”
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982050/viewspace-2772240/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 敏捷史話(五):敏捷已逝 —— Dave Thomas敏捷
- 敏捷史話(八):敏捷的破局之道——Martin Fowler敏捷
- 敏捷史話(四):敏捷是人的天性 —— Arie van Bennekum敏捷
- 敏捷史話(十一):敏捷宣言“間諜”——Steve Mellor敏捷
- 敏捷史話(九):用做麵包的方式做敏捷——Alistair Cockburn敏捷AI
- 敏捷史話(十四):敏捷之峰的攀登者 —— Jim Highsmith敏捷MIT
- 敏捷史話(十二):你現在接觸的敏捷也許是“黑暗敏捷”——Ron Jeffries敏捷
- 敏捷史話(十五):我發明了敏捷估算 Poker —— James Greening敏捷
- 敏捷史話(三):篤定前行的勇者——Ken Schwaber敏捷
- 同事有話說 | 那些所謂的敏捷儀式感敏捷
- 靈感來源:20個來自澳大利亞最優秀的網頁設計網頁
- 《人月神話》讀後感
- 靈感來源:36個移動APP介面設計欣賞APP
- 獨家對話RadonDB設計者 暢談開源背後的初心
- 敏捷史話(十三):我被 Facebook 解僱了——Kent Beck敏捷
- 敏捷史話(十六):我對《敏捷宣言》沒有半點貢獻—— Brian Marick敏捷
- ChatGPT 背後核心技術的白話版ChatGPT
- 家用遊戲機簡史 讀後感遊戲
- 無人機設計靈感來源於螞蟻、甲殼蟲等昆蟲無人機
- 《花100塊做個摸魚小網站! · 序》靈感來源網站
- Mission Impossible——《圖靈的祕密》讀後感圖靈
- 星巴克星感覺背後的專案管理(轉)專案管理
- 誰來背鍋?自動駕駛車禍背後的故事自動駕駛
- 用數字溝通——來自敏捷精靈的忠告敏捷
- 【民間圖靈獎】讀《圖靈的祕密》寫讀後感獲圖靈水杯圖靈
- “生存經營”類維京題材遊戲《米德加德部落》的三大靈感來源遊戲
- 鳳凰專案-遲來的讀後感
- 微軟開源 .Net 平臺的背後故事微軟
- 漫談 Greenplum 開源背後的動機
- C# 6.0的新特性靈感是來自Scala嗎?C#
- 圖靈讀者群辯論賽 賽後感圖靈
- 背後支援著 Instagram 的開源技術
- 招聘黑話大全(不來圖靈面試的注意啦)圖靈面試
- 一款靈感來源於《RuneScape》的掛機遊戲,獲得了《RuneSacpe》開發商的認可遊戲
- BookStack:一個開源的維基平臺
- 敏捷史話(六):也許這個人能拯救你的程式碼 —— Robert C. Martin敏捷
- 在美創科技收到的這一封感謝信的背後
- 西方文明來源於對話