[BoS] Rewrite (lesson) from DHH

Published on:

今天聽 DHH 的 REWRITE,蠻震撼的。原本當初想聽 REWRITE 這個主題,是以為 Basecamp 有什麼技術債,所以他們才會啟動重寫,而且還是兩次。

沒想到跟我想的完全不一樣。DHH 說 Basecamp code base 很乾淨,沒什麼技術債。

永恆的軟體是錯的

他們會重寫 Basecamp (在 2011 年)是因為「他們想發揮自己更好的 idea 在 Basecamp 上」超越舊 Basecamp。以前他們也有一個陳舊的想法,就是一直維護一套舊軟體到永久,但他們後來發現這件事情是錯的,要做這件事情的代價超過他們的想像。

不要把把桌子改版成椅子

更重要的是,如果原本你的軟體是一張好用的漂亮的桌子,你硬是要把它改版成一張漂亮的椅子,再說服用戶買單。well,大概還沒做到,用戶砍死你,你的團隊也會砍死你。

他的觀點是,既然我們有一身武藝,想造一張漂亮的椅子,那就應該去直接造一張漂亮的椅子。

舉步不前是因為黃金手銬

很多成功的團隊經營到一段時間,軟體沒有問題,模式也沒有問題,但大家的困境就是無法再成長下去,你就是知道有一些問題你沒辦法解決。但改版重寫也沒辦法解決太多。因為這時候你會變成被銬在過去的黃金手銬裡面。

你怕砍了什麼小東西,舊用戶會大幅跳腳,你不知道加了哪些功能,效益會有多少。在一個舊的架構裡,你無法繼續投入自己更多更新更好的想法。換言之,你無法持續超越自己。

所以他們最後的做法,是重練。不是砍掉重練,而是只有重練。新造一個新版本的 Basecamp,把他們最好的想法都放進去,變成另外一個新的 Basecamp。

他透露的數據是 Basecamp V2 的註冊率是舊版的兩倍。

不要 sunset 用戶

當然你會好奇舊的 basecamp 他們怎麼處理。他的忠告是就放在那裡,讓客戶繼續開心地用。不要逼他們搬走也不要逼他們轉換,也不要有 sunset 的念頭。

為什麼呢?因為你的那些舊用戶(V1),跟你的新用戶 (V2) 來用你的軟體理由是不一樣的!你沒必要強迫他們搬家。有人願意付錢給你,你幹嘛逼他們離開呢?

經營軟體公司最怕的就是把原有的客戶驅逐回大眾市場上,你還要費心思重新取得一次客戶。

至於他講的第二次重寫。是指他們下個月又要推出 Basecamp v3 了。因為一回生,二回熟。他們幹過一次,知道好處壞處了。所以決定再幹一次。

而且這次 Basecamp V3 不會再有 import from old project 功能。因為 Basecamp V3 目標族群不是舊用戶,而是更多的新用戶!

不要因為技術債重寫,而是應該為了能夠 implement 自己最新最好的想法而重寫

DHH 的想法是你不應該因為「技術債」而重寫軟體,而是應該為了能夠 implement 自己最新最好的想法而重寫。

這場演講我聽了實在很震撼。

還好這場是在 Business of Software 聽的(現場大家超認同),要是放在 Rails Keynote 給 Developer 聽大概被砲死...