「這個網站很簡單,你只要做 X、Y、Z 三件事就好。你看起來技術很強,幾天肯定能搞定。」身為開發者,你一定收過無數封這樣的郵件。寄件人幾乎都不懂技術,或是正在嘗試打造第一個產品的新手創業家。
剛開始看到這類評論,我總是火冒三丈:他們憑什麼替我估工期?但後來我發現,連我自己對自家專案的工期預估都經常打臉,又怎能怪外行人不準?真正讓人挫折的,不是他們估錯了,而是他們自以為能估準。
為什麼外行人總把軟體開發想得太簡單?這要從人類大腦評估複雜度的機制說起。我們主要靠兩種「現成模式」:
看著吉他手彈《瑪麗有隻小羊羔》,即使你從未碰過吉他,也能直覺覺得簡單;但聽到《卡農》快速分解和弦,立刻知道需要長年累月的練習。大腦透過「單位時間內的動作密度」來推估難度——這是針對物理、可感知過程的有效策略。
帳篷蓋久還是公寓蓋久?沒學過建築的人也能答對。大腦習慣用「物理體積」作為複雜度指標——體積越大、結構越多,工程越繁複。
軟體無形、無體積、無速度。它的基本單位是邏輯判斷與資料流向,肉眼看不見、摸不著。外行人無法用「速度」評估,只好退而求其次,用「需求文件頁數」、「功能點數量」當體積指標。
這在靜態網站上偶爾管用,但一旦涉及業務邏輯、資料庫優化、第三方整合、併發處理……「體積」與「複雜度」完全脫鉤。一個看似簡單的「使用者登入」功能,背後可能藏著 OAuth 整合、Session 分散式儲存、防暴力破解、多裝置同步等無數細節。
資深工程師靠的是「類比經驗」:這功能像上次那個專案的模組,大概要幾天。但每個專案都會冒出 2-3 個未知的坑——效能瓶頸、相依套件衝突、規格臨時變更——它們能吞噬數週工期,且在動工前完全預測不到。
別生氣,深呼吸。對方不是針對你,只是人類大腦的直覺系統在非物理領域失效了。你可以:
記得:專業不在於反駁「簡單」,而在於讓複雜度可視化、可量化、可管控。