軟體專案開發
軟體專案與產品有差別嗎?聽起來好像一樣,又好像不一樣?好像很賺,又好像不太賺?雖然軟體開發的本質與精神是相同的,但我覺得軟體開發在面對這產品與專案兩種情境上,心態上是有些不同的。對我而言:軟體專案風險低,求的是結案收錢;軟體產品風險高,求的是 PMF (Product-Market Fit)。
我們先看看什麼是專案 (定義):
專案是組織進行的一個暫時性 (Temporary) 的努力付出,在一段事先確認的時間內,運用事先決定的資源,以生產一個獨特 (Unique) 且可以事先定義的產品、服務或結果。
聽起來是不是很饒舌?總之,專案就是「用一定的資源、在一定的時間、做完一定的事」,在軟體開發專案中,直白一點的講法就是「就是那些錢,請在 Deadline 前把這些夢幻的功能做完!」
專案聽起來沒什麼問題,但我覺得最大的困難在於訂立明確地專案目標 (盡力符合 SMART 原則),也就是軟體的交付規格 (或驗收方式) 。一個健全的軟體開發專案,應有 33% 的時間花費在規劃 (取自人月神話作者論述)。由於軟體設計相當的複雜,但是在鬼島業界常有一種特殊的現象,不管是買方還是賣方,很少人願意先把要做的事情說清楚。專案評估與系統初期分析 (甚至包含 PoC 的製作) 在鬼島通常是不收費的,想做案子前都得先燒些資源賭一下。
另外還有一種心臟比較大顆的做法,就是大家坐下來聊聊天,若是需求聽起來貌似可行,默許未來雙方透過默契進行開發,不明確的地方可以自行發揮或採用通靈的方式進行,也不會寫下明確的驗收規格,這類的案子最後通常呈現兩極化的結果。對於專案我相信大家都經歷很多了,當然並非所有軟體開發專案都是這樣。以前也曾經參與日本公司開發專案,倒是蠻認真進行規劃的。
談談軟體產品開發
軟體最大的價值在於複製,軟體的研發成本極高,生產複製 (或運行) 成本極低。基本上寫好的軟體跑一次就賺一次,把握這個特性加上網路槓桿便有機會創造更高的價值。那什麼是軟體產品開發?
開發限定目標市場需求的軟體,完成後可透過低成本的複製執行來滿足多數需求。
軟體產品開發的生態剛好與專案相反,產品「沒有一定的資源、沒有一定的時間、沒有一定的規格」,市場與需求才是引導產品發展的基石。但這其實是很難做好的一件事,有兩個難處,第一是如何洞悉市場需求,第二是如何歸納需求實作功能。失敗常常是因為沒做出來,或者做了沒人用 (我覺得沒人用最淒慘,頭都洗下去了.......)。為了與市場的變化一同共舞,最小可行性產品 (MVP, Minimum Viable Product) 是一個很好產品發展的模式,此外開發團隊也需要保有一定的靈活性,得以面對每一次 Pivot,對於創業開發團隊來說,敏捷開發是一個很適合的方法論。
比起專案,我覺得產品開發真的有趣多了,大部分的情況我們會先假設一個可能的市場 (畫大餅時間!?),然後盡可能在比較短的時間做出產品來驗證市場。伴隨著市場的回饋,產品發展也持續改變,在沒有達到 PMF 之前是不會結束的,因此也沒有什麼專案期限,要麻就是資源耗盡失敗收場,不然就是順利進展到下一個階段,需求持續發展、產品持續開發。
工作至今,我也參與了一些些軟體產品的開發工作,在開發上有幾點心得可以分享:
- 不要用做專案的心態做產品
- MVP 避免過度設計與過早優化產品 (Premature Optimization Is The Root Of All Evil)
- 為了能快速適應市場變化,架構往往比功能重要
- 用數據驗證市場,比用瞎猜或通靈來得有用
- 如果真的不行就趕快 Pivot 轉換你的產品,別往死胡同裡鑽
好吧,祝你產品之路順利,Good Luck!