[轉貼] 工程師應該放心大膽地創造技術負債
覺得好貼切...分享給各位
轉貼於 https://goo.gl/dEpoJQ <--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
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1510472387.A.D33.html
推
11/12 15:45,
6年前
, 1F
11/12 15:45, 1F
推
11/12 15:53,
6年前
, 2F
11/12 15:53, 2F
推
11/12 15:55,
6年前
, 3F
11/12 15:55, 3F
→
11/12 15:55,
6年前
, 4F
11/12 15:55, 4F
→
11/12 15:57,
6年前
, 5F
11/12 15:57, 5F
推
11/12 15:59,
6年前
, 6F
11/12 15:59, 6F
噓
11/12 16:02,
6年前
, 7F
11/12 16:02, 7F
推
11/12 16:03,
6年前
, 8F
11/12 16:03, 8F
推
11/12 16:08,
6年前
, 9F
11/12 16:08, 9F
推
11/12 16:09,
6年前
, 10F
11/12 16:09, 10F
推
11/12 16:09,
6年前
, 11F
11/12 16:09, 11F
噓
11/12 16:13,
6年前
, 12F
11/12 16:13, 12F
推
11/12 16:19,
6年前
, 13F
11/12 16:19, 13F
→
11/12 16:20,
6年前
, 14F
11/12 16:20, 14F
→
11/12 16:20,
6年前
, 15F
11/12 16:20, 15F
→
11/12 16:22,
6年前
, 16F
11/12 16:22, 16F
→
11/12 16:22,
6年前
, 17F
11/12 16:22, 17F
推
11/12 16:30,
6年前
, 18F
11/12 16:30, 18F
推
11/12 16:32,
6年前
, 19F
11/12 16:32, 19F
→
11/12 16:32,
6年前
, 20F
11/12 16:32, 20F
推
11/12 16:40,
6年前
, 21F
11/12 16:40, 21F
推
11/12 16:43,
6年前
, 22F
11/12 16:43, 22F
→
11/12 17:14,
6年前
, 23F
11/12 17:14, 23F
→
11/12 17:15,
6年前
, 24F
11/12 17:15, 24F
→
11/12 17:15,
6年前
, 25F
11/12 17:15, 25F
推
11/12 17:15,
6年前
, 26F
11/12 17:15, 26F
→
11/12 17:17,
6年前
, 27F
11/12 17:17, 27F
→
11/12 17:17,
6年前
, 28F
11/12 17:17, 28F
噓
11/12 17:24,
6年前
, 29F
11/12 17:24, 29F
推
11/12 17:26,
6年前
, 30F
11/12 17:26, 30F
推
11/12 17:27,
6年前
, 31F
11/12 17:27, 31F
噓
11/12 17:29,
6年前
, 32F
11/12 17:29, 32F
噓
11/12 17:29,
6年前
, 33F
11/12 17:29, 33F
推
11/12 17:30,
6年前
, 34F
11/12 17:30, 34F
→
11/12 17:32,
6年前
, 35F
11/12 17:32, 35F
推
11/12 17:35,
6年前
, 36F
11/12 17:35, 36F
→
11/12 17:41,
6年前
, 37F
11/12 17:41, 37F
→
11/12 17:42,
6年前
, 38F
11/12 17:42, 38F
推
11/12 17:51,
6年前
, 39F
11/12 17:51, 39F
還有 38 則推文
還有 1 段內文
→
11/13 03:42,
6年前
, 78F
11/13 03:42, 78F
推
11/13 08:00,
6年前
, 79F
11/13 08:00, 79F
→
11/13 08:00,
6年前
, 80F
11/13 08:00, 80F
→
11/13 08:00,
6年前
, 81F
11/13 08:00, 81F
→
11/13 08:04,
6年前
, 82F
11/13 08:04, 82F
→
11/13 08:04,
6年前
, 83F
11/13 08:04, 83F
噓
11/13 09:51,
6年前
, 84F
11/13 09:51, 84F
推
11/13 10:29,
6年前
, 85F
11/13 10:29, 85F
推
11/13 11:46,
6年前
, 86F
11/13 11:46, 86F
→
11/13 11:46,
6年前
, 87F
11/13 11:46, 87F
→
11/13 12:39,
6年前
, 88F
11/13 12:39, 88F
推
11/13 13:15,
6年前
, 89F
11/13 13:15, 89F
推
11/13 13:17,
6年前
, 90F
11/13 13:17, 90F
推
11/13 16:36,
6年前
, 91F
11/13 16:36, 91F
噓
11/13 17:23,
6年前
, 92F
11/13 17:23, 92F
→
11/13 17:23,
6年前
, 93F
11/13 17:23, 93F
噓
11/13 19:01,
6年前
, 94F
11/13 19:01, 94F
→
11/13 19:02,
6年前
, 95F
11/13 19:02, 95F
推
11/13 21:49,
6年前
, 96F
11/13 21:49, 96F
推
11/13 22:29,
6年前
, 97F
11/13 22:29, 97F
推
11/13 23:52,
6年前
, 98F
11/13 23:52, 98F
推
11/14 08:33,
6年前
, 99F
11/14 08:33, 99F
推
11/14 15:49,
6年前
, 100F
11/14 15:49, 100F
→
11/14 16:47,
6年前
, 101F
11/14 16:47, 101F
→
11/14 22:42,
6年前
, 102F
11/14 22:42, 102F
噓
11/15 02:22,
6年前
, 103F
11/15 02:22, 103F
推
11/15 10:45,
6年前
, 104F
11/15 10:45, 104F
推
11/15 19:43,
6年前
, 105F
11/15 19:43, 105F
推
11/15 21:41,
6年前
, 106F
11/15 21:41, 106F
→
11/15 21:41,
6年前
, 107F
11/15 21:41, 107F
→
11/15 21:41,
6年前
, 108F
11/15 21:41, 108F
推
11/17 17:09,
6年前
, 109F
11/17 17:09, 109F
推
11/25 10:08,
6年前
, 110F
11/25 10:08, 110F
→
11/25 10:08,
6年前
, 111F
11/25 10:08, 111F
推
11/26 13:45,
6年前
, 112F
11/26 13:45, 112F
→
11/26 13:45,
6年前
, 113F
11/26 13:45, 113F
→
11/26 13:45,
6年前
, 114F
11/26 13:45, 114F
→
11/26 13:46,
6年前
, 115F
11/26 13:46, 115F
→
11/26 13:47,
6年前
, 116F
11/26 13:47, 116F
推
11/30 21:21,
6年前
, 117F
11/30 21:21, 117F
討論串 (同標題文章)