論「趨勢驅動開發」(Hype-Driven Development
Andy Chen 點評:還記得中國 90 年代的 VCD 大戰嗎?這個老故事告訴我們不要盲目「跟風」,要另闢蹊徑,創造別人不敢想的好東西。不過現在有這樣一種軟體項目,全靠著當下最新的「潮流」,從不自創好東西出來。這篇文章就深入探討了這種現象;希望以後能有一些真正「自主」的好項目出來;)
很多軟體開發團隊常做出一些跟軟體架構和「技術堆棧」有關的決定。 這些決定往往基於不準確的個人觀點,社交媒體以及那些被看做「潮流」的東西,而不是認真的研究和一系列的深思熟慮。這種不良趨勢被稱為「趨勢驅動開發」(Hype-Driven Development,簡稱 HDD)。
新科技=新希望 ?
你可曾見過一個團隊把最新,最具人氣的技術應用到他們的項目中?試想有個團隊讀到了一篇在 Twitter 上很火的,介紹一項新技術的文章,之後又去參加了一場激烈討論它的討論會。很快,這個團隊就立刻把這項新科技整合到了他們的項目里。不過他們不但沒有收到好成果,還陷入了麻煩當中---他們的士氣開始低落,沒法做到「今日事今日畢」,甚至還只修復 bug 而從不添加新特性。
幾種 HDD 的出現方式
- 「Reddit 驅動開發」。這種方式主要是通過諸如像 Reddit, Facebook 和 Twitter 這樣的社交媒體的 Trends 來判斷選什麼技術合適。
- 會議驅動開發。 有一些成員在參加了一些會議之後就開始讓整個團隊開始冒險使用一個未經測試的技術。
- 被「說話最大聲的人」驅動的決定。有一些成員一天到晚對一項新技術的好處說個不停。
- 庫插件Gems 驅動開發。 有時候我們只會通過增加很多的庫和插件來解決一項問題,而不是自己增加能解決問題的幾行代碼。
HDD 是讓一個團隊遭殃的方式
趨勢驅動開發的最主要問題是,它容易讓一個團隊做出錯誤的決定。這些決定常常困擾一個開發團隊幾個月甚至幾年。在最壞的情況下,這些團隊甚至會全部改寫代碼。
HDD 的不同階段
第一步:真正的問題和解決辦法。
一個公司在軟體開發的過程中遇到了一個難題,而憑現有條件不能解決。這個公司馬上寫了一個庫插件,讓問題順利得以解決。
第二步:宣傳和關鍵詞。
這個團隊對他們的成果感到沾沾自喜,所以他們馬上發文向全世界的開發者們說明了他們的成果,並附上適當的關鍵詞。
第三步:開始瘋狂!
很快,其他開發者讀到了博文也參加了會議。他們開始使用這項新技術。因為種種原因,他們來不及考慮其中的利與弊就馬上動手開發。不過他們都希望它能對他們的項目有幫助。
第四步:失落
很快,他們開始感覺這項技術不但沒幫上忙,還帶來了很多無用功。這些團隊的士氣開始低落,開發速度減緩,甚至糟得要重寫代碼。他們感覺被騙了。
第五步:認清事實
最後,這個團隊開始認清事實。他們從這次失敗中吸取了教訓,變得更明智了---直到下一次「潮流」席捲而來。
引發 HDD 的幾個例子
- React.js: 顧名思義,Facebook 開發的一個 JavaScript 前端框架。關鍵詞:functional, virtual DOM, components.
- TDD is dead by DHH: 一個 Ruby on Rails 項目,意在「跳過測試」。關鍵詞:TDD is DEAD.
- Microservices: 把一個大項目(應用程序)分解成數個小服務。關鍵詞: scalability, loose coupling, monolith.
- NoSQL: 一個新一代的資料庫系統。關鍵詞:Scalability, BigData, High Performance.
總結
其實這樣的能引發 HDD 的例子數不勝數。就拿 JavaScript 領域來說,每天都有新的框架誕生;諸如 Node.js, React.js, Meteor.js 和前端 MVC。在這些新框架庫插件中,你最喜歡哪款?
原文:Hype Driven Development
推薦閱讀:
※酷站推薦 - wiki.openssl.org - OpenSSL wiki 安全?編程?手冊
※把Windows 10的Windows聚焦中的美圖Get出來!
※為什麼你無法說服你的同事使用TDD?
※最近做的一些事情
※好書連珠彈之一 - 演算法、jQuery及PHP