顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-12-03 20:55:35
看板 Soft_Job
作者 keke0421 (zrae)
標題 [轉貼] 工程師應該放心大膽地創造技術負債
時間 Sun Nov 12 15:39:45 2017



覺得好貼切...分享給各位

轉貼於 https://goo.gl/dEpoJQ <--medium 好讀版
工程師應該放心大膽地創造技術負債 – 工程師幹話 – Medium
舉個例子,假如你是警察,你決定要認真抓小偷,於是上個月在你的管區破獲了五十起竊盜案,這個月因為你的努力,破獲的案件增長到一百件 — 這代表什麼呢?這代表看起來你的管區治安變差了,而你應該要為治安變差負責,你才是應該被檢討的對象。於是你知道,警察好像應該要想辦法破案,但實際上,你的績效並不是來自破案, ...

 

身為軟體工程師,你應該要盡量寫出無法維護的程式碼,而且絕對不寫測試。
你應該要知道:在績效管理下,你愈是認真負責,愈是做到符合專業倫理的要求,你反而
看起來績效愈差。而你大概會有 87% 的比例,會遇到這種績效管理。

舉個例子,假如你是警察,你決定要認真抓小偷,於是上個月在你的管區破獲了五十起竊
盜案,這個月因為你的努力,破獲的案件增長到一百件Xo代表什麼呢?這代表看起
來你的管區治安變差了,而你應該要為治安變差負責,你才是應該被檢討的對象。於是你
知道,警察好像應該要想辦法破案,但實際上,你的績效並不是來自破案,而是吃案。

如果你花了半年時間,抽絲剝繭理清了複雜的商業邏輯,建立了清爽明確的抽象層,並且
預先額外設想了其他的使用情境,最後開發了一套易於擴充的軟體架構,讓一個大學剛畢
業的新人,都可以在你的架構上不到一個星期就可以開發出新功能。這代表什麼呢?這代
表你的績效很差XA的管理者只會看到,你花了半年才做了一件事清,一個新人剛來

,卻只需要花上一個星期就可以完成一件事,那還要你來做什麼呢?

至於可以輕鬆開發出新功能的新人,他會怎麼看呢?可以這麼快開發出新功能,當然是因
為他自己的功勞啊!跟你有什麼關係呢?真的要了解你到底做了什麼,其實只有一個辦法
,就是要閱讀你的程式碼,但,放心好了,不會有人會去讀的。


你要做的事情就是:管理者設定了什麼績效,你就想辦法達成什麼績效。如果管理者設定
的指標是你修好了多少 bug,那麼你就要想辦法一開始就在你的程式中製造許多 bug,免
得日後需要修 bug 的時候沒有 bug 可以修。如果管理者的目標是加速開發,你就應該要
不計後果加速開發新功能,明知道是加速邁向毀滅,你也要加速開發。


事實上,身為軟體工程師,你也根本不用考慮後續維護的問題。如果你在一家公司寫了一
大堆完全不考慮耦合關係、程式邏輯糾纏不清、命名混亂、使用大量 anti-pattern、到
處都是怪氣味、效能極差而且宛若天書的程式碼,而你開始為了繼續維護這樣的技術負債
感到痛苦的時候,其實只代表一件事情:你已經在這家公司呆得太久,而且還沒有升上去
當主管。


這個時候你就會知道加速開發的好。你完成了這麼多項功能,於是在你想要換工作得時候
,你可以寫出洋洋灑灑的履歷表。反之,你會把你寫了幾條單元測試、達成多高的覆
蓋率這種數字放進履歷表裡頭嗎?把力氣放在測試這種無助於發展事業的事情上,完全就
是在浪費你的時間。

你也同時應該感謝是誰想出來軟體產業園區這種德政,原本製造業的產業園
區是讓上中下游供應鏈可以集中在一起,降低運輸成本,但軟體這一行又沒有供應鏈這種
事情,成立園區只是讓相互競爭的軟體公司其中在一起,唯一降低的就是人員流動的成本
,換工作都不用搬家。多好啊你看。


