我在創業前,是一個頂尖的軟體工程師。
2012年到這本書寫作的時候(2018),過了六年。這六年,我覺得基本上是一個unlearn的過程。什麼叫「unlearn」?就是所有我在程式世界學的best practice,在這六年來都崩解了。曾經信奉的最高信仰教條,在我創業的時候全部都崩解了。
當中最讓我感到矛盾衝突的地方在於,我以前的角色是軟體工程師大神。我意識到這些秩序陸續在我面前崩解,我以前信奉的概念都是錯誤的,而且之後跟我後續創業的公司裡面的工程師分享這些領悟時,他們「不相信」。
到底是哪些「反常識」呢?
反常識:程式碼品質並不重要
比如我跟他們說: 「創業專案不需要太注重code的品質,趕快上線才是王道」。他們就會覺得我是不是不會寫code,才會講這種反常識的話。 還有我可能會說:「創業剛開始就不需要注重擴展問題,code quality不重要」。他們聽到後都感到很震驚,紛紛懷疑我當年的功力是不是假的。
當然,我不是沒有技術功底。如果我沒有技術功底的話,ico.info與OTCBTC這兩次風口閃電戰,不可能打得這麼成功。這兩個產品都是瞬間上線,之後上線第一周就有非常大的線上壓力與迭代壓力。
所謂的「不需要注重擴展」,只是我的一個「選擇」。
軟體開發所謂最佳實務,是穩定後的最佳選擇。而不是創業時的最佳選擇。
我覺得程式設計創業會遇到的最大的盲點,是這些工程師會把之前上班時學到的best practice,帶到創業起步的觀念裡面。
我認為這是最恐怖的一件事情。
因為程式設計是一個特殊的工作種類。程式設計會在公司出現的階段,通常是公司已經「穩定」以後,才會被雇用。甚至他們的工作,就是被找來重新架構那些混亂的「生意邏輯」與「不堪使用的程式代碼」。
所以很多程式設計師不太知道「生意是怎麼做起來的」,甚至還會認為「自己是救世主」,被派來拯救這一團混亂。而會選擇出去創業的程式設計師,通常背景會是「資深程式設計」或者是「程式設計大神」。這個級別,通常才會覺得自己有資格有實力出來創業。甚至這個級別的人,對於「擴展」這個技能,已經練到登峰造極了。
程式設計師,主要的工作職責是:
• 將重複的過程自動化。
• 將系統優化再優化。
• 讓程式碼結構乾淨,可擴展。
整個職業生涯領域,都在朝這個方向不斷精進打磨。但程式設計師所身處的公司階段,通常是一個處於有盈餘且公司並沒有生死存亡的問題需要面對的階段。所以程式設計可以「好整以暇」慢慢打磨產品。而做好這些擴展,重構,都需要耗上大量時間。
不過,創業時就很不一樣了。
創業從0到1這個階段,時間資源很寶貴。如果幸運的在創業時遇到一個風口,如果你的專案不在正確時間上線,這場遊戲就會完全沒有你的份。而且創業的重點,在於做出「有價值的產品」。至於產品內部的品質,那是活下來有資源以後才追求的事。
對於大多數人(甚至是100%)來說,有時候創業有點像是一場賭博。
很可能你做的產品,只有你自己需要,但別人可能沒有需求。又或者是你的產品,可以有幸擴大,有很大的族群使用。但在大多數的情況下,這件事情很碰運氣。
如果創業一開始的作法,就是專注在打造一個底層很棒、很能擴展的厲害產品。這個策略就有點像是上賭桌時,一開始就ALL IN在一個很容易失敗的選項。有很高的機率會陣亡。
而且,人有種奇怪的傾向。就是傾向相信自己一開始的決策是對的。既然一開始ALL IN自己的所有資源,而且也花了兩個月的時間寫程式。自然就不太願意相信當初的選擇是錯的。後續就在錯的選擇決定上,一再迭代,拼命希望它是正確的。
我最常看到很多程式設計師創業失敗的標準典型:「覺得自己做的產品這個很好,程式碼也寫得很漂亮,當初也花了許多時間籌備,但反覆迭代六個月,最後還是無法運作。」
事實上創業會成功的人,反而是那些不太會寫程式碼的創業家。或是懂得寫程式碼,卻覺得創業一開始不需要寫程式碼的連續創業者。光是用Landing Page驗證點子,就賺到一大堆錢。
創業實際上是件很反直覺的事。因為你沒有辦法相信,自己練了多年的武功,在創業這個世界沒有用。
我第一次認知到這件事情時,打擊很大。
因為我剛開始的時候,想要創業,但我不會寫程式碼。於是我就去學寫程式碼,練了多年之後,終於變成高手。變成高手後終於出去創業了。創業後卻發現學了那麼多年的程式碼與架構,一點用都沒有,我內心很崩潰!
創業初始接下來的六年當中,我基本上是一直試圖忘記我曾經學到的東西,那些東西會害死你。