外包你的 MVP 的陷阱
幾個月前,我有個絕妙的網站點子。接著,我又想到一個更絕妙的點子:把網站建立起來,但把所有工作都外包出去。
每個偉大的網站都從 MVP 開始:也就是 minimum viable product(最小可行性產品)。它以最精簡的形式展示點子,用來測試是否有人感興趣。Twitter 推出 MVP 時,你只能推文分享褐皮馬鈴薯(Russet)的照片。Slack 剛推出時最為人津津樂道的,就是語言支援僅限豬拉丁(pig latin)。Netflix 如今已成為即時串流的代名詞,讓你可能都忘了它的第一個版本——你得先選一部電影,然後等上好幾天,直到 Reed Hastings(里德·哈斯汀斯)親自到你家為你演完整部劇情。
我有個簡單的計畫來打造我的 MVP:
- 快速寫一份設計規格。
- 找一位擁有十年經驗、精通當下最熱門、最前衛的網頁框架的頂尖自由接案者。
- 用每小時 4 美元的價格雇用這位接案者,以便最大化網站的獲利。
- 看著 MVP 開花結果,發展成擁有數百萬熱情用戶、搶著要付錢給我的蓬勃網站。
你可能會很驚訝地發現,這個計畫並沒有成功。我現在並不是在矽谷那間要價 2 億美元的兩房豪宅裡寫這篇文章。我也沒有因為被 Facebook 以天價收購而登上頭條。相反地,我是在收到一個半成品後,在我那間普通的單人套房裡寫下這篇文章,甚至在過程中莫名其妙地變成了替我的接案者打工的人。
點子
我平時採取生酮飲食,也喜歡嘗試新的食譜。網路上有很多不錯的食譜,但它們分散在數十個部落格中,每個部落格的結構都不一樣。這些部落格通常速度很慢、也不好瀏覽,因為生酮部落客很少具備網頁開發的經驗。
我的點子是 KetoHub,一個生酮食譜目錄。它會彙整來自網路各地的食譜,集中到一個易於使用的網站上。

KetoHub 初步草圖
尋找接案者
KetoHub 大部分繁重的工作都是網頁爬蟲——爬取食譜部落格並擷取出相關資料。這在 Upwork 或 Fiverr 這類自由接案平台上是很常見的案件。我大概可以用很低的價格找到人,但如果想在 MVP 之後繼續迭代,程式碼可能會脆弱到一碰就碎。
喔,對了!這份工作非常適合我的朋友 Ferngully(芬格莉)(她答應讓我寫她的故事,條件是我得幫她取個搞笑的化名)。她最近剛辭職去旅行,但幾天後就會回來找正職工作。她應該會有空檔可以接案。我們過去曾一起合作過,所以我知道她是個可靠的開發者,而且我們合作得很愉快。
我聯絡了她,她馬上就答應了。她從過去的合作經驗知道,我的程式碼審查吹毛求疵又愛抱怨非常嚴格。她告訴我,她很期待挑戰我嚴苛的標準。
我寫了一份設計文件,在其中大致列出網站的各個組成部分。芬格莉會負責後端的爬蟲任務,而我則會建立一個簡單的網站前端來顯示食譜。

KetoHub 架構圖
為什麼還沒上線?
當我一開始和芬格莉討論這個專案時,她問我有沒有截止期限。「沒有期限,只要專注寫出好程式碼就好。」
這也是我跟任何與我合作 side project 的開發者說的話。比起週一拿到一份倉促拼湊的程式碼,我寧願週四才收到高品質的程式碼。我估計芬格莉負責的部分需要 30 到 50 個小時來實作。我們大概一週內就能完成。如果我的估算有誤,或她每週工作不到 40 小時,最多也就兩、三週吧。
當時,我的正職工作正處於忙碌期。可能要好幾個月後我才有時間做前端。毫無疑問,我才是瓶頸所在。
完成設計文件後,我想到如果芬格莉交出爬蟲程式碼,卻只能在抽屜裡躺好幾個月,那該有多掃興。於是我花了幾個晚上,拼湊出一個基本的前端。它顯示了一些我手動爬取的範例食譜。只要芬格莉完成她的工作,我們就能加入完整的食譜資料並上線。

