使用測試驅動開發大概有5,6年歷史了
進業界後,我寫的程式碼有BUG很少的特點
會動用到除錯器,絕大部分都在幫別人除錯
而使用測試驅動開發方法後,程式碼更近一步妖孽化
當然程式一定有bug,只是QA沒機會測出來
因為測試程式會在QA或客戶測出來之前,先自我了斷
好的~~測試驅動開發確實有用,我想
BUT.....
之前我的名聲在PM間其實並沒有太好
理由是我雖然是資深工程師,但產碼速度並沒有明顯優於資淺的
他們常常苦於面對客戶的壓力,又不敢對我大小聲
我一知道這件事立刻找他們好好吃了很多頓飯(可以申請公關費嗎)
並調整我的作法,之後我們合作愉快
我有個習慣,會把看過的舊書隔段時間再看一次
今天重溫敏捷軟體開發,原則樣式與實務
想起了這件事,所以把心得記下
到底實務面上的執行會發生什麼事呢?
台灣的軟體公司大多是接案,沒有自己的核心產品
我運氣不錯,新手前幾年是在一家做產品的公司工作
是Linux嵌入式系統,所以學了不少Linux的知識,C/C++也不錯
我第一次看見Android底層程式碼的印象是
嗯~寫得很爛
(喂!!老兄,等你進得了google再吹牛吧)
嵌入式軟體的特點是,它一旦出貨就很難更新韌體
(你有幫你家DVD播放機更新過韌體嗎?)
所以它的軟硬體品質必須一級棒
硬體有BUG軟體必須設法克服
軟體不得有重大bug
有些必須一年365天,一天24hr無誤運作
一旦發生錯誤必須能夠自我偵測修復
因為有些系統很便宜,業務跑一次就虧本了
所以測試驅動開發是對的,我如是想
後來我來到這家做專案的公司
使用.NET MVC開發產品
C#加上VS真的是一個超棒的開發環境
它具體有多棒只有前C++/Linux工程師能感受到
我立刻發現到公司同事寫的程式問題
攏長,雜草叢生必有妖孽
我重構了100行的程式碼,發現最後只剩兩行
還順手解了幾個bug
我從一開始不解,憤怒到現在發現這是業界常態
慢慢接受了它,並剖析它形成的原因
收回之前Android底層寫得很爛這句話,因為我們更爛
程式是寫來賺錢的,不是學究的玩具
工程師都很聰明,沒有人可以忍受雜亂無章的程式碼
但為何會寫出這樣的程式呢?
台灣的軟體專案錢很少
翻譯一下就是,客戶只出100塊但卻想要1000塊的東西
沒sense的客戶比比皆是
我認識的接案公司賺錢的沒有,倒閉一堆
還活著的都是當仲介賣人力的
以PM的角度
系統越早上線越早收錢
讓公司的現金流能夠維持穩定才是第一要務
很多PM常常兼業務和PO,我這裡談現實層面
不是人人都有機會進趨勢科技
所以台灣軟體人九成要面對這個問題
只懂軟體的人通常位置不會爬得太高
我們如何幫助他們,這是我們受雇的理由
翻譯一下就是:
系統讓客戶買單,早日收錢,薪水入賬,股東happy
然後再去做下一個系統
copy paste可以辦到的話,為何不行?
黑貓白貓可以抓老鼠的就是好貓
客戶這次找你,心理想的是系統上線後拿到原始碼
然後找更便宜的人維護( 這件事通常不會發生,理由後敘 )
所以你重構程式,程式清晰,架構好,維護輕鬆和功能新增容易
是爽到後來接手公司
做產品是你公司開門第一天到倒閉最後一天
每天都會看到它
品質差,bug多,不好客製化
會像陰魂一樣每天追著你跑
我常對小朋友說
做專案是光榮拿走,只留下恥辱
第一發有湯喝,第二發渣都沒有
所以基本上沒有人會想接手別人的爛攤子
以客戶的想法,程式都寫好了
只是寫改個小東西,收幾百塊就好了
各專案公司都清楚得很,業務能量不會投資在接舊專案
因為很難拿到合理的報酬
架構差,有時候改個小東西,運氣不好是整個模組要重寫
吃力討不好,不接,除非客戶來求
如果是第一發以拿錢為目的
那事情就單純多了
甚至有不寫一行程式就讓系統上線的方法
我後來和PM們達成共識
只有少數明顯的複雜邏輯才寫測試
做事方法改用故事流驅動
故事流的終點就是上線收錢
尋找最便宜的方案
就是我們資深工程師的責任
時間 + 人力 + 金錢
最小方程式
這裡有兩個分歧點
1. 我們要交給客戶60分的產品 (客戶所能接受的最下限,人善就被人欺,不用客氣 )
2. 發揮專業使用最節省的方案,交給客戶100分的產品
告訴你一個事實,大多數業務認為專業狗屁,你們不懂業務
所以他們心理的大多是方案1,逼不得已才是方案2
而且方案2下他們不是主角,很難有好的KPI
大多數公司業務位階比較高,這十分合理
因為賣不出去的產品,多好都沒用
我待過倒閉的公司,深知垃圾賣得出去才是硬道理
公司不賺錢是罪惡
所以我把方案一和二做了結合得出方案三
3. 發揮專業使用最節省的方案,交給客戶60分的產品
測試驅動開發雖然品質高,但它明顯比較花時間
時間金錢不是問題時無所謂
但在有限預算下,還有其他選擇
(哪個案子錢是夠的?)
有些學究派的軟體工程師可能會噴我 (比如說以前的我)
或許你運氣不錯待了一家正統的軟體公司
我只能說做人很難,沒有永遠真理
寫軟體也是
於是一個SD和PM們過著幸福快樂的日子
END?
留言列表