程式設計師不需要為老的專案感到太多的內疚

Web開發者發表於2012-03-26

  我發現,當程式設計師開發了一個專案,然後要把它移交給其他程式設計師時,他們會對開發這個專案時做出的一些決策感到內疚。我問他們當時為什麼選擇這樣做, 他們會羞愧的說,“唉,我知道這不是最好的實現方法,如果現在再去做,肯定不會採用那樣的方式。”有些人可能會辯護,或強調一下外部因素,比如工期壓力。 但我的觀點是,程式設計師不需要為老的專案感到太多的內疚。

  經驗

  我承認,我曾經有一次重新發球的經驗。那是一個作為內部工具使用的Ruby on Rails專案。我之前對這種技術架構瞭解不多。基本上就是把東西按照需求拼湊起來,它執行很正常。沒有多少測試,設計上必然是沒有體現出最好的設計原則。但它能用。

  接著,我做了一個6個月長的Rails專案,過程完全是TDD的。在此之後,出現了一個機會,需要調整那個內部工具,增加一些功能。

  我很高興有這次機會。我感覺對這種技術有了更好的瞭解,能夠看出程式碼中存在的問題,知道如何用更好的Rails或Ruby技術來解決這些問題。這讓 人很興奮。不止一次,我驚奇於那些老的程式碼竟然能正常的執行。我想,絕大多數程式設計師都很少能有這樣的機會,除非他們是在維護一個老專案,我想這是一次很有 價值的經歷,讓我在事後看清了我自己寫的程式。

  綜合分析

  但後來,我開始意識到,程式設計師不必要為自己開發出的產品感到內疚。新的技術和實踐方法不斷的出現,等待著你去學習,每一次你都要權衡取捨,總會有事 後諸葛亮的情況出現。我應該現在重構這個類,還是放到以後再說?我是需要把設計的容易擴充套件,或者根本不需要這樣?做這個專案時我們是否應該首先儘量的減少 技術上的風險?

  在針對某一問題我遍歷群書後,對解決這類問題我學會了新的技術,新的方法。但這並不能妨礙我們當前的工作。我們不可能百分百的知道我們所需要的知識,我們能想到的方案只是能滿足解決當前問題需求。

  我相信,程式設計師都已經盡了他們最大的努力。但這並不能免除程式設計師犯錯誤,並從錯誤中學到經驗,也不能保證他們能夠進行先知先覺的學習。

  我想說的是,程式設計師如果沒有足夠的知識以最佳的方式來解決所有的問題或在困境中做出最正確的抉擇,他不必為此不安。在之後的歲月裡認識到了自己的錯誤,這是自己進步的標識。每一次都把事情做的正確無誤,這暗示一種技術的停滯,或完美主義。哪一種更有可能?

  你是否也有過這樣的一種願望,希望能夠重新來一次,改變某個軟體專案中的某些東西?有過看著自己寫過的程式碼感到噁心的時候?把事情做對,還是把事情做完?平衡點在哪裡?在評論裡留下你的想法吧!

  英文原文:Guilty Developer Syndrome

相關文章