KetoHub MVP 的截圖,資料為手動爬取
就在那時,我開始感到焦慮。
我花了一週完成網站的部分,但我仍然沒看到芬格莉的任何程式碼。她到底在做什麼?
在我建立前端之前,這個專案一點壓力也沒有。現在我們有了一個填入假資料、隨時可運作的網站,卻感覺像是有個活生生的東西被我們關在籠子裡。隨著日子一天天過去,我的程式碼正逐漸過時、失去時效。我只想趕快把 KetoHub 推向世界,好進入那個 Mark Zuckerberg(馬克·祖克柏)邀請我到他那艘專門收集個資的超級遊艇上喝香檳的階段。
在低頻寬下工作
芬格莉在第二週結束時寄給我她的第一次程式碼審查。那是第一個後端元件的部分實作。她平均每週投入 15 個小時,但下週一就要開始正職工作了,投入的時數勢必會再下降。
我重新檢視了設計文件,看看能不能刪減一些內容。文件原本要求後端以程式化的方式將食譜資料上傳到網站的資料儲存區。如果讓芬格莉只把資料寫到本地檔案系統,我的工作量就能減少。然後,我再用現有的命令列工具把那些資料上傳到網站。
好吧,或許時間有限反而是件好事。如果我能刪掉 MVP 的某些元素卻仍達到相同的效果,那它本來就不是最精簡的形式。
我很樂觀地認為,我們可以在幾週內收尾。
淪為我接案者的接案者
不幸的是,芬格莉開始正職工作後,能投入的時間比我預期的還要少。在接下來的一個月裡,她平均每週在 KetoHub 上投入的時間不到五小時。照這個速度,我們得花好幾個月才能完成。
如果換成別的接案者,我大概會感謝對方的付出,然後另找一位開發者。但芬格莉不僅是我的朋友,更是一位正經歷新工作壓力的朋友。我不想因為催促她投入更多時數或大幅修改專案計畫而增加她的負擔。儘管如此,我還是很後悔當初她詢問截止期限時,我表現得那麼寬鬆。
或許我可以把她的一些工作重新分配給自己。不行,如果有人雇用我做一份工作,結果卻自己動手做,我也會很不高興。我重新檢視設計文件,想看看能不能再簡化一些,但已經找不到可以刪減的部分。接著,我開始思考是否能調整我們的開發流程,把一些時間成本從她身上轉移到我身上。
等一下,到底發生了什麼事?我當初外包 KetoHub 是為了節省自己的時間,現在卻為了芬格莉的時間而重新調整專案、犧牲自己的時間。我怎麼會變成我接案者的接案者?
簡化程式碼審查
不管誰是誰的接案者,我都想盡快完成這個專案。而我能省下的最大時間成本,就是我那出了名挑剔的程式碼審查。
審查對我們兩人來說都很花時間。我在程式碼審查上花了很多心思,而芬格莉也需要時間來實作我的建議。由於每輪審查之間有數天甚至數週的延遲,我們光是回憶審查進度與上下文就耗掉了不少時間。
為了節省時間,我決定不再給芬格莉審查意見。當她寄來下一個變更清單供我審查時,我直接合併進來,稍微調整一下以符合我的標準,砰——我們就有了第一個完整的後端元件。只剩下兩個了!
這樣行不通
芬格莉對我這個聰明的新省時技巧可沒那麼熱衷。嚴格的審查能帶來技術上的成長。少了這些,KetoHub 對她來說就只是工作而已,而她在正職工作上已經有夠多工作了。
我猶豫著是否該繼續寫審查意見。就算我跳過審查,我也不確定找接案者整體上是否真的有幫我省到時間。如果我重新開始寫審查意見,時間上肯定是虧的。我付給接案者一筆不算少的時薪,結果花的時間反而比我自己寫程式還多。
我們討論過後,決定芬格莉不再繼續參與 KetoHub。由於第一個元件已經完成,正好是她交接退出的好時機。
自己動手實作
在與芬格莉結束合作後的那個週六晚上,我從她停下的地方繼續,一路做到 MVP 上線為止。到了凌晨兩點,第一個版本完成了。雖然外觀陽春到讓我有點尷尬,但總算是完成了。

終於完成的 KetoHub MVP
我很快就意識到,我從一開始就該自己獨立完成這個專案。
原型需要對取捨做出大量的細微決策。我該多花一小時去修復一個只影響 10% 食譜的錯誤嗎?哪些模組應該要有自動化測試?要事先把這些答案詳細交代給接案者是不可能的。自己一個人做時,我只要跟著直覺走就行了。
自己動手做,也讓我更容易修正設計上的弱點。即使只有兩個人的團隊,設計缺陷也會帶來很高的摩擦成本。當芬格莉發現一個問題時,她必須先和我確認,我得更新設計文件,她讀完後,丟棄一些已完成的工作,然後才按照新設計重新實作。當我一個人工作時,整個過程幾乎是瞬間完成的。
最後,把後端外包出去,讓我對業務的核心部分變得一無所知。當我親手處理網頁爬蟲時,反而激發了我對未來 KetoHub 迭代可以運用哪些食譜資料的想法,也讓我對網站的設計限制有了更深入的理解。
收穫
儘管過程中有這些問題,這段經歷還是讓我學到關於建立新網站與和接案者合作的重要課題。最大的收穫是:如果你本身就是開發者,自己打造你的 MVP 吧。
如果你選擇與接案者合作:
- 討論目標完成日期。
- 你不需要設定僵硬的截止期限,但要在一開始就確認彼此的預期時程是否在同一個範圍內。
- 約定每週可投入的時數。
- 你的接案者可能還有其他客戶或優先事項。先了解他們每週能投入多少時間在你的專案上。
本文由 Samantha Mason(莎曼珊·梅森) 編輯。
如果你是正在尋找新食譜的生酮飲食者,歡迎看看 KetoHub,就是我在整篇文章中談到的那個網站。
隨機一篇部落格
