2018年6月5日 星期二

大膽的創造技術債的工程師

今天看到一篇文章,我覺得真的寫得不錯。前一陣子,我做了一個夢,夢裡面的我實際遇到了這樣的人,想跟大家分享。
工程師應該大膽地創造技術負債
我做了一個夢,夢境是這樣的:

我夢到,兩年多前的我,剛加入(前)時間軸,還懵懵懂懂的時候,我加入的第一個專案是某 E 專案,客戶是某電信商。那是個企業用的、類似 Line 的 App,那個時候的我,是 Android Leader,負責的是 Android App 的部分。
在我完全接手之前,後端的部分是由一位留著鬍子的中國同事寫的,他用 Erlang 開發後台,聽說全台灣沒有幾個人會,寫的 code 又很糟糕,無法 Maintain,他同時也是前團隊的 Leader,從 1.0 到 1.1 到 1.2 版,客戶都非常不滿意,品質爛到幾乎無法做驗收,完全不想付錢。
怎麼叫爛到幾乎無法驗收?就是 1.2 版,客戶總共做 UAT 做了 12 輪,每一輪需要 3 天做測試,測到的 bug 我們也是需要兩三天修掉,所以一輪大概是一個禮拜。(這邊提一下,我是在第 8 輪還是第 9 輪的時候加入公司的,用了三個禮拜勉勉強強把 App 收掉。)
你能想像光是 UAT 就做了 12 週嗎?三個月耶!再找一群人,都寫完了。
所以客戶不願意付 1.2 的錢啊~其實,他們連半年前的 1.1 版的錢都不想付。
後來過了幾個月,客戶決定重新打掉重練,把前後台所有的技術債都倒掉。
可是目前已經上線的系統還是有人使用,bug 必須要解啊。
客戶就用一個月(聽說)六位數的數字,請那位前中國同事回來,美其名是顧問,其實是幫忙解 bug。
其實我後來想一想,他這樣做,一份 code 賺兩次錢,而且全台灣只有他知道怎麼解 code,收入又好多,感覺好棒。
所以,我決定把這件事寫出來,遏止這樣的工程師。
我覺得,這件事有問題的是以下方面:
1. 這個專案的甲乙方的頭都有問題,甲方 PM 完全沒有能力評估我們的專業能力、跟程式碼品質。而乙方,就是我們,當初是行銷的頭去拉到這個案子的 XDDDD。
2. 專案組成人員的能力。
3. 同流合污的文化,這樣子做事這樣子幹,居然隊友們沒有抗議,沒有人覺得這樣是不應該的。
簡單的說,外行領導內行。
當我們接手後用 scrum, 用嚴格的 code review + 一點點的 Unit test 鎖住核心部分。兩個月的時間,開發 1.3 版,然後客戶進行 UAT,Android 這邊只被找到 1 個 bug。全場都驚呆了。再兩個月開發 1.4 版,又 UAT,三天以後,客戶找不到任何 bug。
當然,這並不代表沒有 bug,只是沒被抓到 XDDD
然後,我們就決定不要再跟客戶續約了,我做了(自認為)不錯的教學,把 Andorid 這邊的程式架構,交接給客戶的 RD leader,對方是 Woody 吧,就說,Terry 我覺得你不錯,以後有機會再合作。這對我是很大的肯定 :) 而程式他們也繼續順利地接手了的樣子。
這不就是做案子嗎?這不是政治啊,這不是厚黑學啊~對那位中國同事來說,沒錯,收到了豐厚的報酬,但這個專案在當時,很可能客戶不願意付錢,而造成了公司的損失,而他可能也不會過得太好。
我前幾天又在內湖軟體園區附近看到那位前中國同事,我相信他還在業界,希望他已經不會再像以前那樣做了。人都是會犯錯的,錯了一次,就別再錯了。
然後我就醒了。
呼~
嚇得我一身冷汗。