你覺得寫程式很簡單嗎?如果是,你已經落入思維陷阱中了

* 如果你身為公司的系統外包專案負責人,你是否低估了系統的複雜度?
* 如果你是沒有技術背景的老闆,你認為產品開發工期只要一個月,工程師團隊卻告訴你需要八個月,你會如何處理?
* 如果你是工程師或技術團隊的負責人,如何面對過於樂觀的利害關係人?
或許閱讀與分享這篇文章能幫助到你。
分享一個小故事…

Tasla電動汽車的創辦人同時也是SpaceX的創辦人,伊隆.馬斯克,12歲時就獨立開發了一套遊戲軟體並以500美元出售。馬斯克早期為Zip2的共同創辦人之一,Zip2是一家美國的軟體公司,主要為新聞提供在線的城市導航與指南訊息。

天才技術長 v.s. 專才工程師

馬斯克的程式是自學而成的,coding能力不錯,擔任Zip2的技術長,也參與Zip2的開發,但不如專業的程式設計師精練。當Zip2招聘了新的程式設計師後,這群程式設計師看了Zip2的原始碼便著手修改大部分的程式碼,他們將軟體拆分成數個模組以便日後修改與維護,儘管這些專才達成目標的程式碼行數遠低於馬斯克原本所寫的程式,但馬斯克仍然相當生氣,馬斯克陷入一種思維陷阱:自學程式設計的人,通常可以用很平緩的學習曲線,實現想要的系統功能,但這些程式碼,經不起長時間的考驗,不好維護,隨著系統擴展容易發生問題。

專業的軟體工程團隊,能在時間、範疇、預算間取得平衡,得到更實際可行的完工期限、更精煉的工作方法。

馬斯克時常設定過於樂觀的截止期限,讓工程師有如死亡行軍一般,日以繼夜地趕工以便達成目標。

快,是真的快嗎!?

馬斯克非常聰明,而我們可以從一些事情了解伊隆.馬斯克的思維與判斷邏輯,以下摘要自《鋼鐵人馬斯克》對於馬斯克的描述:

「如果問伊隆做某件事情需要多久時間,在他的內心,沒有任何事情會超過一個小時,」安姆布拉斯說,「我們後來對一小時的解讀是實際上需要花一、兩天;如果伊隆說某件事情要花一天,我們就有心理準備有可能要一、兩週。」

「沒錯,在Zip2,我們有一些非常好的軟體工程師,但我的意思是,我的程式寫得比他們好太多了。所以我就直接走進去修改他們那該死的程式,」馬斯克說,「等待他們自己想出好東西,會讓我焦急又沮喪,所以我直接修改,現在程式執行速度快了五倍。還有個傢伙在白板上寫了一個量子力學方程式,一個量子概率,而且他寫錯了。我就說:『你怎麼可以寫成那樣?』然後,就幫他修改了。那些事發生之後,他恨死我了。我最後了解到,『好吧,我或許修正了那件事情,但現在我已經讓這個人失去工作動力與生產力。』那實在不是處理事情的好方法。」

我們不難發現,馬斯克聰明、學習力強,卻沒有技術債(Technical Debt)的概念,技術債是指開發團隊為了便宜行事或在資源有限的情況下(時間不夠、預算不夠)只好用退而求其次的方式完成系統的某個功能,但這種處理方式會在日後付出相應的代價。例如:你為了快速開發,直接使用別人開發好的模組或平台當基礎,但隨著系統的使用人數增加,卻發現這個模組或平台在處理大量資料的情況下,效能非常差,常常造成系統崩潰,你可能得花更多的時間、金錢去改善,連本帶利地去還債。

觀念與經驗的重要性

如果你同時懂得領導、心思縝密、熱愛音樂、設計與藝術,你可能可以像賈伯斯一樣,發明iphone、ipod;如果你同時懂心理學又懂程式撰寫,你可能會像祖克柏一樣,開發一套社群媒體平台;如果你同時懂得投資、統計學、心理學、工程、經濟學,你可能可以像查理.蒙格一樣,投資分析精準而犀利。

我們的決策系統是基於觀念與經驗學習而來的,有些是隱性的知識,你沒辦法直接從書中學習,專業的工程師,有豐富的實務經驗,並且具備以軟體開發為核心延展的know-how與skill,可以綜合時程限制、預算限制、系統功能的未來擴展性與彈性、平台轉移成本等眾多因素下去權衡利弊,而不是單純從開發速度的角度去思考優劣。

當我們基於各種學科和domain know-how累積足夠的經驗與觀念,就能增加判斷的精確度與成功率,所以當你是一個寫程式很有天份又博學多聞的技術長時,你沒辦法針對軟體系統開發提出精確的決策判斷,你必須同時學習專案管理、大型系統開發,累積足夠的觀念與經驗,才有辦法做出正確的決定。這時最好的選項可能是找個可信任又具有專業經驗的人才,基於他的建議與諮詢,增加自己判斷的精準度。

如何避開思維陷阱:人生是在有限的時間長度中,選擇你的起跑點與終點

無論一個人多麼天資聰穎,我們都只能在有限的時間內學習與瞭解某些事物,長期累積下來,我們的知識網路終究會有稀疏與密集之處。所以慎選你的學習領域 — 慎選你的起點,同時選擇你要在哪裡勝出 — 選擇你的終點。

你必須有意識地明白自己的核心領域知識與非核心領域知識,才能避開思考盲點與思維陷阱,對於非核心領域知識,我們可以問問身邊的朋友、閱讀相關書籍、參加研討會,以便盡可能提高自己的判斷精確度,如果是重要的商業決策則更需要尋求專業的諮詢與顧問。

如果你想更瞭解軟體開發工作者的生活,歡迎看看這篇文章:

避開思維陷阱,必須先認清彼此的認知落差,更重視集體智慧,平衡正反兩面的意見:

我是James,一位自由接案工作者
對於軟體開發與接案工作充滿熱忱,截至2018年,不知不覺已經累積11年的時間在這個領域打轉,擁有6年的接案經驗。 寫作是我一個新的嘗試,初衷是希望能讓這個環境變得更好,從三個面向出發:
1.個人:強化團隊成員的生產力與技術力,提供技術觀點與教學、工作方法等硬實力。
2.組織:培養良好的團隊合作態度與企業文化、分享合作與溝通技巧。
3.社會:讓客戶、發包單位知道如何有效處理系統外包,把資源花在刀口上,並透過接案經驗分享促進良好的合作。
FB粉絲頁艾菲肯先生——您最佳的技術夥伴
個人刊物 艾菲肯先生的咖啡時間
工作室網站
Efacani.com