如果你有機會高升,開始擔任主管,你就會知道,當初寫下的那些無法維護的 legacy
code,其實更有助於你擔任主管的管理工作。

擔任主管最重要的工作,不是別的,就是一邊把持住自己的位子一邊想辦法繼續往上爬,
所以主管絕對不可以讓部屬表現得比自己更優秀,而你當初寫的程式碼,就是部屬事業道
路上最好的絆腳石。你除了可以一邊抱怨為什麼新功能開發愈來愈慢,一邊說嘴當年你只
花了多短的時間就寫了多少程式碼,果然只有你有資格擔任大家的主管。


當然,總有一天技術負債會大到你的部門什麼東西都做不出來,你的公司什麼服務都拿不
出來賣,但是這一點都不會影響你找新工作,你瞧,現在,你的履歷表上面,可寫著你當
過主管呢!拿著這份履歷表,你更有機會去別的地方,空降擔任更高階的主管。

技術負債從來就不是什麼問題。誰說你製造了技術負債之後,你就得要自己還債?

在你的人生中,你不需要要為其他人而活,也不是為了程式碼這種死物而活,你真正應該
要負責的對象只有你自己;而你知道人是經濟而自私的動物,既然你的本性就是貪婪,你
就應該成就貪婪。你要捨棄專業才能成就事業,你應該要把握當下的績效,而不要為了可
能不存在的悲劇結果恓恓惶惶。凱因斯不就曾經說過:「In the long run, we are all
dead」?

身為軟體工程師,你應該放心大膽地創造技術負債。這麼做唯一的風險,就只有在你換工
作的時候,也會接手一大筆前人留下來的技術負債。不過,這種事情反正也早就已經發生
了。


