We Feel Overwhelmed. It Isn’t Going to Get Any Better#

在 legacy code 中工作是困難的,這點無可否認。儘管每個人的處境不同,有一件事會決定這份工作對你而言是否值得——找出是什麼在激勵你

找到你的動力#

如果你夠幸運,你進入這個行業是因為你覺得寫程式很有趣。你第一次坐在電腦前,對所有可能性感到興奮。那是一件值得學習和精通的事物,你心想:「哇,這很好玩。如果我做得很好,我可以有一個很棒的職業。」

不是每個人都是這樣進入程式設計的,但即使不是,仍然可以與程式設計的樂趣重新連結。不管你在做什麼系統——如果你和同事能做出有趣的東西,那就值得了。另一種選擇只是沮喪,坦白說,我們都值得更好的。

Green-field 的迷思#

經常有人在 legacy 系統上工作時,希望自己能做 green-field 開發。從零開始建造系統確實很有趣,但 green-field 系統有它自己的問題。

作者反覆見到這樣的場景:一個現有系統變得難以維護,組織感到沮喪。他們把最好的人調到新團隊,負責「用更好的架構建造替代系統」。一開始一切順利,但同時舊系統的開發者還在維護舊系統。業務每次有新功能都要決定放在舊系統還是等新系統,往往是「客戶等不了」——所以兩邊都要改。Green-field 團隊必須做雙倍工作,壓力越來越大。最後組織發現,他們無法完全替換舊系統,而你正在維護的系統才是每個人未來要依賴的投資。

Green-field 的草地並沒有比較綠。 真正的關鍵是在 legacy code 中找到動力。

實用建議#

找到同伴#

雖然程式設計師通常是獨行俠,但在一個好的環境中與你尊敬的人一起工作,是難以替代的。作者在工作中結交了一些最好的朋友,至今仍會在學到新東西或程式設計中找到樂趣時,與這些朋友分享。

連結社群#

與更大的社群連結也很有幫助。訂閱 mailing list、參加研討會、利用網路上的所有資源來交流、分享策略和技術。

態度很重要#

有時候人們會因為 code base 太大而感到沮喪——覺得團隊工作十年也只能改善 10%。但作者拜訪過擁有數百萬行 legacy code 的團隊,他們把每天當作挑戰和改善的機會,工作得很開心。也見過 code base 好很多的團隊卻充滿沮喪。我們帶到工作中的態度很重要。

具體行動#

  • 在工作之外做一些 TDD——為了樂趣寫點程式,開始感受小專案和大專案之間的差異。你在工作中的專案也可以有同樣的感覺,只要你能把要處理的部分放入快速的 test harness 中
  • 如果團隊士氣低落且是因為程式碼品質差——嘗試這個方法:挑出專案中最醜陋、最令人討厭的一組 class,作為團隊一起把它們納入測試。當你們征服了最糟糕的問題,你們會感覺掌控了局面

當你開始掌控你的 code base,你會開始發展出好程式碼的綠洲。在那些綠洲中工作,真的會是一種享受。