iT邦幫忙

7

工程師應該放心大膽地創造技術負債

身為軟體工程師,你應該要盡量寫出無法維護的程式碼,而且絕對不寫測試。

你應該要知道:在績效管理下,你愈是認真負責,愈是做到符合專業倫理的要求,你反而看起來績效愈差。而你大概會有 87% 的比例,會遇到這種績效管理。

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

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

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

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

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

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

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

如果你有機會高升,開始擔任主管(你績效這麼好,怎麼可以不選你當主管呢?),你就會知道,當初寫下的那些無法維護的 legacy code,其實更有助於你擔任主管的管理工作。

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

而到了這個時候,你還會發現,程式碼到底是什麼品質,已經跟你的績效無關了。怎樣盡可能的接觸老闆,參與更多會議,讓老闆三不五時看到你,才是你現在的績效。

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

技術負債從來就不是什麼問題。誰說你製造了技術負債之後,你就得要自己還債?怎樣欠債不還,才是工程師最偉大的藝術。

在你的人生中,你不需要要為其他人而活,也不是為了程式碼這種死物而活,你真正應該要負責的對象只有你自己;而你知道人是經濟而自私的動物,既然你的本性就是貪婪,你就應該成就貪婪。管理者想要這種工程師文化,你就提供這種工程師文化。

你要捨棄專業才能成就事業,你應該要把握當下的績效,而不要為了可能不存在的悲劇結果恓恓惶惶,你每天都應該充滿正能量,還有什麼可以比利己主義帶來更多正能量?凱因斯不就曾經說過:「In the long run, we are all dead」?

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

原文來源:
https://medium.com/@p5d12000/%E5%B7%A5%E7%A8%8B%E5%B8%AB%E6%87%89%E8%A9%B2%E6%94%BE%E5%BF%83%E5%A4%A7%E8%86%BD%E5%9C%B0%E5%89%B5%E9%80%A0%E6%8A%80%E8%A1%93%E8%B2%A0%E5%82%B5-a8022d85810


0
pcw
iT邦新手 3 級 ‧ 2018-06-07 17:03:54

要先確定你的老闆不懂IT。

wwx iT邦研究生 1 級‧ 2018-06-08 09:11:47 檢舉

這個應該不是單指IT,更何況懂IT的很多也不懂軟體

1
海綿寶寶
iT邦超人 1 級 ‧ 2018-06-08 09:20:48

類似的說法,見做得越好,死得越快一書

pcw iT邦新手 3 級‧ 2018-06-08 10:12:51 檢舉

劣幣驅逐良幣

「劣」和「良」是相對的
關鍵在於是由「誰」定義是劣還是良

1

/images/emoticon/emoticon50.gif

邪惡而真實的職場心態,不只IT,其他行業也是如此。
端看公司/主管的績效指標,如果一味的認為【苦勞】蓋過【功勞】,識人不明,到最後留在公司的儘是這些人。我就曾待過這種公司,沒事也不准 9:30 pm 前下班。

g0988 iT邦新手 5 級‧ 2018-06-11 13:37:49 檢舉

同意~邪惡而真實的職場心態!!

1
純真的人
iT邦研究生 3 級 ‧ 2018-06-08 22:44:38

嗯...我寫的程式~前公司所有來接手的工程師全都跑了..老闆對待太差?....(2年內先後6~8位吧)
導致給我繼續外包維護嗎@@..
這是所謂的技術負債嗎0.0..
我都有跟他們的工程師說過~請盡量重寫我的程式碼~不要照我的程式碼繼續接..會很痛苦的...
你可能看不懂我在寫什麼...由其是快100行的SQL語句...

這樣應該可以開好價格吧XD

純真的人 iT邦研究生 3 級‧ 2018-06-09 10:02:42 檢舉

反正已被招到新公司了~前公司的就隨意了XD

暐翰 iT邦大師 10 級‧ 2018-06-09 19:57:17 檢舉

大大,這種還願意負責已經很好了!
之前維護一種專案沒有SA文件,註解無、前人也跑了不見蹤影那種
解決方式建個測試環境、硬讀SQL+跑結果來了解邏輯 /images/emoticon/emoticon13.gif

0
暐翰
iT邦大師 10 級 ‧ 2018-06-09 20:35:43

這樣做因此延伸一種能力:能有效處理前人的大便
不管都臭都爛、各式各樣花式大便都能處理
並且能享受在其中 (苦中作樂?)

1
尼克
iT邦高手 1 級 ‧ 2018-06-11 17:43:11

而到了這個時候,你還會發現,程式碼到底是什麼品質,已經跟你的績效無關了。怎樣盡可能的接觸老闆,參與更多會議,讓老闆三不五時看到你,才是你現在的績效。

0
kulius
iT邦新手 5 級 ‧ 2018-06-14 17:29:03

看不懂前人的程式碼....那是你程度差....(前輩語錄
程式碼寫的精簡、美觀、套用設計模式...看不懂....那是你程式能力差
程式碼寫的長長長...但所有邏輯都在同一隻程式....看不懂...那是你邏輯能力差

大部份人是平凡人....你懂的...別太在意

我要留言

立即登入留言