※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.172.125
※ 文章代碼(AID): #1Q1_h3qp (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1510472387.A.D33.html
AV5566: 不知道為什麼 覺得好中肯1F 11/12 15:45
JackChena: 怎麼覺得很現實,卻又無奈2F 11/12 15:53
TitanEric: 現在還沒工作沒辦法認同… 但也許工作後想法就會改 有3F 11/12 15:55
TitanEric: 前輩可以分享嗎
pttworld: 創造技術負債怎麼升主管沒講清楚。直接跳當主管誰不會講5F 11/12 15:57
vi000246: 這種趕專案沒時間規劃架構的公司 本身就是雷6F 11/12 15:59
accessdenied: 你的心態很垃圾!7F 11/12 16:02
shortoneal: 但是其實這個時代還能靠這個爬上主管的機會不多了8F 11/12 16:03
expury: 然後就被主管約談了xdd9F 11/12 16:08
ian90911: 原文的帳號叫做"工程師幹話" XD10F 11/12 16:09
kain777: 寫的不錯 這就是現實阿11F 11/12 16:09
TllDA: 警察的舉例就很爛了  後面略過沒看12F 11/12 16:13
robler: 寫的很好阿,很現實13F 11/12 16:19
robler: 很多主管都會喊著 快速開發 那就快給他看阿 反正以後爆了
robler: 我不在了他也不在了 大家都開心~
gentleman45: 想到之前看一篇文,工程師在程式裡加了迴圈,老闆要16F 11/12 16:22
gentleman45: 求提升速度就拿掉一個迴圈並要求加薪
yyc1217: 警察不是這樣算的 破案越多績效越好才對18F 11/12 16:30
monoceros629: 中肯到不行,快速產生績效然後升職加薪跳槽,親眼19F 11/12 16:32
monoceros629: 見證同事升職加薪,然後程式碼別人維護
shps951015: 就不要遇到技術主管跟技術下屬 你是我上屬 一定檢舉21F 11/12 16:40
wtao: 不好的程式創造多個工作機會,此言不假22F 11/12 16:43
NodeWay: 是滿多公司這樣 但也看過不少公司有在執行code review23F 11/12 17:14
NodeWay: 反過來想 一直在寫爛code的人 換了工作技術還是沒提升
NodeWay: 一樣待在那種不要求技術品質的環境 惡性循環
chrisjohn214: 工作很久了,這篇是事實沒錯。26F 11/12 17:15
chrisjohn214: 只有技術主管有話語權時才有用,但是大部分專案一
chrisjohn214: 趕,技術職往往不敵業務
qazedcrfv: 如果心態這樣寫程式永遠不會變強29F 11/12 17:24
a1982213: 技術是不會強,因為這是公司政治問題30F 11/12 17:26
abccbaandy: 很中肯阿,老闆根本不在乎你的code,驗收能過就好31F 11/12 17:27
Hordor: 其實有小主管有兼開發就避免了32F 11/12 17:29
djshen: 以為亂寫又埋bug 要解的時候只會有你當初埋的那些?33F 11/12 17:29
A90812345: 中肯文章收錄XDD34F 11/12 17:30
keke0421: 不是不想寫好,而是大環境和公司政治問題35F 11/12 17:32
stitchris: 太中肯了!! 台灣環境是如此沒錯36F 11/12 17:35
wt: 用這些招最多就是在後段的公司裡跳來跳去。想要進到前段的公司37F 11/12 17:41
wt: (薪水也前段),好好精進自己、展現實力,比較實際
chuegou: 夠酸 我連續兩個工作都在收爛攤 覺得酸的好39F 11/12 17:51
MOONY135: 不知道該說什麼 但的確很符合40F 11/12 17:53
anandydy529: 中肯41F 11/12 18:01
cokellen: 台灣就是這樣42F 11/12 18:03
※ 編輯: keke0421 (1.169.172.125), 11/12/2017 18:17:22
jen1121: 自掘墳墓&心態不對43F 11/12 18:19
MOONY135: 不打算維護的話只要能動就可以了44F 11/12 18:24
drajan: 會看不到你做的成果的主管跟公司 你還待著幹嘛?慢性自殺?45F 11/12 18:25
g001613001: 感覺這種心態不對...46F 11/12 18:30
ssufoppp: 中肯啊雖然是反諷但是很符合台灣軟體產業現實47F 11/12 18:50
sojoasd: 若每天都在維護痛苦的程式,花時間弄還被嫌做太久,也沒48F 11/12 19:02
sojoasd: 時間、沒心想改,只好能跳就跳比較實在,錢越多改爛code
sojoasd: 還比較情願 顆顆
codehard: 符合現實給推51F 11/12 19:15
y3k: 看狀況吧 要這種作為還能賺錢 公司對外的政治力要很高52F 11/12 19:22
y3k: 如果上面太軟 弄到最後還是丟回來自己人再扛 我是搞不清楚這
y3k: 樣是搞啥小... 常覺得跳一跳去國外或自己存錢出來闖比較實在
vi000246: 反正我很簡單 上頭要我快我就快 等爛攤收不掉了再跳槽55F 11/12 19:55
vi000246: 上頭肯給我時間 那我就把公司專案當自己的 好好規劃維護
vi000246: 不過這種專生大便的公司我也待不下去就是了
cha122977: 台灣真是這樣的話 也難怪軟體業起不來了58F 11/12 20:55
TAKADO: 覺得要耍這種小手段才能生存/上位的公司本身體制就有很大59F 11/12 21:07
TAKADO: 問題。就跟某些產業,認真踏實有專業背景的業務沒業績,
TAKADO: 而靠帶客戶踹酒家收回扣順便A公款的業務反而是公司紅牌一
TAKADO: 樣不健康。
NCUking: 很中肯呀 硬體廠裡面的軟體部門都是這樣搞63F 11/12 21:13
RunRun5566: 爛地方的確可以這樣搞64F 11/12 21:44
jlhc: 這篇講的很對呀 事實上軟體開發的大企業都是這樣搞的吧65F 11/12 22:15
jlhc: 只是作法不一定一樣
setterwu: 大致上是正確不過預留客戶可能要你修改你可以快速改架構67F 11/12 22:24
lovving777: 認真推中肯文68F 11/12 23:21
aacs0130: 很多公司都這樣。技術債的痛只有技術人懂,高層如果只要69F 11/12 23:56
aacs0130: 求時程<最後就會債越欠越多越來越難開發
aacs0130: 時程+技術債壓下來就是工程師們無止盡的加班
XJY13: 正解啊 就像我學長離開前說 想要我的code嗎 到svn/git 挖72F 11/12 23:58
XJY13: 就開啟大bug時代 我轉到新公司盡量把code品質弄好反被說慢
aacs0130: ASAP, time to market, "最小可行產品"現在聽到都會頭痛74F 11/12 23:59
shortoneal: 好高高層會覺得這些就是請貴松松工程師的意義啊75F 11/13 01:37
t64141: 覺的心態不對,但非技術出身的主管真的會被這種手段騙過去76F 11/13 01:48
flash5408: 這啥 不用code review 嗎77F 11/13 03:29
joyce66789: 通常做得到這種境界的人都是渾然天成的就成功了 XDDD78F 11/13 03:42
pig0038: 新人表示...面過的 50k/m 以上 entrance level 外商工作79F 11/13 08:00
pig0038: 主管都會 coding, 單位都會unit test 跟 code review...
pig0038: .還有這種老人思維只能一輩子卡外包公司
pig0038: 面試主管直接看實作包含 unit test, 以及 code 可讀性,
pig0038: O(n)反而是其次
abc01251: 狗咬狗 一嘴毛84F 11/13 09:51
usoko: 推 我也是不斷refactor然後考績被打很差的人 哈哈哈哈哈85F 11/13 10:29
Neisseria: 這是作官的思維,真的要寫好軟體不要學這些奧步86F 11/13 11:46
Neisseria: 不過... 必要時還是可以小用一下啦,有時候要看時勢
ku399999: 噓的到底是...看不懂反諷嗎88F 11/13 12:39
d1288999: 覺得相當中肯89F 11/13 13:15
cerwvk: 中肯90F 11/13 13:17
alan23273850: 中肯 只能找有code review的公司了91F 11/13 16:36
wellkom: 這種廢文竟然可以賺稿費,台灣真的要沉了(我是說原文)92F 11/13 17:23
wellkom: 國之將亡百鬼夜行
s860134: 低能思想,code review 叫你翻掉重寫94F 11/13 19:01
s860134: 沒 code review 就是會有這種妖魔鬼怪
supernow: 中肯推,啥code review能吃嗎?老闆就只要快96F 11/13 21:49
Lorekeeper: 老實說...中肯 XDDD97F 11/13 22:29
fish0112: code review是啥XD 號稱了1年繼續期許XD98F 11/13 23:52
doranako: 有點現實,但是很反對,因為這樣也對自己也是很麻煩99F 11/14 08:33
oyaji5566: 我開始相信你了!準備進行人工程式碼混淆作業100F 11/14 15:49
odahawk: 所以有些公司股價只剩幾元不是沒道理的101F 11/14 16:47
viper9709: 心態不對+1102F 11/14 22:42
THEWORLDS: 可憐 沒遇過國際等級駭客寫這啥文章103F 11/15 02:22
sthermit: 雖然一看就是錯的,但是在現實生活是對的104F 11/15 10:45
twolight: 如果覺得是對的,該思考究竟自己待在什麼環境了吧105F 11/15 19:43
internetms52: Unit test 是沒辦法阻止種做法的,code review 完要106F 11/15 21:41
internetms52: 改架構也很為難,就變這樣子了,一天到晚review跟
internetms52: 自己寫沒什麼兩樣...
leolarrel: 台肯!109F 11/17 17:09
Void956: 年輕的時候的我一定不認同110F 11/25 10:08
Void956: 但是現在的我大概可以理解你為什麼這麼做
Ghamu: 覺得有點中肯 我都想一堆後續維護 把開發時間弄長 結果另一112F 11/26 13:45
Ghamu: 位寫一堆鬼命名超長function 快速做出來 在外人眼中我就是
Ghamu: 效率差他就速度快
Ghamu: 然後我就是接受他legacy code維護的人 他老兄去跑去新專案
Ghamu: 寫新的害人code XDDD 想必後來也都是我來維護 嗚嗚
david7539: 沒錯,尤其在共同開發的時候,同事想要把你搞慢就醬幹117F 11/30 21:21

--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 432 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