有幸为鲍勃大叔的封山之作《匠艺整洁之道》写了推荐序,顺手赠书!
如果你已經(jīng)寫了好幾年代碼,你寫的軟件也已經(jīng)穩(wěn)定運(yùn)行了很久,你甚至知道有多少用戶在使用你的系統(tǒng),包括你的女友、家人和同學(xué)。讓系統(tǒng)成功部署和運(yùn)轉(zhuǎn)能給我們這些程序員帶來(lái)滿足感、成就感,但很難持續(xù)太久。
艱難編程一整天以后,當(dāng)你回到家里時(shí),你是會(huì):
對(duì)著鏡子里的自己說(shuō):“今天干得真棒!”?
還是會(huì)覺(jué)得自己只是流水線中的“碼農(nóng)”,深陷低水準(zhǔn)工作的泥潭?
你是否開(kāi)始信奉,只有降低質(zhì)量才能趕上進(jìn)度,而且這已經(jīng)成為團(tuán)隊(duì)的潛規(guī)則;你們只差喊出這句話:生產(chǎn)力與質(zhì)量就是成反比的!!!
這還不是最糟糕的。焦慮、困惑、內(nèi)卷將會(huì)接踵而至——35歲職業(yè)分水嶺迫在眉睫,會(huì)很多時(shí)髦語(yǔ)言、框架的新同事不斷涌現(xiàn),最近你總在考慮:到底是該要求老板提升你做leader,還是出去創(chuàng)業(yè)試試?
其實(shí),你還有一個(gè)選擇,從碼農(nóng)走向匠師!
因?yàn)?#xff0c;匠師有自己的驕傲,可以用驕傲打敗焦慮、趕走內(nèi)卷、跨越年齡!而讓一個(gè)編碼匠師驕傲的,永遠(yuǎn)只有一件事,絕不是寫出什么系統(tǒng),而是自己寫系統(tǒng)的方式。
▊ 你最終為誰(shuí)編程——老板?用戶?不,是社會(huì)!
21世紀(jì),為了生存,我們的社會(huì)開(kāi)始由技術(shù)主導(dǎo),這是人類歷史上首次出現(xiàn)的狀況。
軟件入侵了現(xiàn)代生活的方方面面,從早晨用手機(jī)刷開(kāi)地鐵閘機(jī)到中午掃碼付午餐錢,從在淘寶買衣服到用滴滴打車。隨著軟件不斷深入鐵路和飛機(jī)等基礎(chǔ)設(shè)施、銀行等商業(yè)機(jī)構(gòu),甚至深入政府,發(fā)生“災(zāi)難”的風(fēng)險(xiǎn)在不斷增加。
這意味著我們這些程序員的失誤有可能導(dǎo)致:
一次登錄失敗
一筆資金丟失
一次剎車失效
甚至是以生命作為代價(jià)
……
這不是危言聳聽(tīng),波音737 MAX 8的一個(gè)Bug讓我們這個(gè)社會(huì)損失了兩架1.2億美元的飛機(jī),奪去了338條鮮活的生命!
在此背景下,與其期待漫威英雄拯救世界,不如祈禱這些系統(tǒng)背后的程序員都能真正承擔(dān)責(zé)任。
尤其是35歲前后的你,正值年富力強(qiáng),卻被這個(gè)數(shù)字詛咒,誤以為軟件開(kāi)發(fā)生涯已接近尾聲。正好相反,無(wú)論是你還是你的Boss,都需要及早樹(shù)立“匠師”思維。因?yàn)椤敖硯煛币馕吨妓嚫叱⒊删头欠驳男屑摇朴霉ぞ?#xff0c;熟悉行業(yè),為自己的工作而自豪,滿懷尊嚴(yán)和專業(yè)精神,值得信賴——他們是人類社會(huì)這個(gè)脆弱系統(tǒng)最后的夕陽(yáng)武士。
要成為他們,意味著:
當(dāng)寫下一行代碼,實(shí)現(xiàn)一個(gè)函數(shù),提供一個(gè)接口時(shí),我們清楚地明白這意味著什么!
當(dāng)產(chǎn)出代碼時(shí),保證代碼正確,保證所有繼承它的人都可以輕松了解它的作用!
當(dāng)提供接口時(shí),我們可以自豪地宣稱自己提供的接口好用、易用、難于誤用!
不要再為35歲恐慌!你不屑于做管理,你也對(duì)開(kāi)公司不感興趣,上天注定你只能成為下一個(gè) “匠師”。那是程序世界的最高境界,不僅值得你孜孜求索,也并非遙不可及。
▊ 拒絕成為“碼農(nóng)”!全面進(jìn)化成“編碼匠師”!!!
軟件工程師可能是我們這個(gè)時(shí)代最接近工匠的一個(gè)職業(yè),因?yàn)?strong>“代碼是寫給人看的,不是寫給機(jī)器看的,只是計(jì)算機(jī)可以執(zhí)行而已”。
一名好的工程師,應(yīng)該有把“代碼運(yùn)行起來(lái)”這件事情更高的要求,用工匠般的心看待自己寫出的代碼,堅(jiān)持聚焦在產(chǎn)品與系統(tǒng)的交付上,用紀(jì)律、標(biāo)準(zhǔn)和職業(yè)操守嚴(yán)格約束自己,最大限度地生產(chǎn)健壯、高容錯(cuò)和高效的軟件。
紀(jì)律,是探索高效率和高質(zhì)量的系統(tǒng)交付準(zhǔn)則,堅(jiān)持測(cè)試驅(qū)動(dòng)、系統(tǒng)設(shè)計(jì)、系統(tǒng)重構(gòu)、結(jié)對(duì)編程、驗(yàn)收測(cè)試等工作流程。紀(jì)律決定了技術(shù)團(tuán)隊(duì)交付效率與交付質(zhì)量的底線。
標(biāo)準(zhǔn),是對(duì)研發(fā)質(zhì)量、測(cè)試質(zhì)量、研發(fā)效率、技術(shù)生產(chǎn)力、持續(xù)改進(jìn)等建立量化指標(biāo)。全面梳理“冒煙測(cè)試通過(guò)率是多少?”“千行缺陷率是多少?”“用例復(fù)用率是多少?”“全量用例回歸時(shí)間是多少?”等一系列指標(biāo)的合格線,以便不斷評(píng)估、改進(jìn),標(biāo)準(zhǔn)指導(dǎo)研發(fā)的效率與質(zhì)量不斷進(jìn)步。
職業(yè)操守,是我們必須堅(jiān)守的道德準(zhǔn)則與底線,注釋、文檔、思考、交流、承諾、協(xié)作、自動(dòng)控制,每一行代碼里,無(wú)一不體現(xiàn)著我們技術(shù)人的職業(yè)操守。唯有堅(jiān)持“我不寫有害的代碼”“我生產(chǎn)的代碼將永遠(yuǎn)是我最好的作品”“我永遠(yuǎn)不會(huì)停止學(xué)習(xí)和改進(jìn)我的技藝”等職業(yè)操守,堅(jiān)信我們是在用代碼編寫規(guī)則,掌控互聯(lián)網(wǎng)運(yùn)行的規(guī)律,才能守正創(chuàng)新,行穩(wěn)致遠(yuǎn)。
那么,該如何認(rèn)識(shí)紀(jì)律、標(biāo)準(zhǔn)與職業(yè)操守,并將其應(yīng)用在工作之中呢?
Clean Code、Clean Agile、《架構(gòu)整潔之道》等經(jīng)典圖書的作者——(羅伯特?C. 馬丁),35歲之前他在寫代碼,35歲之后他寫出了更好的代碼,第二個(gè)35年后,他在教全世界程序員怎么寫好代碼,而且將所有答案存放于封山之作——《匠藝整潔之道》中。
從最開(kāi)始的Clean Code關(guān)注“好代碼”,到現(xiàn)在《匠藝整潔之道》關(guān)注“好匠藝”, 鮑勃大叔十年磨一劍,給我們帶來(lái)了軟件開(kāi)發(fā)領(lǐng)域幾十年的匠藝追求。
隨著對(duì)軟件職業(yè)做出嚴(yán)格定義的難度正在增加。我們也許可以根據(jù)所創(chuàng)建的軟件的關(guān)注重點(diǎn),采用幾種不同的路徑。但是,要把關(guān)鍵軟件和非關(guān)鍵軟件區(qū)分開(kāi)來(lái)可能并不那么容易。
依靠領(lǐng)袖的日子已一去不返。每名程序員都各自做自己眼中正確的事已經(jīng)不夠。紀(jì)律、標(biāo)準(zhǔn)和對(duì)職業(yè)操守的要求將會(huì)出現(xiàn)。今天擺在我們面前的問(wèn)題是,讓程序員自己來(lái)定義這些紀(jì)律、標(biāo)準(zhǔn)和職業(yè)操守,還是讓那些不了解我們的人強(qiáng)加給我們。
唯有改變我們這些程序員的工作方式,提高紀(jì)律性、職業(yè)操守和標(biāo)準(zhǔn),才能支撐起紙牌屋,防止它倒塌。
……
鮑勃大叔用凈心實(shí)事求是,正本清源,全面剖析了尚處于青春期的技術(shù)行業(yè),每一位從業(yè)者都能從中得到表象背后的“行業(yè)機(jī)密”。
鮑勃大叔用真心小處見(jiàn)大、以微知著,全面展現(xiàn)自己幾十年上下求索得出的從個(gè)體到集體的匠藝思考,打破技術(shù)人頭上的“緊箍咒”,讓技術(shù)人為自己的工作感到驕傲和自豪。
鮑勃大叔用熱心身體力行、諄諄教誨,把自己幾十年來(lái)在代碼編寫、敏捷開(kāi)發(fā)方面經(jīng)驗(yàn),“抽象”為程序員要學(xué)會(huì)的紀(jì)律、標(biāo)準(zhǔn)和職業(yè)操守,并毫無(wú)保留地傾囊相授,指導(dǎo)程序員寫出優(yōu)秀的代碼、創(chuàng)建出色的系統(tǒng),成為真正的“匠師”!!!
鮑勃大叔用好奇心“碼”耕不輟,不斷戰(zhàn)斗,閱讀本書,你將從最優(yōu)秀、最有經(jīng)驗(yàn)、最有戰(zhàn)斗力的人身上找到改進(jìn)自己的方法,找回編碼的激情,激起提升手藝的欲望,獲得無(wú)盡的精力,無(wú)所畏懼地追求完美。
唯有不停磨煉匠藝,糾正“35歲轉(zhuǎn)管理”這樣的行業(yè)浮躁心態(tài),才能走向真正的工匠精神之路。
本書結(jié)構(gòu)
本書分為三個(gè)部分:紀(jì)律、標(biāo)準(zhǔn)、職業(yè)操守。
紀(jì)律是最基礎(chǔ)的一層。這個(gè)部分關(guān)注實(shí)用性、技術(shù)性和規(guī)范性。閱讀和理解這個(gè)部分,各類程序員都能從中受益。這部分內(nèi)容配了一些視頻,以展示測(cè)試驅(qū)動(dòng)開(kāi)發(fā)節(jié)奏和重構(gòu)紀(jì)律。文本部分即旨在展示這種節(jié)奏,但還是視頻比較有效。
標(biāo)準(zhǔn)是中間層次。這部分概括了世界對(duì)程序員這行的期望。管理者應(yīng)該好好閱讀,從而了解對(duì)專業(yè)程序員應(yīng)有的期望。
職業(yè)操守在最高層。這部分闡述了編程職業(yè)的道德背景。它以誓言或一套承諾的形式體現(xiàn),其中包括大量關(guān)于歷史與哲學(xué)的話題。程序員和管理者都應(yīng)該閱讀這部分內(nèi)容。
本書是為程序員和管程序員的人寫的。但在另一種意義上,本書是為整個(gè)人類社會(huì)寫的。因?yàn)檎俏覀冞@些程序員恰好處于這個(gè)社會(huì)的支點(diǎn)上。
作者簡(jiǎn)介
羅伯特?C. 馬丁(鮑勃大叔),軟件開(kāi)發(fā)行業(yè)領(lǐng)軍人物,曾任C++ Report雜志主編、敏捷聯(lián)盟首任主席、Object Mentor公司總裁,面向?qū)ο笤O(shè)計(jì)、模式、UML、敏捷方法學(xué)和極限編程領(lǐng)域的資深顧問(wèn)。
1964年,年僅12歲的就已寫下他的第一行代碼。他自1970年起從事程序員職業(yè)。他與人合辦了cleancoders.com網(wǎng)站,為軟件開(kāi)發(fā)者提供在線視頻培訓(xùn)服務(wù)。他還創(chuàng)辦了Uncle Bob咨詢有限公司,為分布于世界各地的大公司提供軟件咨詢、培訓(xùn)和技能培養(yǎng)服務(wù)。同時(shí),他也供職于芝加哥的軟件咨詢企業(yè)8th Light,任大匠(Master Craftsman)一職。
馬丁先生在多本行業(yè)雜志上發(fā)表過(guò)數(shù)十篇文章,是各種國(guó)際性會(huì)議和行業(yè)活動(dòng)講壇上的常客。他也是cleancoders.com網(wǎng)站上廣受贊譽(yù)的多個(gè)系列視頻的創(chuàng)作者,也是Designing Object-Oriented C++ Applications Using the Booch Method 以及 Jolt 獲獎(jiǎng)圖書 Agile Software Development, Principles, Palterns,and Practices,Clean Code 等暢銷書作者。
譯者簡(jiǎn)介
韓磊,IT產(chǎn)品與運(yùn)營(yíng)專家、IT圖書專業(yè)譯者,譯有《代碼整潔之道》《夢(mèng)斷代碼》《C#編程風(fēng)格》等多部計(jì)算機(jī)圖書。曾擔(dān)任CSDN副總經(jīng)理、《程序員》總編輯、廣東二十一世紀(jì)傳媒股份有限公司新媒體事業(yè)部總經(jīng)理等職,現(xiàn)任AR初創(chuàng)企業(yè)亮風(fēng)臺(tái)廣州公司總經(jīng)理。
中外匠師如此評(píng)價(jià)
感謝鮑勃大叔,也感謝本書的譯者韓磊,感謝你們給中國(guó)的軟件工程師帶來(lái)這么好的一本書!
——章淼 BFE開(kāi)源項(xiàng)目發(fā)起人、《代碼的藝術(shù)》作者
向每一個(gè)工程師、每一個(gè)技術(shù)管理者鄭重推薦《匠藝整潔之道》,希望你能有收獲,也和每一個(gè)致力于提升研發(fā)效率與質(zhì)量的技術(shù)人,一起共勉!
——沈劍 公眾號(hào)“架構(gòu)師之路”作者
鮑勃大叔給我們帶來(lái)了軟件開(kāi)發(fā)領(lǐng)域幾十年的匠藝追求,這份凈心,對(duì)于尚處于青春期的技術(shù)行業(yè),是每一位從業(yè)者必要的修煉。只有不停磨煉匠藝,糾正“35歲轉(zhuǎn)管理”這樣的行業(yè)浮躁心態(tài),從而走向真正的工匠精神之路。
——肖然 Thoughtworks全球數(shù)字化轉(zhuǎn)型專家、中國(guó)敏捷教練企業(yè)聯(lián)盟秘書長(zhǎng)
這本新書一如既往地精彩,它通俗易懂又發(fā)人深省,如果你是一位對(duì)于寫出好的程序有更高要求的程序員:不僅僅當(dāng)成一個(gè)朝九晚五的工作,而是一門手藝,甚至一門藝術(shù),你會(huì)喜歡這本書的。
——黃東旭 PingCAP聯(lián)合創(chuàng)始人兼CTO
我們這一代工程師是幸福的,因?yàn)橛絮U勃大叔這樣的大師一直引領(lǐng)著我們,如果你現(xiàn)在正在匠師之路上,那就趕緊打開(kāi)《匠藝整潔之道》吧!
——孫玄 奈學(xué)科技創(chuàng)始人兼CEO、58集團(tuán)前技術(shù)委員會(huì)主席
如之前的Clean系列圖書一樣,當(dāng)我遇到困惑的時(shí)候,也會(huì)再翻出來(lái)尋找一些前人的啟發(fā)。如果你跟我一樣,打算在軟件行業(yè)奮斗一生,那么這樣的書,推薦你也擁有一本。
——翟永超 公眾號(hào)“程序猿DD”主理人、《Spring Cloud微服務(wù)實(shí)戰(zhàn)》作者
它是一本類似于24條軍規(guī)的書,重申現(xiàn)代世界實(shí)際構(gòu)建者—也就是我們,我們這些工程師應(yīng)該遵守的職業(yè)紀(jì)律,它幫助我們面對(duì)這份職業(yè)的責(zé)任,同時(shí)幫助我們提高作為工程師或者管理者的上限。
讀讀此書吧,軟件工程已經(jīng)不僅僅是編碼就足夠了,而它將會(huì)幫到你。
——彭哲夫(CMGS) Garena高級(jí)軟件工程師
開(kāi)發(fā)者與其追逐技術(shù)熱點(diǎn),不如修煉內(nèi)功、提升技藝水平。而決定技藝水平下限的正是紀(jì)律、標(biāo)準(zhǔn)、原則和職業(yè)操守這些軟實(shí)力。鮑勃大叔的新書《匠藝整潔之道》是這樣一本好書,幫助開(kāi)發(fā)者提高能力基線和專業(yè)精神,產(chǎn)出健壯、高容錯(cuò)和高效率的軟件,更好地服務(wù)社會(huì),為社會(huì)創(chuàng)造更多價(jià)值。
——丁宇 阿里云云原生應(yīng)用平臺(tái)總經(jīng)理
我們?nèi)粘?duì)著需求文檔來(lái)完成項(xiàng)目,也許并不困難,但真正難的是軟件設(shè)計(jì)、代碼細(xì)節(jié),以及寫出充滿工程理念、可靠、健壯的應(yīng)用。工作10余年的我,現(xiàn)在仍然會(huì)對(duì)軟件工程感興趣,我堅(jiān)信它是提升整體工業(yè)水平的基礎(chǔ)。讓我們?cè)俅螘晨旄惺苓@本書吧!
——毛劍 Bilibili基礎(chǔ)架構(gòu)負(fù)責(zé)人
寫代碼是件容易的事情,但是寫出好代碼卻是件非常難的事情,它需要編寫者具備大量的實(shí)踐經(jīng)驗(yàn),以及得到良好的指導(dǎo)。鮑勃大叔把自己幾十年的經(jīng)驗(yàn)“抽象”為程序員要學(xué)會(huì)的編程紀(jì)律、標(biāo)準(zhǔn)和職業(yè)操守,指導(dǎo)程序員成為真正的“匠人”—寫出優(yōu)秀的代碼、創(chuàng)建出色的系統(tǒng),更重要的是,為自己的工作感到驕傲和自豪!
——?jiǎng)⑿馈BM前架構(gòu)師、公眾號(hào)“碼農(nóng)翻身”作者
這本書深入淺出剖析測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(TDD)、敏捷技術(shù)應(yīng)用實(shí)踐、協(xié)同編程、架構(gòu)至簡(jiǎn)設(shè)計(jì)等技術(shù)整潔方法論,讓讀者能真正掌握架構(gòu)整潔設(shè)計(jì)的哲學(xué)本質(zhì),從而在面向不同業(yè)務(wù)場(chǎng)景時(shí),都能夠給出優(yōu)雅的架構(gòu)整潔解決方案,使得企業(yè)真正降本增效。本書是架構(gòu)整潔設(shè)計(jì)實(shí)踐類好書,特推薦之。
——孫玄 奈學(xué)科技創(chuàng)始人兼CEO、58集團(tuán)前技術(shù)委員會(huì)主席
你看過(guò)《代碼整潔之道》嗎?它的作者是鮑勃大叔,這本《匠藝整潔之道》是他的封山之作,我看完之后被深深地吸引。特別力薦給那些追求代碼優(yōu)美、高質(zhì)量和高效率的程序員朋友們。
——程軍 餓了么前技術(shù)總監(jiān)、公眾號(hào)“軍哥手記”主理人
從《代碼整潔之道》到《匠藝整潔之道》,從Coding到TDD,鮑勃大叔一直身體力行地用最簡(jiǎn)潔的文字、最通俗的例子,把他在代碼編寫、敏捷開(kāi)發(fā)方面的經(jīng)驗(yàn)傾囊相授。
——馬偉青 公眾號(hào)“沉默王二”作者
如果你有為自己團(tuán)隊(duì)建立舒適而高效工作流的愿景,那么本書不容錯(cuò)過(guò)。
——王譯鋒 稿定科技前端工程師、《JavaScript二十年》譯者
《匠藝整潔之道》教會(huì)寫代碼的程序員們?nèi)绾握w思考技術(shù),鮑勃大叔像一位諄諄教誨的老師,告訴我們?nèi)绾嗡伎即a之外的東西,相信你一定能從本書中受益匪淺。
——張遠(yuǎn)龍 《C++服務(wù)器開(kāi)發(fā)精髓》作者、公眾號(hào)“高性能服務(wù)器開(kāi)發(fā)”作者
作者曾親歷敏捷技術(shù)的發(fā)展和成型過(guò)程,全面了解其實(shí)踐目標(biāo)和手段,這在本書中體現(xiàn)得淋漓盡致。
——蒂姆·奧廷格(Tim Ottinger)?知名敏捷教練,圖書作者
鮑勃文風(fēng)上佳。書稿易于閱讀,概念解釋得非常詳盡,即便是新入行的程序員也能讀懂。鮑勃也會(huì)時(shí)不時(shí)幽上一默,讓你稍做放松。本書的真正價(jià)值在于呼喚變革,呼喚更好的東西……呼喚程序員的專業(yè)素養(yǎng)……以及對(duì)軟件無(wú)處不在的認(rèn)識(shí)。??
——海瑟·坎瑟(Heather Kanser)
作為軟件開(kāi)發(fā)者,我們必須不斷為雇主、客戶、同事和未來(lái)解決重要問(wèn)題。讓軟件可用盡管困難,但遠(yuǎn)未足夠,并不能令你成為成功匠人。軟件能運(yùn)行,只代表你通過(guò)了能力測(cè)試。你也許具備成為匠人的能力,但還要掌握更多東西。在本書中,鮑勃闡明了能力測(cè)試之外的技能和責(zé)任,展示了嚴(yán)肅軟件匠人該有的樣子。
——詹姆斯·葛萊寧(James Grenning)?《測(cè)試驅(qū)動(dòng)的嵌入式C語(yǔ)言開(kāi)發(fā)》(Test-Driven Development for Embedded C)作者,《敏捷宣言》(Agile Manifesto)作者之一
回顧我入行之時(shí),匠藝和職業(yè)操守的概念還沒(méi)在軟件領(lǐng)域出現(xiàn),人家只是告訴你要做個(gè)有誠(chéng)信的好人。如今,這些概念已然成為專業(yè)開(kāi)發(fā)者能習(xí)得的最重要能力,甚至比編碼本身更為重要。我很高興地看到鮑勃再領(lǐng)風(fēng)氣之先,迫不及待想聽(tīng)他闡述觀點(diǎn),并將他的觀點(diǎn)應(yīng)用于實(shí)踐。
——丹尼爾·馬克漢姆(Daniel Markham)?Bedford Technology公司負(fù)責(zé)人
譯者序
2021年2月,老朋友張春雨(俠少)在微博上給我發(fā)私信,問(wèn)我有沒(méi)有興趣翻譯Robert C. Martin(鮑勃大叔)的新書。我和俠少平時(shí)聯(lián)系不多,但常常收到他安排寄來(lái)的贈(zèng)書。贈(zèng)書收得多了,總覺(jué)得欠著人情,想著該用什么方式還一還才好。
這個(gè)“什么方式”,也許是幾頓酒飯、幾杯咖啡,但絕對(duì)不是翻譯一本書。算起來(lái),截至2020年,我已經(jīng)有十年沒(méi)做圖書翻譯工作了。去年翻譯了一本小書,眼睛和腰椎、頸椎都有點(diǎn)兒不舒服。一定賠本但不一定賺吆喝的事,還是不干為好。
俠少對(duì)我了解甚深,他只說(shuō)了一句話,就成功說(shuō)服我接下任務(wù)。他說(shuō):“這是(鮑勃)大叔的封山作。第一本和最后一本,有始有終,一段佳話!”這一下子就勾起我翻譯《代碼整潔之道》(Clean Code)的回憶。當(dāng)時(shí)我在北京工作,個(gè)人能力提升和職業(yè)發(fā)展都遇到瓶頸,同時(shí)還需要考慮家庭常駐地問(wèn)題。《代碼整潔之道》不但帶給我關(guān)于整潔代碼的知識(shí),還令我悟到許多做人做事的道理。對(duì)我來(lái)說(shuō),那是一本優(yōu)秀的技術(shù)書,更是一本關(guān)于價(jià)值觀的好書。
《代碼整潔之道》中文版面世十一年以來(lái),數(shù)次修訂和重印,成為很多程序員朋友接受并推崇的讀本。其間,鮑勃大叔的其他數(shù)本著作也陸續(xù)出了中文版。這些著作從程序員素養(yǎng)、架構(gòu)設(shè)計(jì)、敏捷方法等方面入手,全面闡述“整潔”概念在軟件開(kāi)發(fā)過(guò)程中的重要意義與實(shí)踐手段,建立了一套相對(duì)自足的理論和方法體系,大概能算是Clean系列的“武功秘籍”了吧。
鮑勃大叔提出,既然現(xiàn)代世界運(yùn)行于軟件之上,軟件開(kāi)發(fā)者就要承擔(dān)起維護(hù)世界正常運(yùn)行的重大責(zé)任。這意味著軟件開(kāi)發(fā)者必須掌握足夠多的技能,遵守足夠嚴(yán)格的紀(jì)律,追求足夠高的職業(yè)操守標(biāo)準(zhǔn),方能達(dá)到社會(huì)對(duì)他們的期望。他提煉了前面多本著作的精髓,加以深究、凝練和升華,推出這本集大成的Clean系列封山之作。
回顧C(jī)lean系列圖書的主題,可以很清楚地看到從“關(guān)注技術(shù)”到“關(guān)注人”的發(fā)展脈絡(luò)。就像是老拳師寫拳譜,第一本都是講招式。過(guò)了一陣子,老拳師發(fā)現(xiàn)徒弟們招式練得挺熟,但內(nèi)功沒(méi)跟上,“練拳不練功,到老一場(chǎng)空”,于是趕緊再寫一本講內(nèi)功的。又過(guò)了一陣子,老拳師發(fā)現(xiàn)徒弟們一上擂臺(tái)就不懂如何審時(shí)度勢(shì)選擇攻擊方案,又趕緊寫一本講架構(gòu)的。如此這般勿勿十年,老拳師突然發(fā)現(xiàn),拳譜傳來(lái)傳去,很多人練得似是而非,拳打歪了,心術(shù)也不見(jiàn)得很正。
如果你是這位老拳師,面對(duì)如此現(xiàn)狀,會(huì)是什么心情?我想,大概也會(huì)像鮑勃大叔一般,既悲觀又不甘吧。就我這兩年參與審校或?qū)忛喌膸妆久艚輬D書來(lái)看,恐怕既悲觀又不甘的不只是鮑勃大叔一個(gè)人。敏捷軟件開(kāi)發(fā)成為主流之后,同時(shí)也成了有些人借以牟利和亂來(lái)的最佳“幌子”。當(dāng)所有人都在談敏捷,而吹捧與批評(píng)都沒(méi)談到點(diǎn)子上時(shí),正本清源就成了當(dāng)務(wù)之急。所以,最近兩年面世的敏捷書,不約而同集中在一個(gè)主題:正本清源。
敏捷既是手段,也是目的。正如鮑勃大叔在本書中一再?gòu)?qiáng)調(diào)的:軟件最根本的特點(diǎn)就是“柔軟”。好軟件不但具備能夠與時(shí)俱進(jìn)修改和擴(kuò)展的靈活性,而且更具備以較低成本修改和擴(kuò)展的可能性。軟件本身如果敏捷,那么實(shí)現(xiàn)和修改軟件的方式必須也必然夠敏捷。
本書第Ⅰ部分和第Ⅱ部分結(jié)合多個(gè)代碼示例,展示了如何利用TDD敏捷地寫出敏捷的軟件,同時(shí)闡述了驗(yàn)收測(cè)試、協(xié)同編程等其他敏捷手段的重要性與一般實(shí)施手段。不可避免地,作者還花費(fèi)相當(dāng)多篇幅討論軟件設(shè)計(jì)方案問(wèn)題。我很愿意重點(diǎn)閱讀這部分。此外,一些具體的測(cè)試策略也頗具可讀性。
第Ⅲ部分看似對(duì)程序員的日常工作沒(méi)什么太大幫助,但這部分值得好好閱讀和思考。作者提出的程序員十條承諾(或謂“誓言”)淺白易懂,卻不易遵守。能謹(jǐn)守這些承諾的程序員,一定是我特別愿意共事的好伙伴。
中文版初稿翻譯工作結(jié)束之后,我以為終于可以放松下頸椎和腰椎了。沒(méi)想到,過(guò)了一段時(shí)間,俠少又發(fā)來(lái)一份英文修改稿,對(duì)初稿改動(dòng)之處不在少數(shù)。還好有電子工業(yè)出版社的編輯幫我做了對(duì)照工作,將差異處一一列出。看著屏幕上的英文初稿、修改稿和修改了幾遍的中文稿,我突然體會(huì)到鮑勃大叔講解“質(zhì)因數(shù)”示例時(shí)談到的心情:對(duì)一樁事物的改進(jìn)過(guò)程,活靈活現(xiàn)地躍然眼前。修改的過(guò)程既痛苦又快樂(lè)。而且,如果沒(méi)有其他限制,可以一遍又一遍繼續(xù)做下去,永無(wú)止境。
可惜,就像軟件有交付截止日一樣,譯稿也不能一直拖下去。我清楚地知道,譯稿還有很多問(wèn)題。稿子交出去了,這些問(wèn)題留待讀者們發(fā)現(xiàn)和批評(píng)。如果有機(jī)會(huì)出修訂版,你們的批評(píng)和建議必會(huì)被納入,這也算是一種協(xié)同寫作了吧。
韓磊
2021年10月28日
推薦序
2003年春,在我公司各個(gè)技術(shù)團(tuán)隊(duì)引入Scrum后不久,我見(jiàn)到了鮑勃大叔。那時(shí)我還是個(gè)新鮮出爐、心懷疑慮的ScrumMaster。
鮑勃教我們使用TDD和一個(gè)叫作FitNesse的小工具。我問(wèn)自己:“為什么總要寫注定先面臨失敗的測(cè)試?測(cè)試不該排在編碼之后嗎?”就像團(tuán)隊(duì)中許多其他成員一樣,我常常只能撓著頭離開(kāi)。
但是,直至現(xiàn)在,鮑勃大叔對(duì)編程匠藝的熱情于我仍然記憶猶新。他是個(gè)直言不諱的人。記得有一天,他看了我們的缺陷列表后,問(wèn)我們到底為什么會(huì)對(duì)并不屬于個(gè)人的軟件系統(tǒng)做出如此糟糕的決定——“這些系統(tǒng)是公司資產(chǎn),不是你們的個(gè)人資產(chǎn)。”他的激情鼓舞了我們。
一年半之后,我們實(shí)現(xiàn)了百分之八十的自動(dòng)測(cè)試覆蓋率,得到了整潔又直觀的代碼庫(kù),客戶和團(tuán)隊(duì)成員也都滿意。之后,我們迅速修正了對(duì)“完成”的定義,以之為盾,擋住了潛伏在代碼中的小魔怪。
本質(zhì)上,我們學(xué)會(huì)了如何避免自殘。相處日長(zhǎng),我們對(duì)鮑勃心生暖意。對(duì)我們而言,他如同親叔父——溫暖、堅(jiān)定、勇敢,一直幫助我們學(xué)會(huì)站直并做正確的事。有些孩子的“鮑勃大叔”教他們騎單車或釣魚,而我們這位鮑勃大叔則教我們堅(jiān)守正直—直至今日,在我的職業(yè)生涯中,有能力和愿望,滿懷勇氣與好奇心地去面對(duì)任何環(huán)境,仍是鮑勃大叔教會(huì)我的最佳課程。
開(kāi)始從事敏捷教練職業(yè)后,我將鮑勃早年教我的那些東西用在工作中,我發(fā)現(xiàn),最好的產(chǎn)品開(kāi)發(fā)團(tuán)隊(duì)總能在各種行業(yè)、各種客戶的各種獨(dú)特環(huán)境中組合不同的最佳實(shí)踐手段。我還發(fā)現(xiàn),再好的開(kāi)發(fā)工具也需要有與之匹配的人類操作者—那些在不同領(lǐng)域中都能找到這些工具最佳應(yīng)用方式的團(tuán)隊(duì)。當(dāng)然,我也觀察到,開(kāi)發(fā)團(tuán)隊(duì)也許達(dá)到了很高的單元測(cè)試覆蓋率,已經(jīng)能滿足指標(biāo)要求,卻發(fā)現(xiàn)大部分測(cè)試不合格—指標(biāo)滿足,價(jià)值不足。
最好的團(tuán)隊(duì)并不真需要關(guān)心指標(biāo)。他們自有目標(biāo)、紀(jì)律、尊嚴(yán)與責(zé)任感。指標(biāo)自然而然得到滿足。《匠藝整潔之道》將這些課程與原則放到具體代碼范例與經(jīng)驗(yàn)講述中,展示了“為滿足期限而寫代碼”與“真正搭建未來(lái)能用上的系統(tǒng)”之間的區(qū)別。
《匠藝整潔之道》提醒我們永不能滿足于現(xiàn)狀,要無(wú)畏地活著。這本書就像一位老友,會(huì)提醒你什么重要、什么有效、什么無(wú)效、什么導(dǎo)致風(fēng)險(xiǎn)、什么降低風(fēng)險(xiǎn)。這些經(jīng)驗(yàn)歷久彌新。你可能會(huì)發(fā)現(xiàn)自己已經(jīng)在實(shí)踐其中的一些技巧,我敢說(shuō)你會(huì)發(fā)現(xiàn)另外一些新東西,或者至少是你曾因期限壓力或其他職業(yè)生涯中的壓力而放棄了的東西。
如果你是開(kāi)發(fā)領(lǐng)域的新手——無(wú)論是商業(yè)方面還是技術(shù)方面的—你將從最優(yōu)秀的人那里學(xué)到東西。即使是最有經(jīng)驗(yàn)和戰(zhàn)斗力的人也會(huì)找到改進(jìn)自己的方法。也許這本書會(huì)幫助你找回激情,重新激起你提升手藝的欲望,或者讓你重新投入精力,無(wú)懼障礙追求完美。
軟件開(kāi)發(fā)者統(tǒng)治著世界。鮑勃大叔在這里重申了這些“掌握權(quán)柄”之人該遵守的職業(yè)紀(jì)律。他延續(xù)了《代碼整潔之道》未完的話題。軟件開(kāi)發(fā)人員實(shí)際上是在編寫人類的規(guī)則,所以鮑勃大叔提醒我們,必須嚴(yán)守道德準(zhǔn)則,有責(zé)任知道代碼的作用,人們?nèi)绾问褂盟?#xff0c;以及它會(huì)在什么地方出錯(cuò)。軟件出錯(cuò)的代價(jià)是人的生計(jì)——甚至生命。軟件影響著我們的思維方式,影響著我們的決定。作為人工智能和預(yù)測(cè)分析的結(jié)果,軟件同樣影響著社會(huì)和人群的行為。因此,我們必須負(fù)起責(zé)任,以極大的謹(jǐn)慎和同情心行事—人們的健康和福祉取決于此。鮑勃大叔幫助我們面對(duì)這種責(zé)任,并成為社會(huì)所期望和需要的專業(yè)人士。?
在寫這篇序的時(shí)候,《敏捷宣言》即將迎來(lái)它的20歲生日。這本書是回歸根本的完美機(jī)會(huì):它及時(shí)而謙遜地提醒我們:程序化世界越來(lái)越復(fù)雜。為了人類的遺產(chǎn),也為了我們自己,應(yīng)該建立和維護(hù)職業(yè)操守。讀讀《匠藝整潔之道》吧,讓這些原則滲入你的內(nèi)心,實(shí)踐和改進(jìn)它們,輔導(dǎo)他人。把這本書放在手邊書架上。當(dāng)你帶著好奇心和勇氣行走于世間,讓這本書成為你的老朋友、你的鮑勃大叔和你的導(dǎo)師吧。
斯塔西·海格納·韋斯卡迪(Stacia Heimgartner Viscardi)
CST和敏捷教練
掃碼抽獎(jiǎng)
任性購(gòu)買
總結(jié)
以上是生活随笔為你收集整理的有幸为鲍勃大叔的封山之作《匠艺整洁之道》写了推荐序,顺手赠书!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数学建模可以用python_数学建模可以
- 下一篇: 侧信道实验实验三 S盒CPA侧信道攻击