在我的前一篇文章「Specification by Example - 團隊如何交付正確的軟體」,我提到了一件在工程師界,人人皆知卻不願意說出口的「秘密」:
「工程師竟然時常比他們的雇主或PM,更了解它的生意邏輯與流程」。
「客戶在它的 Spec 裡面卻指定了完全不可行或者是成本效益極低的作法」。因為簽了合約或領了老闆的薪水,我們被迫在明知不可而為之的狀況下,進行了一個徹底失敗的專案。」
如果你不是身處於工程師這個圈子的話,若無意中聽到這一件事,通常會覺得這群人相當傲慢。這群人不負責執行 Bussiness Development,怎都可大膽有此感想?
一開始,我也對這個「觀察」是存疑的。因為一開始時擁有這個觀察時,我還算是個很菜的工程師,這個觀察對我來說應該是錯覺。但隨著生涯中經歷過許多專案的角色。在專案中,我屢屢嘗試著尋找能夠反駁這個觀察的蛛絲馬跡。但最終都以失敗告終。
而後來更輾轉得知,這幾乎是這個圈子內「不能說出口的秘密」。我才同意這也是真的結論。只是我還是找不出 理論 / 反證。
直到最近,我才從幾段討論中,赫然領悟這件事情也許可能是有一套理論可以解釋的。
一段是從 @yllan (台灣知名 Cocoa 開發者,Nally 作者)在的 Facebook 的 post
====
Steve Jobs 說他很喜歡一個比喻。他以前在 Scientific American 上看到一篇文章,研究各種動物運動的效率,最強的是兀鷹(同樣的運動使用最少能量),人類排名普普通通,可能排在所有動物的三分之一左右。
有趣的是,那篇文章也研究了「騎著腳踏車」的人類,而騎腳踏車的人其能源效率把所有動物遠遠甩在後頭。人類製造工具大幅拓展自己的能力。而 SJ 把「電腦」比喻成「心靈的腳踏車」。
他又認為每個人都應該學程式,因為你在教電腦事情的時候,其實是在釐清自己的思考。這正和 Knuth 的名言「A person does not really understand something until after teaching it to a computer」不謀而合。
====
一段是我在跟與朋友的網路爭辯中,脫口而出寫出來的一段話(我常常從辯論驗證中,突然找到靈感,這些感想甚至是我自己也不知道為何會脫口而出的絕妙結論):
====
====
我終於理解,為什麼 RD 會提早知道這個生意能不能成。這根本的原因就是因為他們便是嘗試教電腦事情的第一線人員。也就是會先面對「釐清」實作上「合不合理」的第一個人。
程式邏輯是非常現實的,若這件事不合理,RD 就會面臨「無法實作」的困境。這是其一。
其二:只有實作的人,才會知道這件事到底要作多久。RD 也許有樂觀病,往往他們告訴你需要實作兩週,但往往真實需要的時間也許是四週。但如果他們告訴你,需要半年這麼久,或者是根本作不出來,沒有完工的可能性。那可能這件事就不可能發生 -- 起碼在他們手上。
同時也應該要注意的是,這直接反應了成本的爆增。有時候,這甚至不是換一批執行團隊可以解決的問題。RD 正在試圖告訴你,執行代價高昂,你最好不要白花錢。因為很現實的,他也不想要白花時間…
其三:所有 RD 都非常討厭寫 event code。所謂 event code 就是只用過一次的 Code(因為某些特殊事件,如廣告、行銷活動,只執行過一次即扔的產品)。這類型的程式碼,往往無法被重新用在下一次的類似事件中,只能重新撰寫重新來過。這對任何重視自己心血結晶的人,重新來過是非常累人非常惱人的事。
而這對生意執行面來說,是非常高昂的沉沒成本。一再發生,甚至是不應被允許的行為。
小結
任何賺錢生意無非都是幾個簡單原則:首先,先觀察到一個合理需求。接著針對這個需求設計出一個可執行的解決方案。重複,證明解決方案可以被重製,可以得到收益。接著壓低執行成本,演化出一個可以獲利的模式。而在這段過程中:
- 合理實作
- 時間成本
- 重複效益
是至關重要的。
世上從來就不存在這麼一個假設:「覺得自己有一個偉大 idea,接著偉大的事情就會發生」
而在整個模式的發生過程,RD 正是日日夜夜都要面對這個挑戰的第一線執行者。
如果他們很坦白的告訴你這個想法很蠢,也許這件事就真的很蠢,你應該停下來聽他們怎麼說…