天天看點

“怼天怼地”的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,又挨罵了|極客時間

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

這句話也同樣适用于測試驅動開發,對高品質代碼和高品質軟體系統的追求,會推動着我們成為越來越可靠、越來越有競争力的開發者.

是時候見識一下真正的靈活開發了,早鳥期入手最劃算!

測試驅動開發

我想見識見識

點個在看少個 bug

繼續閱讀