Re: [討論] 前人的code 後人翻寫的機率高嗎?

作者: Argos (Big doge is watching u)   2018-09-25 16:57:54
※ 引述《banqhsia (BEN)》之銘言:
: 很多前輩們會建議,要重構前先寫測試
: 但是
: 一個萬能類別/萬能方法/高耦合,要寫單元測試,發現整個系統都要寫
: 有些 hard code 的 class 還不見得可以 mock
: 「人」的問題
: 無解。
BEN兄講得很好
我看到底下有人提出一個很好的問題
重構、SOLID、設計模式、review、unit test 這些東西做起來既麻煩又沒有比較省時
為什麼要做?
沒有錯
敏捷開發的關鍵是敏捷而不是快
更嚴格來講
敏捷開發所謂的快
跟一般認知所謂的開發時程的快
是完全不一樣的東西
很多人會把他們混為一談
包括一堆只會學著念buzzword的老闆或PM
開發很靈活
不代表開發會很快
開發很快是指給你個功能你三天就做出來
但就是做出來
什麼東西通通都寫死
不用架構東西通通一個class搞定
一個method上千行
裡面if else巢狀大概超過5層
如果使用敏捷開發
有完整unit test、有review、有注重SOLID有用到設計模式
雖然要花兩週
但在日後有新需求要改這個部份時
可能只要花一小時
然後花三天的那個要改一個月
這還沒談到bug的多寡
後者出bug的機會肯定是遠少於前者
就算出了bug
解bug的難度與所花的時間也遠少於前者
大概就是這種感覺
這也是為什麼一堆人不願意用心寫程式
1. 你怎麼知道未來這模組會不會有新需求?
如果沒有新需求,那我幹麻花兩周在那邊東搞西搞?
為了未來那不存在的新需求預作準備?
2. 隔壁小明每個需求來
三天就幹完
我還在這邊慢慢摸?
老闆臉色越來越難看
終於有一天把我叫進去老闆辦公室
人家小明三天就完成你為何都要一週以上?
能力不足嗎?
再這麼慢就給我滾吧
3. 隨便寫寫也是領這點錢
認真寫也是領這點錢
何必?
4. 出bug?在我工作時碰到算我倒楣啦~
反正我一兩年就換間公司
台灣滿地職缺老闆就沒差跪著求我去上班
我們工程師根本不缺工作
那我敢麻做什麼鬼測試?浪費時間
基本上好好寫程式的誘因太少
大多數的人就不會願意寫好程式
因為寫好程式是很花精神花時間花腦力的
是很累人的!
所以這種東西一定要上行下效
上面的人要用力去盯下面好好做好
並且給予合理的時程與支源(比以前加兩倍以上時間、讓資深花時間帶資淺作pair programming)
但如果上面不重視
那你玩clean code、勉捷開發只是找自己麻煩而已
因為企業環境就是逼迫你跳進焦油坑內打滾
你只能趁著還沒完全被淹沒時趕快再跳到另一個焦油坑
然後又開始在裡頭掙扎、沉沒
時光流轉、周而復始
台灣的資訊產業也就漸漸變成了資訊慘業 XDDD
所以
在台灣如果上面管理層沒有這些概念
不曉得什麼叫好好寫程式
也沒有作過專業的評估
但你又看了幾本書
甚至已經到過了所謂的應許之地
念茲在茲都是美好的程式碼
那你只能做幾件事
1. 轉行上層很重視這個的公司
(有辦法的話 最推薦 XD)
2. 在公司內推行
(很累很拼還要會講話更要會做人尤其不能得罪那些食古不化的老屁股)
3. 自己寫code時偶爾顧到,時間緊了就算了,當作功德
(大部份人會選這個,比較不累,但又可以在不影響原本工作的情況下練習)
或是你也可以回去寫垃圾code
要知道努力不一定會成功
但不努力肯定會比較輕鬆
就看你想走哪一條路了
作者: MOONY135 (談無慾)   2018-09-25 17:08:00
簡單來說就是未來的坑可能是別人去扛XDDD
作者: michaelchen1 (麥克麥克)   2018-09-25 17:33:00
推 我朋友就在解坑中
作者: asleisureto (ASLE)   2018-09-25 17:47:00
第三點真的是關鍵…把自己搞到累死得罪主管同事,錢也不會比較多qq
作者: abccbaandy (敏)   2018-09-25 20:37:00
中肯...很多不懂的PM/老闆評價RD就只會看做的快慢(嘆
作者: sharku (明珠求瑕)   2018-09-25 20:44:00
作者: O187 (187cm)   2018-09-25 21:43:00
我遇到的是被同事罵:這只有你會懂,沒人懂。所以還是別用設計模式事實上我還是用了一堆設計模式,然後離職丟給他接
作者: philip80220 (花)   2018-09-25 21:46:00
看了這串真心覺得我們公司根本佛心 code很有系統
作者: clamperni (肥宅牛牛)   2018-09-25 22:33:00
不用心是假議題 沒能力才是真的
作者: johnny94 (32767)   2018-09-25 22:42:00
這篇正解,太多人誤會敏捷開發就是用很快的速度丟出產品原本要 3 天的東西,不會因為用了敏捷開發就變成 1 天
作者: ppHomer (三腳貓)   2018-09-25 22:56:00
老闆不看code 然後寫3天寫很快的被指派&完成新任務接手的人兩個月整理完程式.繼續接"維護"接bug接電話
作者: banqhsia (BEN)   2018-09-25 23:16:00
推clamerni大。沒才條還嫌工具壞 (台)
作者: viper9709 (阿達)   2018-09-26 00:03:00
某方面來說還滿中肯的
作者: vi000246 (Vi)   2018-09-26 00:39:00
敏捷開發是前人種樹 後人乘涼爽也是爽到後面進來的人
作者: ttt95217 (略)   2018-09-26 03:52:00
還是要看案件類型 如果是要持續使用改善的當然就要長遠規劃
作者: expup (linux)   2018-09-26 04:10:00
台灣一堆專案公司哪管那麼多就是要快 能跑就行做產品的公司 也滿多是這樣子 先求有再求好 xd
作者: jamestian (No defined)   2018-09-26 07:26:00
精闢!!!
作者: t64141 (榕樹)   2018-09-26 09:18:00
先求有之後就會變成程式能用就不要亂改
作者: luiGiF (luiGif)   2018-09-26 10:46:00
每次都在補前人的屎坑 想翻新真的要很大的努力
作者: SonicMax (只要XX手上有槍...)   2018-09-26 22:20:00
事實上自從我自己寫APP, 很多clean code的習慣都是一邊寫一邊養成的 原因只有一個:維護容易尤其是OO類型的語言 不用物件的概念去寫很怪

Links booklink

Contact Us: admin [ a t ] ucptt.com