在新創公司,我的軟體開發習慣。

在startup工作,經常是在經歷會員數從0到1000、軟體從無到有的過程。

我在這個過程寫code的習慣是這樣的:

  1. 聽完需求,動手隨便寫、能跑就好、有成就感就好、什麼原則都不管、不花時間討論什麼偉大的架構或是未來
  2. 開始覺得不對勁、不整理code之後會死很慘,重構一部份code、補幾個測試
  3. 覺得繼續改善code只是在浪費時間,繼續往下快樂亂寫
  4. 重複以上這個過程

一個網站的beta版,我通常可以在2-4週內讓它上線。
在這個過程中寫出的某些code,老師看到了會很生氣。

其實,不是真的不理會任何原則。我奉行的核心是這兩條:

* 過早最佳化是萬惡的根源。

(Premature optimization is the root of all evil)

* 軟體開發真正的生產力,只能用它帶來的商業價值去衡量。

(Any true measure of software development productivity must be based on delivered business value)

至於怎麼定義「premature optimization」?
如果沒有前輩指引的話,這件事當然就是憑直覺了,所以想怎麼寫就怎麼寫。

這個循環進行幾次之後,會變得更有經驗,下一次開始專案時,在(1. )的所謂「憑直覺亂寫」,實際上會直接寫出更有經驗、更成熟的架構。

就商業上來說,跟現在流行的Lean Startup精神也搭配得很好。

沒經驗就是沒經驗、還不確定的需求沒有辦法針對它去優化、沒碰到問題不會知道如何處理。
不要花太多時間去處理你根本不太確定的事情。

最後附上Jason Fried與DHH所合著Getting Real中的一段話


最棒的設計師跟軟體工程師,並不是技術最好、手指最靈巧的那些人,也不是把Photoshop跟vim用得出神入化的人。他們是能夠判斷哪些事情根本不重要的人。真正的生產力是從這裡來的。

你大部份的時間都花在根本不重要的事情上。如果你能停止這些工作、思考哪些事情根本不重要,你馬上會發揮你從來沒想過的生產力。只要別把精力用在不重要的事情上就行了。

(Photo via Sharon, CC licensed)