在大陸有看到有人發了一個問題,是《程序员有哪些借口可以让自己写出低质量的代码?》。
這個問題乍看之下很詭異,為什麼要特別寫出品質不好的程式呢?其實,雖然在大部分的情況下,我們都希望可以寫出良好、易讀、好維護的程式碼,但是在某些情況下,「程式碼混淆」是有必要性的;這種狀況,通常會發生在必須要把原始碼交出去、但是又不希望被輕易地理解、修改。
為了這類的需求,除了有人專門寫了「如何寫出無法維護的程式碼」這樣的文章(請參考《如何写出无法维护的代码》或《如何撰寫難以維護的程式碼》,有機會 Heresy 也想自己整理一下 :p);在國際上甚至還有「國際 C 語言程式碼混淆大賽」這種東西呢!
不過回到重點,Heresy 為什麼特別寫這篇呢?那是因為這篇問題的其中一篇回應,實在寫得太讚…完全了描述一個功力很好的程式開發者,是怎麼在離職的時候,毀掉一家公司的!
下面就是這個回應,Heresy 主要是繁體化、再改一些用語、以及排版:
我很久很久以前,曾經經歷過一個特別白癡的公司,人力資源部門和 SVN 管理人員完全不懂程式。
作為 service 的主要程式,一直一來都是在追求程式碼精簡、效率最好、沒有冗餘的。
突然我無意中發現了一個秘密,我的績效居然不如幾個公司剛找來的新手。
我每天刻苦努力、最佳化程式碼、讓公司的服務端 7 * 24 穩穩地跑在伺服器上,還一心研究各種在線切換(hot-swap),換來的績效考核好久沒有優秀了。
這究竟是為什麼呢?後來好心人告訴我,人力資源部門說了,他們看了 SVN 的日誌紀錄,發現其他人工作很努力、每天都提交了很多程式碼、每天都撰寫很多很多程式碼的檔案、貢獻了好多好多的勞動成果。
而看看你這個號稱技術排第一的傢伙,根本就沒幹活嘛!三個月下來,你一共就寫了這十來個 .cpp 和 .h,每天改來改去就這麼幾個檔案,還好幾天在差不多的行數改來改去,根本就是一直在偷懶。我聽完以後,直接口吐鮮血、無語至極了。
然後,我就申請離職了。在那個公司剩下不多的日子裡,我為了心安理得地拿最後兩個月的工資,為了讓老闆知道其實我一直很努力,我在最後一個月更新了幾千個檔案、讓 service 的核心穩定性降低了好幾個檔次,記憶體使用上漲了好多個數量級;並且把易讀、容易後續擴展的部分,全部用 C++ 最高級的的模板進行擴展,同時刪掉了我以前整理編寫的最佳化程式碼。
恩,我想以後這個公司應該會倒閉,我走了以後,再也沒有人能維護這份程式碼了;估計三個月後,我自己也搞不定了。
然後我就離職了。離職前老闆還大誇我厚道,最後一個月還幫公司做了這麼多事;別人走都是刪程式,我居然毫無保留地未公司做出貢獻。
然後我走了不到半年、公司就倒閉了。
我想那是我此生唯一寫垃圾程式碼寫得心安理得的一次機會了。
基本上,這讓 Heresy 想到比爾蓋茲的這句話(參考):
用程式碼行數來衡量進度,就像用重量來評估飛機的建造進度一樣。
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
但是很遺憾的,現在似乎還有不少地方是這樣看成果的啊…而對這種人,最好、也最惡劣的對應方法,大概就是像這樣,送他一堆看似有用、實際上是垃圾的程式了吧…
[…] 恩…怎麼感覺和去年幾乎一樣啊!整年的瀏覽次數和去年一樣,大約是 120 萬次,所以還是被拿來和羅浮宮比,也就看不到他還有什麼例子了…而最熱門文章…也還去年一樣是《不要惹公司的程式設計師啊~》這篇,這相似性也太高了吧? […]
讚讚
我當程式員那麼多年,第一次聽到重構是要提出申請的
那當然選擇不申請以免麻煩
並降低自己的水準以配合公司的考核制度
讚讚
個人是覺得…當要做一定程度的修改,理論上還是要讓別人知道,不能自己做自己的啊…
讚讚
Reblogged this on 深沉的冬夜.一個旅人 and commented:
內行看門道,外行看熱鬧。
讚讚
[…] [24,081] 不要惹公司的程式設計師啊~ […]
讚讚
[…] 之前已經提過了,由於《不要惹公司的程式設計師啊~》在發表後馬上就被大量轉載,所以導致點閱數量暴增,頗有超過之前紀錄的跡象。 […]
讚讚
這公司的管理也太糟了
讚讚
台灣有多少公司有在做版本控制而不是單純當作備份用(笑)
讚Liked by 1 person
不是用來計算員工的工作量嗎? XD
讚讚
重構沒有提出申請,也沒有經過核准,沒人知道他在幹嘛,因為他不屬於這團隊,表示無法溝通,這種人離開也是應該的。
而沒有審核程式碼,而無法維護,核心人員一人,公司專案一個,這種公司倒了也是應該的。
這案例沒有對錯…..
讚讚
ㄟ~基本上,個人會認為在小規模的團隊、公司裡面,要做到完整、良好的軟體工程管理,基本上是有相當的難度的。
而該公司的考績評量方法都還是靠行數來看了,你覺得,他們真的有可能做良好的軟體工程管理嗎?
讚讚
我沒有站在公司立場說話,上面說了公司要倒也是應該的
我只是認為這種報復的思想不可取
運氣好,只混淆程式碼就可以把公司弄倒閉
運氣不好,寫幾個後門搞垮公司
到時候是不是要上法院都不知道….
公司不好,沒有做正確的績效評估,拍拍屁股走人,又何必認為自己的 CODE 太好,要做差一點,希望未來沒辦法維護 ?
忠言逆耳,管理很糟糕的公司多的是,報復不是唯一手段。
讚讚
當然,基本上大家都希望好聚好散,這邊也沒有鼓勵大家報復的意思。
這邊的討論已經有點偏離發本文的目的了,原則上這串之後不會再回應了。
BTW,你提到的挖後門和寫爛程式已經算是兩回事了…
讚讚
[…] ← 不要惹公司的程式設計師啊~ […]
讚讚
善戰者無赫赫之功
讚讚