close

使用測試驅動開發大概有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?

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 gaussian1998 的頭像
    gaussian1998

    sean huang的部落格

    gaussian1998 發表在 痞客邦 留言(0) 人氣()