軟體產品的終極目標是為了實現使用者需求從而滿足人們的需要。也正是為了不斷滿足人們的需要使得軟體行業不斷向前發展。比如,新的演算法(mpeg-1、mpeg-2、mpeg-4、h.264、……)等的出現都在當時為了滿足不同的需要而被發明。然而,人們的需要(行業發展的外部動力)卻並非是軟體技術發展的唯一驅動力,因為它無法解釋為什麼業內的程式語言、軟體平台與框架等會層出不窮,有的甚至給人「重新發明輪子」的感覺。如何判斷「新輪子」的確是必要的呢?這與本文想重點關注的另外三大驅動力有關,重點關注它們的原因源於其與我們的日常工作更加息息相關。
我認為,軟體技術發展的另外三大驅動力分別是簡化、復用和美化(行業發展的內部動力)。「新輪子」是否必要的關鍵,是看它在簡化、復用和美化這三個緯度上是否存在優於「老輪子」的內容。注意,這三大驅動力是站在程式設計師的角度去觀察的,而不是從軟體產品的終端使用者角度。因為終端使用者只關心產品的功能與使用體驗,而不關注產品的開發過程,更不關心產品是用「老輪子」抑或「新輪子」構建的。
簡化是應對日益複雜和規模龐大軟體的核心有效手段,因為「複雜的問題總是以簡單的方法解決的」(引自《大師亞當斯》)。簡化的關鍵不是「拍腦袋」做到哪是哪,而需運用我們的洞察力去找到解決問題的關鍵路徑、去繁求簡。然而,洞察力的獲得除了需要在某一技術方向上的長期積累外,更需要我們不斷堅持就所面臨的問題全神貫注地思考,洞察力也因此成為了行業的稀缺資源,也決定了真正能簡化軟體設計與實現的人少之又少。
簡化在業內有各種不同的表現形式,除了有方**(比如,領域驅動開發、物件導向程式設計、設計模式和解耦),更有通過不同形式和程度的抽象(比如,c程式語言之於組合語言、c++程式語言之於c程式語言、各種軟體平台與框架)。有趣的是,這些表現形式在簡化的道路上自身卻帶來了更大的複雜度(複雜度是守恆的?)。
復用的好處相信眾人皆知,這使得我們因避免「重新造(相同的)輪子」而獲得更高的開發效率和更高質的產品。復用這一驅動力使得業內出現各種不同的開源軟體平台與框架,也使得軟體企業長期致力於打造自有產品的通用軟體平台與框架。對於複雜軟體來說,競品的背後實際上是軟體平台與框架之爭。
復用的表現形式不只是構建軟體平台與框架,還有各種程式語言的「語法糖」等。
簡單是一種美,但美不只在於簡單,更有軟體的內在結構與**的表現形式,美化因此也成為了驅動軟體技術發展的另一大動力。我認為軟體之美在於:1)對適應將來軟體功能變化而導致的**變更保持一定的彈性。這種適應能力其實是對軟體內在結構的合理性提出了要求。2)**能作為程式設計師間流暢溝通的載體與橋梁。這是對**的表現形式所提出的要求,也間接地指出程式設計的目的不只是提供api或實現軟體功能。美化工作的不到位是很多軟體開發團隊深陷質量困境的重要原因。
現實中,軟體技術的進步其實是簡化、復用和美化三大驅動力的綜合結果,因為三者間並非完全正交。比如,簡化的結果可能也實現了美化,美化的結果可能也帶來了簡化,復用又為我們帶來了簡化。無論如何,通常其中乙個是作為技術發展的主導動機。
了解三大驅動力有助於我們更理性地看待軟體技術的發展,同時作者也想暗示,我們在軟體開發工作中應從簡化、復用和美化三方面著手,而不能停留在「軟體能用就行」
這種「原始需求」上。否則,我們的行為就是不符合軟體技術發展的「潮流」哦!
軟體技術發展的驅動力
軟體產品的終極目標是為了實現使用者需求從而滿足人們的需要。也正是為了不斷滿足人們的需要使得軟體行業不斷向前發展。比如,新的演算法 mpeg 1 mpeg 2 mpeg 4 h.264 等的出現都在當時為了滿足不同的需要而被發明。然而,人們的需要 行業發展的外部動力 卻並非是軟體技術發展的唯一驅動力,...
技術與規則的驅動力
我們追加的20億元人民幣在未來5年內必須花光,而且必須投入在技術 創新 人才引進 生態鏈建設上面。在 網5周年的慶典上,馬雲當眾宣布。網產品研發中心副總裁路鵬感到了巨大的責任。路鵬去年從美國矽谷歸來加盟 網,負責 網的整個平台架構以及技術後台。有著美國計算機博士背景的路鵬,曾經在甲骨文這樣的跨國公司...
業務發展如何利用創新驅動力量?
前幾天看到一組資料,中國速食麵市場較鼎盛時期已幾乎縮減一半,這組資料當時給筆者帶來較大衝擊,在筆者印象裡,現在工作及生活節奏越來越快,方便食品不應該萎縮至此。當看到另一組資料時,筆者找到了答案 快餐訂餐業務在飛速度增加。各種新技術帶給各個行業的衝擊如此顯而易見。經濟學人智庫 the economis...