不要惹公司的程式設計師啊~


在大陸有看到有人發了一個問題,是《程序员有哪些借口可以让自己写出低质量的代码?》。

這個問題乍看之下很詭異,為什麼要特別寫出品質不好的程式呢?其實,雖然在大部分的情況下,我們都希望可以寫出良好、易讀、好維護的程式碼,但是在某些情況下,「程式碼混淆」是有必要性的;這種狀況,通常會發生在必須要把原始碼交出去、但是又不希望被輕易地理解、修改。

為了這類的需求,除了有人專門寫了「如何寫出無法維護的程式碼」這樣的文章(請參考《如何写出无法维护的代码》或《如何撰寫難以維護的程式碼》,有機會 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.

但是很遺憾的,現在似乎還有不少地方是這樣看成果的啊…而對這種人,最好、也最惡劣的對應方法,大概就是像這樣,送他一堆看似有用、實際上是垃圾的程式了吧…

對「不要惹公司的程式設計師啊~」的想法

  1. 我當程式員那麼多年,第一次聽到重構是要提出申請的
    那當然選擇不申請以免麻煩
    並降低自己的水準以配合公司的考核制度

  2. 重構沒有提出申請,也沒有經過核准,沒人知道他在幹嘛,因為他不屬於這團隊,表示無法溝通,這種人離開也是應該的。

    而沒有審核程式碼,而無法維護,核心人員一人,公司專案一個,這種公司倒了也是應該的。

    這案例沒有對錯…..

    • ㄟ~基本上,個人會認為在小規模的團隊、公司裡面,要做到完整、良好的軟體工程管理,基本上是有相當的難度的。
      而該公司的考績評量方法都還是靠行數來看了,你覺得,他們真的有可能做良好的軟體工程管理嗎?

      • 我沒有站在公司立場說話,上面說了公司要倒也是應該的

        我只是認為這種報復的思想不可取
        運氣好,只混淆程式碼就可以把公司弄倒閉
        運氣不好,寫幾個後門搞垮公司
        到時候是不是要上法院都不知道….

        公司不好,沒有做正確的績效評估,拍拍屁股走人,又何必認為自己的 CODE 太好,要做差一點,希望未來沒辦法維護 ?

        忠言逆耳,管理很糟糕的公司多的是,報復不是唯一手段。

        • 當然,基本上大家都希望好聚好散,這邊也沒有鼓勵大家報復的意思。

          這邊的討論已經有點偏離發本文的目的了,原則上這串之後不會再回應了。

          BTW,你提到的挖後門和寫爛程式已經算是兩回事了…

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.