“懟天懟地”的CTO,又捱罵了|極客時間

昨天在朋友圈看到一條影片,大意是那位博主認為 Debug 是一種低效的認知模式。理由是當程式設計師去 Debug ,說明他並不知道這個程式碼發生過什麼,需要打一個斷點,看看問題再繼續做,所以得出擅長 Debug 的程式設計師不是好的程式設計師的結論。評論區針對這個觀點吵了好幾螢幕,正反雙方都有理有據。

我仔細一看博主,這不是“老熟人”徐昊嘛。他之前就掀起過好幾輪技術討論,比如接受 InfoQ 採訪時說“低程式碼是毒瘤”等等,也難怪好多人都說徐昊“毒舌”、“有強烈個人觀點”、“最能引戰”的 CTO 。而今天,我想聊一聊我瞭解到、跟風評不太一樣的徐昊。

快人一步

翻開徐昊的履歷,Thoughtworks 中國區 CTO、全球技術策略顧問,中國最早一批測試驅動開發的實踐者…你會發現,徐昊的職業生涯總是“向前看”的:

2003 年,在很多人尚未認識到程式設計師的前景時,還沒大學畢業的他,已經碼了超過十萬行程式碼,開始尋求從編碼速度到編碼質量的轉變;2005 年,Thoughtworks 剛進入中國,他就選擇投身其中,幾乎做遍了所有技術角色,最終蛻變為頗有影響力的 CTO 。

因此,敏捷開發才剛在國內有點聲勢的時候,他就堅定地選擇了這一方向,此後還成為了 TDD(測試驅動開發)的佈道者。

初識敏捷

由於已經碼過超十萬行程式碼,開發速度自然不在話下,初入職場的他以為,日後在工作中把程式碼質量鍛煉出來是順理成章的事。

但經歷了客戶和產品經理的一次次“毒打”後,他才發現自己有億點點天真,下面這些場景每天都在他的工作中重複出現:

1、產品經理覺得自己需求定義清楚了,時間緊任務重讓你趕緊開發,快到驗收階段了來一句“這跟我想象的不一樣啊”,只能返工;

2、祖傳程式碼看都看不懂,還要在此基礎上做新功能,每做一點改動趕緊“跑一下”試試,生怕新功能還沒做出來呢,舊功能就不能用了;

3、每回專案上線之前都手忙腳亂的,bug 越測越多,每回測出來的還不一樣,順利上線基本靠運氣…

這種一靠本能,二靠摸索,三靠運氣的開發狀態,給他整迷茫了,連功能尚且無法確保正確,又談何程式碼質量?

那段時間,剛好趕上輕量化風潮,極限程式設計等敏捷開發的概念開始在國內生根發芽,測試驅動開發(TDD)、結對程式設計、程式碼重構等這些聲稱

有助於確保程式碼功能正確且結構良好

的開發方法深深吸引了徐昊,他當即決定將這一方法引入公司。

死磕 TDD

本以為推行 TDD 會面臨很多阻力,好在徐昊得到了當時一位領導的大力支援,對方認為這是一件長期利好的事情,值得時間的投入,所以允許他在一定限度內拖延專案進展,自此 TDD 得以順利推行。

根據 TDD 的基本原則,他將開發工作分成了紅 / 綠 / 重構三步,在紅 / 綠階段,他不關心程式碼結構,只關注功能的累積。而在重構的過程中,因為測試的存在,能時刻檢查功能是否依舊正確,同時將關注點轉移到“怎麼讓程式碼變得更好”上去。

這種開發方法在團隊流通之後,既減少了短期內的無效開發,降低了修正錯誤的難度,長期來看,又提升了程式碼的可維護性與可擴充套件性。無論是開發人員的個人能力,還是開發於業務層面的貢獻,都得到了凸顯,百利而無一害。自此以後,徐昊的公司就徹底將測試驅動開發作為其主要的工作方式。

于徐昊個人而言,他也堅定了繼續“死磕” TDD 的決心。在他開始帶團隊,推行高效工作法則時,測試驅動開發始終是核心流程。如今,徐昊把他的多年 TDD 實踐經驗都融合在了這個極客時間剛剛上線的《徐昊·TDD 專案實戰開發 70 講》專欄裡,內容包含 68 講、40 + 小時影片演示, 4 個完整的專案實踐。透過它,你完全可以搞定需求難拆分、TDD 難落地的問題。

徐昊已經跟 TDD 打了將近二十年交道,多次幫國內外的大小團隊成功解決了 TDD 的落地,所以想解決在 TDD 中的使用問題或對 TDD 感興趣想多瞭解,他絕對是首選。

早鳥 +

口令

「xuhao6666」

立享 6 折優惠,到手

179

課程群裡已經有很多人學起來了。

“懟天懟地”的CTO,又捱罵了|極客時間

徐昊是怎麼講解 TDD 的?

正是因為 TDD 需要在不同的場景下練習才能掌握,這個專欄才以影片展示為主,圖文講解為輔。你能在具體的場景下,體會使用 TDD 和平時開發的差異。

首先徐昊將從一個編碼練習(Code Kata)級別的小例子入手,展示使用 TDD 開發的全過程,讓你有個直觀的認識。

然後他會圍繞這個例子,詳細講解 TDD 的核心理念與方法,帶你深入討論 TDD 中的測試到底是什麼樣的測試,TDD 是如何驅動我們的開發。他還會介紹 TDD 的經典學派(芝加哥學派)與倫敦學派不同的切入點。

在這部分的最後,他將會總結 TDD 作為工程方法的核心優勢在什麼地方。如果你需要說服周圍的同事、朋友、領導開始採用 TDD 方法,這將給你提供足夠的彈藥。

接下來是實戰專案環節。徐昊將以幾個技術框架為例(IoC 容器、RESTful 框架、DB Mapper 框架等),展示如何使用 TDD 的方式從頭來實現它們,TDD 實戰的細節將一覽無遺。

“懟天懟地”的CTO,又捱罵了|極客時間

不僅可以教你如何用,也可以教你如何說服別人一起用。具體章節,可以看看目錄

“懟天懟地”的CTO,又捱罵了|極客時間

曾聽說過一句很經典的話:如果關注質量,那長期來看質量會提升,成本會降低;如果關注成本,那長期來看成本會提升,質量會降低。

這句話也同樣適用於測試驅動開發,對高質量程式碼和高質量軟體系統的追求,會推動著我們成為越來越可靠、越來越有競爭力的開發者。

早鳥 +

口令

「xuhao6666」

立享 6 折優惠,到手

179

是時候見識一下真正的敏捷開發了,早鳥期入手最划算!

測試驅動開發

我想見識見識

點個在看少個 bug

TAG: TDD徐昊開發程式碼測試