|
英文原文:Guilty Developer Syndrome
我發(fā)現(xiàn),當(dāng)程序員開發(fā)了一個項(xiàng)目,然后要把它移交給其他程序員時,他們會對開發(fā)這個項(xiàng)目時做出的一些決策感到內(nèi)疚。我問他們當(dāng)時為什么選擇這樣做,他們會羞愧的說,“唉,我知道這不是最好的實(shí)現(xiàn)方法,如果現(xiàn)在再去做,肯定不會采用那樣的方式。”有些人可能會辯護(hù),或強(qiáng)調(diào)一下外部因素,比如工期壓力。但我的觀點(diǎn)是,程序員不需要為老的項(xiàng)目感到太多的內(nèi)疚。
經(jīng)驗(yàn)
我承認(rèn),我曾經(jīng)有一次重新發(fā)球的經(jīng)驗(yàn)。那是一個作為內(nèi)部工具使用的Ruby on Rails項(xiàng)目。我之前對這種技術(shù)架構(gòu)了解不多。基本上就是把東西按照需求拼湊起來,它運(yùn)行很正常。沒有多少測試,設(shè)計(jì)上必然是沒有體現(xiàn)出最好的設(shè)計(jì)原則。但它能用。
接著,我做了一個6個月長的Rails項(xiàng)目,過程完全是TDD的。在此之后,出現(xiàn)了一個機(jī)會,需要調(diào)整那個內(nèi)部工具,增加一些功能。
我很高興有這次機(jī)會。我感覺對這種技術(shù)有了更好的了解,能夠看出代碼中存在的問題,知道如何用更好的Rails或Ruby技術(shù)來解決這些問題。這讓人很興奮。不止一次,我驚奇于那些老的代碼竟然能正常的運(yùn)行。我想,絕大多數(shù)程序員都很少能有這樣的機(jī)會,除非他們是在維護(hù)一個老項(xiàng)目,我想這是一次很有價(jià)值的經(jīng)歷,讓我在事后看清了我自己寫的程序。
綜合分析
但后來,我開始意識到,程序員不必要為自己開發(fā)出的產(chǎn)品感到內(nèi)疚。新的技術(shù)和實(shí)踐方法不斷的出現(xiàn),等待著你去學(xué)習(xí),每一次你都要權(quán)衡取舍,總會有事后諸葛亮的情況出現(xiàn)。我應(yīng)該現(xiàn)在重構(gòu)這個類,還是放到以后再說?我是需要把設(shè)計(jì)的容易擴(kuò)展,或者根本不需要這樣?做這個項(xiàng)目時我們是否應(yīng)該首先盡量的減少技術(shù)上的風(fēng)險(xiǎn)?
在針對某一問題我遍歷群書后,對解決這類問題我學(xué)會了新的技術(shù),新的方法。但這并不能妨礙我們當(dāng)前的工作。我們不可能百分百的知道我們所需要的知識,我們能想到的方案只是能滿足解決當(dāng)前問題需求。
我相信,程序員都已經(jīng)盡了他們最大的努力。但這并不能免除程序員犯錯誤,并從錯誤中學(xué)到經(jīng)驗(yàn),也不能保證他們能夠進(jìn)行先知先覺的學(xué)習(xí)。
我想說的是,程序員如果沒有足夠的知識以最佳的方式來解決所有的問題或在困境中做出最正確的抉擇,他不必為此不安。在之后的歲月里認(rèn)識到了自己的錯誤,這是自己進(jìn)步的標(biāo)識。每一次都把事情做的正確無誤,這暗示一種技術(shù)的停滯,或完美主義。哪一種更有可能?
你是否也有過這樣的一種愿望,希望能夠重新來一次,改變某個軟件項(xiàng)目中的某些東西?有過看著自己寫過的代碼感到惡心的時候?把事情做對,還是把事情做完?平衡點(diǎn)在哪里?在評論里留下你的想法吧!
英文原文:Guilty Developer Syndrome
it知識庫:內(nèi)疚的程序員,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。