出版時間:2012-6 出版社:人民郵電出版社 作者:周愛民 頁數(shù):386 字?jǐn)?shù):519000
Tag標(biāo)簽:無
前言
易是變化 臺灣的高煥堂先生曾說架構(gòu)的要旨是“以序容易”,我解釋成“用規(guī)則來包容變化”,高老師說很合他的本意。這里的“易”,指的就是變化。既是變化,那當(dāng)然是艱難而復(fù)雜的了。然而我們通常說一件事易做或另一件事不易做,這里的“易”卻都是指簡單的意思。所以“易”既是無窮的復(fù)雜,也是至極的簡單,關(guān)鍵在于如何“容”它?!? 我們得看清什么是變化?!? 盲人摸象是一個很好的故事,因為每一個盲人的認(rèn)識都是其固見的、自見的,以及自證的真理。然而盲人們的觀點放在一起的時候,卻是一個笑話。因為看笑話的人看到了“變化”,而這些局外者原本認(rèn)為那頭大象是不變的、確定的、唯只一個形象的。同樣,面對任何我們所見的變化,或?qū)ψ兓械娜魏我粋€認(rèn)識,我們都認(rèn)為那不過是笑話。再深徹地透視這一點,其根本在于:我們也有一個對大象的“認(rèn)識”,只因為這一認(rèn)識看起來--或我們認(rèn)為--比那些盲人更為高明、正確,所以我們才別出了盲人,看到了笑話。 正是我們對一個事物固有的認(rèn)識,制造了盲人與盲人的笑話?!? 倘若我們的認(rèn)識是不可易變的,那么我們今天就已經(jīng)看到了真理,看透了世事萬象,我們已成至人,故而我們不需要存在亦無需進(jìn)化:一切于我們而言,必須靜止;一切于我們的認(rèn)識而言,不可復(fù)加;一切于我們的思維而言,不可偏側(cè)。而這,看起來不正是我們自盲了雙目,自演了笑話嗎? 反過來,我們得承認(rèn)變化的存在。我們所要做的,只是承認(rèn)自己是一個盲人,可以從一個方面去觸及這一事物,形成一個認(rèn)識,用一些規(guī)則、規(guī)格或概念去確指它。用同樣的方法,我們觸及這個事物的方方面面,進(jìn)而得到與這個事物最為接近的一個全像,這就是我們關(guān)于這一事物所有的、而又未盡的知識?!? 知音變而得律,有容則易?!? 簡也不是簡單 這本書是《大道至簡》(以下稱“《簡》”)的續(xù)作,那我又是怎么認(rèn)識《簡》的呢?究我們的認(rèn)識的根底來說,我們向來不是缺乏思考的。我們有著種種在實踐中的選擇,這些選擇是基于一些認(rèn)識的,而又產(chǎn)生了一些新的認(rèn)識。而我所有的醒覺,并不來源于對后一種認(rèn)識的反復(fù)持續(xù),反而在于對前一種--既有的認(rèn)識的觀察。 《簡》一書的源起,正是一次對“我在干什么”的發(fā)問。在這一反思中,我最終找到了我在工程中的種種位置,并將這些位置在我既有的知識中一一標(biāo)點。然后,我們就看到了那幅EHM(工程層狀模型)圖(參見“總論”圖0-1)。 追究起來,EHM圖以及它所代表的我的認(rèn)識已經(jīng)是8年前的事情了;完成《簡》一書,也已經(jīng)是6年前的事情了。6年前,我將《簡》作為電子版發(fā)布的時候,也同時得到了一個新的職務(wù):架構(gòu)師。然而如果你仔細(xì)地觀察EHM圖,就會發(fā)現(xiàn)它根本上是不能容納“架構(gòu)”這個角色與職責(zé)的。 “我在干什么”,仍然是我這6年來最主要的思考。事實上,這也促使我抬起頭來,觀察周圍營營碌碌的人們,了解他們在做什么,在圍繞什么去做,以及--也是最重要的是:他們得到了什么。如同《簡》中所說的愚公一家,數(shù)百年挖山不止,最終卻不得不筑關(guān)自守,我們是不是也一樣背離了初衷,成為一個不知所為的愚者? 《簡》事實上是打開了我思維的一扇門,讓我看到“我既有的那些東西”是何等粗糙,又曾經(jīng)是如何粗暴地塞入了我的頭腦。例如我在計算機專業(yè)中所學(xué)的第一門功課是《數(shù)據(jù)結(jié)構(gòu)》 ,這本書的第一頁便寫著:“用計算機解決具體問題,首先要加以抽象。”但十余年來,我從未思考過“什么是抽象”,又或者我的思維以及由此驅(qū)動著的軟件開發(fā)活動中“何處是抽象”。抽象被作為我們--程序員的一種事實的本能,或被馴育的技能塞入了我們的舉手投足,控制著我們而又讓我們無知無覺?!? 《簡》在這“無知無覺”的寧靜中輕一叩擊,“叮”的一聲,我的眼前便亮了。觀之簡,便在其原始的粗鄙;思之得,便在行道中的一凜?!? 沒有答案 《簡》一書只提出了現(xiàn)象,而無有答案。2009年在北京的QCon大會中,我跟幾位朋友談到過這個問題。我坦承這一事實:若《簡》尚有一點可讀處,便在于它粗暴而又挑釁地把種種問題擺在我們的面前。但對許多人來說,這毫無益處。因為他們或是已經(jīng)看了這些,或已經(jīng)為之麻木,或是在貪求某種法子來逃避這些東西帶來的影響?!? 總而言之,《簡》是“沒有答案”的。我彼時也是“沒有答案”的,我只是覺醒過來,并看到了一些事實上存在已久的東西而已。與此相同,《大道至易》這本書也“沒有答案”。盡管我提出了一些貌似答案的東西,但我確實是在保守地、謹(jǐn)慎地談?wù)撍鼈?,并且時時地(譬如現(xiàn)在)警示讀者:這是在某些背景下的一時之選?!? “講述某些我知道或想到的答案”是本書中最沒有價值的部分,即使它們存在,即使看起來“非常有用”,也僅是一時的表象而已?!? 與《簡》不同的是,《大道至易》提出了種種問題。就我的認(rèn)識來說,現(xiàn)象與問題之間是有著一個巨大的跨越的。例如《簡》中提到的“跑不動了”,它可以成為一種催人奮進(jìn)的現(xiàn)象,也可以是脫水這樣的問題。作為旁觀者,若只見現(xiàn)象,便只會責(zé)罵鞭策;若能見問題,則知道“一杯冰水”才是解決之道。在我看來,正確的問題與“解”之間的距離是可顯見的,而一個表面的現(xiàn)象或錯誤的問題,就離真正的解淼遠(yuǎn)而無際了?!? 《大道至易》是一本提出問題的書。 不設(shè)節(jié)名 正因為問題重要,而答案不重要,所以我認(rèn)為給每段內(nèi)容加以一個“有誘惑力的標(biāo)題”是多余的。因此本書分篇、章、節(jié)三級目錄,但節(jié)下的小節(jié)只有“一、二……九”這樣的中文標(biāo)號,沒有標(biāo)題,是謂“不設(shè)節(jié)名”?!? 事實上在我撰寫的過程中,這些小節(jié)多數(shù)是有標(biāo)題的。但最終我發(fā)現(xiàn),若是有一個標(biāo)題,則讀者便非常容易陷入這個標(biāo)題的“含義”之中,以之作為小節(jié)之綱要、主旨或主張。而這又正是我所不愿意的,因為我原本只是拿這些標(biāo)題來搭個架子而已。 也就是說,本書原本是只有骨架,而沒有血肉的。真正有血肉的,是你面對它的種種思考:那些沒有名字的小節(jié),是可以由你去補個標(biāo)題的;那些沒有定論的觀見,是可以由你去設(shè)定的。我要做的,只是把問題寫出來,把我的想法寫出來,把我的觀見寫出來。這些,既不是真理,也不是我自作了固見的認(rèn)識?!? 我之于盲人,相距并不甚遠(yuǎn),只是我驚覺我的盲目,故而對周圍多做了些探索;又或者我還能覺出蒙眼的黑布才是真實的問題,揭去之后,便一切歷歷在目、觀之若即了?!? 只不過一剎那,定是相當(dāng)刺目的?!? 不為讀者 對于許多讀者而言,本書的“總論”是一個過高的閱讀起點。因此本書的編審老師曾建議將“總論”移至最末一篇。為此我猶豫了很久,并也曾數(shù)次動搖。最終,我仍堅持將它作為本書的開篇。盡管編審在來信中寫道:“根據(jù)我們的經(jīng)驗,好的開頭對銷量的影響可能達(dá)到三成。” 這真的是不小的誘惑。 相比來說,本書的第一篇“似乎”更適合作為“好的開頭”--這也確實是編審老師們所推薦的。然而,事實上這一篇我是最晚成稿,寫得最累,以及認(rèn)為它是最不易讀的。盡管表面來看,讀者可以從這里輕松入手讀上幾頁,然后覺得這是本“還有點趣”的書。然而它到底寫的是什么呢? 離開總論的框架,所謂第一篇,不過是可以換得你的同感的抱怨而已。而真相,絕非如此。就寫書出書而言,我當(dāng)然可以用讀者喜歡的方式去寫作,并用讀者喜歡的方式去包裝那些篇章,然而這樣一來,讀者便會在“一開始”就失去整體的、系統(tǒng)性的認(rèn)識,并認(rèn)為這本書不過是又一本講述軟件工程的《大道至簡》?!? 我可以為了“讀者的口味”而改變這本書的著述體系嗎?這是我最終的設(shè)問。而我很快地給出了答案:不! 總論是本書所述思想的核心,而后續(xù)幾篇則是這一思想下的幾個視角。讓讀者拋開總論而去窺見某個視角,與盲其目使之摸象何異?與予其管使之窺豹何異?我在前言中所反對的思想與方法,何以成了我去爭取“讀者人數(shù)”與迎合“讀者口味”的手段?! 因此寫下這段文字,以此自勉:莫因讀者“買書如買紙”,便將書作了“字紙”去寫,又或?qū)髁?ldquo;紙頁”去賣?!? 既如此,便仍讓總論做了第一篇罷。這樣一來,即便讀者從它處讀起,也總還能時時記得:有一篇“總論”在前頭,或許蘊含著作者思想的主旨?!? 致謝 感謝所有的讀者、編者以及一直以來支持我的朋友們?!? 感謝孟巖先生為本書作序?!? 感謝圖靈出版公司?!? 感謝我的小學(xué)數(shù)學(xué)老師?!? 感謝Joy。En,……我最愛的妻。
內(nèi)容概要
《大道至易——實踐者的思想》可以看成是《大道至簡》的姊妹篇,是以軟件工程為體系、以組織結(jié)構(gòu)為視角,融合系統(tǒng)架構(gòu)師、項目管理者和軟件開發(fā)人員三種角色實踐的思想總成。本書討論這些思想,并陳述它們所基于的原則、背景與獲得過程。
《大道至易——實踐者的思想》適合各類工程管理人員、軟件開發(fā)人員和架構(gòu)師閱讀。
作者簡介
周愛民(Aimingoo),國內(nèi)軟件開發(fā)界資深軟件工程師,架構(gòu)師。有十余年的軟件開發(fā)、項目管理、團隊建設(shè)的經(jīng)驗,曾任盛大網(wǎng)絡(luò)平臺架構(gòu)師、支付寶業(yè)務(wù)架構(gòu)師等職。著有《Delphi源代碼分析》、《大道至簡》和《JavaScript語言精髓與編程實踐》等專著。
書籍目錄
目 錄
總論 領(lǐng)域角色的關(guān)注 1
第一節(jié) 什么是領(lǐng)域角色的關(guān)注 2
第二節(jié) 基于組織視角的觀察 11
第三節(jié) 工程的本質(zhì)問題是組織 25
第一篇 具體工程下的組織與行為
引言 管理中的邏輯 33
第一章 任人治事:組織行為的基本認(rèn)知 35
第一節(jié) 刺秦與滅秦 36
第二節(jié) 看到別人能做什么 43
第三節(jié) 要做事,不要管理 51
第四節(jié) 伯夷與叔齊是怎么死的 59
第二章 謀定后動:項目的存在權(quán) 67
第一節(jié) 試錯通常是無能的托辭 68
第二節(jié) 合法的山大王為什么沒能成功 78
第三節(jié) 自己想辦法 86
第三章 具體而微:工程是系統(tǒng)而不是事 93
第一節(jié) 做事的選擇 94
第二節(jié) 你要什么 102
附錄一 行在道上,從局部到全局 109
附錄二 本來面目——大教堂、集市,與作坊 111
附錄三 殺不死的人狼——我讀《人月神話》 113
第二篇 程序源流:從計算到系統(tǒng)(上)
引言 簡單的本源 117
第四章 計算系統(tǒng) 119
第一節(jié) 數(shù),以及對數(shù)據(jù)的性質(zhì)的思考 120
第二節(jié) 邏輯 126
第三節(jié) 抽象 129
第五章 語言及其面臨的系統(tǒng) 133
第一節(jié) 語言 134
第二節(jié) 從功能到系統(tǒng) 141
第六章 程序設(shè)計的核心思想 151
第一節(jié) 數(shù)據(jù)結(jié)構(gòu):順序存儲 153
第二節(jié) 數(shù)據(jù)結(jié)構(gòu):散列存儲 160
第三節(jié) 執(zhí)行體及其執(zhí)行過程中的環(huán)境 167
第四節(jié) 語法樹及其執(zhí)行過程 174
第五節(jié) 對象系統(tǒng):表達(dá)、使用與模式 181
第三篇 程序源流:從計算到系統(tǒng)(下)
第七章 應(yīng)用開發(fā)基礎(chǔ) 199
第一節(jié) 應(yīng)用開發(fā)的背景與成因 200
第二節(jié) 應(yīng)用開發(fā)技術(shù) 207
第三節(jié) 開發(fā)視角下的工程問題 216
第四節(jié) 應(yīng)用程序設(shè)計語言的復(fù)雜性 223
第八章 系統(tǒng)的基礎(chǔ)部件 231
第一節(jié) 分布 232
第二節(jié) 依賴 241
第三節(jié) 消息 245
第四節(jié) 系統(tǒng) 250
第九章 系統(tǒng)的基本組織方法與原理 253
第一節(jié) 行為的組織及其抽象 254
第二節(jié) 領(lǐng)域間的組織 257
附錄一 “主要編程范式”及其語言特性關(guān)系 273
附錄二 繼承與混合,略談系統(tǒng)的構(gòu)建方式 275
附錄三 像大師們一樣思考——從“UML何時死掉”談起 277
附錄四 VCL已死,RAD已死 279
第四篇 架構(gòu)的思想與指導(dǎo)原則
引言 架構(gòu)師的思維 285
第十章 你所關(guān)注的系統(tǒng) 287
第一節(jié) 了解系統(tǒng)的過程 288
第二節(jié) 知識的構(gòu)建 295
第三節(jié) 最初的事實 307
第十一章 架構(gòu)是過程,而非結(jié)果 315
第一節(jié) 架構(gòu)師的能力結(jié)構(gòu) 316
第二節(jié) 系統(tǒng)架構(gòu)與決策 324
第三節(jié) 架構(gòu)的表達(dá)與邏輯 338
第十二章 架構(gòu)原則,技藝、藝術(shù)與美 355
第一節(jié) 架構(gòu)原則 356
第二節(jié) 技藝、藝術(shù)與美 368
附錄一 做人、做事,做架構(gòu)師——架構(gòu)師能力模型解析 373
附錄二 專訪:談企業(yè)軟件架構(gòu)設(shè)計(節(jié)選) 375
參考資料 377
圖表索引 382
章節(jié)摘錄
版權(quán)頁: 插圖: (1)記事本作為操作系統(tǒng)的默認(rèn)組件,其外觀表現(xiàn)和交互特性應(yīng)當(dāng)是由系統(tǒng)的全局設(shè)置來控制的。對于前者,例如桌面主題導(dǎo)致的記事本前景與背景變化;對于后者,例如系統(tǒng)默認(rèn)打印設(shè)備的設(shè)置,或者輸入法設(shè)置。 (2)如果操作系統(tǒng)的默認(rèn)設(shè)置不能影響到記事本,則系統(tǒng)的其他默認(rèn)組件也會存在類似的問題或需求,這意味著整體實施的復(fù)雜度會增加。 (3)類似于jEdit、EditPlus等產(chǎn)品的用戶只是操作系統(tǒng)用戶群體的一個較小子集,其需求不具有代表性。 (4)以記事本通常處理的文本長度來說,是不需要用顏色來區(qū)分文本的不同部分的。 對于項目管理角色來說,他否決這項需求的理由會更簡單直接: (1)在當(dāng)前的記事本版本中,未定義該項特性; (2)該項特性與原始的設(shè)定“文本處理工具”沒有必然關(guān)系,可以延后決定; (3)該項特性在來自產(chǎn)品、市場等各方的報告中有明顯分歧,存在實施風(fēng)險; (4)在項目實施階段,增加該特性對項目過程控制存在不確定的影響。 然而與上述兩類思考不同,技術(shù)實現(xiàn)角色將更多地關(guān)注實現(xiàn)的細(xì)節(jié)問題。其中一類問題是與項目經(jīng)理共同關(guān)注的,通常與項目背景以及實施環(huán)境有關(guān)系。例如: (1)可能的代碼量與要求的代碼質(zhì)量; (2)后續(xù)維護(hù)人員的水平以及因此所需要的注釋詳細(xì)程度; (3)開發(fā)環(huán)境與測試環(huán)境的部署以及性能。 當(dāng)然,類似于在何種團隊中工作,以及開發(fā)部門中是否可以玩桌游等,也是技術(shù)實現(xiàn)角色經(jīng)常關(guān)注的問題。不過這類問題的特點是:與具體項目并沒有關(guān)系,因此大多數(shù)情況下會由公司的技術(shù)部門或整體組織來平衡。 在具體的項目中,開發(fā)人員通常更關(guān)注的是另一類更加細(xì)節(jié)的專業(yè)問題,例如: (1)產(chǎn)品性能的具體要求,例如運行在何種設(shè)備上,以及定量的穩(wěn)定性要求如何; (2)采用的語言、框架、程序庫,其技術(shù)復(fù)雜度如何,以及資料是否翔實等; (3)待處理的標(biāo)準(zhǔn)文本格式規(guī)范,例如UTF—8編碼以及BOM頭規(guī)格; (4)需測試操作系統(tǒng)初始環(huán)境中所有類型的文本,包括.ini、.xml和.reg等; (5)該產(chǎn)品應(yīng)由多行(ES_MULTILINE)的Edit來實現(xiàn)。
媒體關(guān)注與評論
本書作者站在架構(gòu)師的高度上來看待軟件開發(fā),甚至更大的意義上,看待以軟件開發(fā)能力為核心的企業(yè)在產(chǎn)品戰(zhàn)略、人力配置和文化方面的組織問題。作者在過去幾年里,先后在兩家超大規(guī)模互聯(lián)網(wǎng)企業(yè)中做架構(gòu)師,他在其中的矛盾、迷惘、掙扎和成就是這本書的思想源泉,而他對于架構(gòu)師角色的實習(xí)和領(lǐng)悟,也是這本書的價值所在。作者采取的方式,就是老老實實把自己的思維過程和喃喃自語都很原生態(tài)地記錄下來,從而形成一本"心語"之作。因此,如果讀者也能夠"心心相印",潛下心來仔細(xì)品讀這本書,那么就相當(dāng)于跟作者一起進(jìn)行了一段旅行對話,或者,一起在思維的教武場里殺個幾進(jìn)幾出。或許這種如切如磋、如琢如磨、反復(fù)捶打、反復(fù)鍛造的風(fēng)格,倒確實能夠幫助有心的讀者獲得一些架構(gòu)設(shè)計的經(jīng)驗。 因此,無論從內(nèi)容上,還是從行文風(fēng)格上,這本書都是非常獨特的,也有其獨特的價值。作者的作品,一向是長銷之作,其價值也往往需要一段時間才能被真正認(rèn)識,我不敢說自己能夠在短暫的閱讀當(dāng)中充分理解這本書,但是我相信其中所蘊藏的價值和誠意?!? ——孟巖(序作者)
名人推薦
本書作者站在架構(gòu)師的高度上來看待軟件開發(fā),甚至更大的意義上,看待以軟件開發(fā)能力為核心的企業(yè)在產(chǎn)品戰(zhàn)略、人力配置和文化方面的組織問題。作者在過去幾年里,先后在兩家超大規(guī)?;ヂ?lián)網(wǎng)企業(yè)中做架構(gòu)師,他在其中的矛盾、迷惘、掙扎和成就是這本書的思想源泉,而他對于架構(gòu)師角色的實習(xí)和領(lǐng)悟,也是這本書的價值所在。作者采取的方式,就是老老實實把自己的思維過程和喃喃自語都很原生態(tài)地記錄下來,從而形成一本“心語”之作。因此,如果讀者也能夠“心心相印”,潛下心來仔細(xì)品讀這本書,那么就相當(dāng)于跟作者一起進(jìn)行了一段旅行對話,或者,一起在思維的教武場里殺個幾進(jìn)幾出。或許這種如切如磋、如琢如磨、反復(fù)捶打、反復(fù)鍛造的風(fēng)格,倒確實能夠幫助有心的讀者獲得一些架構(gòu)設(shè)計的經(jīng)驗。 因此,無論從內(nèi)容上,還是從行文風(fēng)格上,這本書都是非常獨特的,也有其獨特的價值。作者的作品,一向是長銷之作,其價值也往往需要一段時間才能被真正認(rèn)識,我不敢說自己能夠在短暫的閱讀當(dāng)中充分理解這本書,但是我相信其中所蘊藏的價值和誠意。 ——孟巖
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載