內(nèi)疚的程序員
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
我發(fā)現(xiàn),當(dāng)程序員開(kāi)發(fā)了一個(gè)項(xiàng)目,然后要把它移交給其他程序員時(shí),他們會(huì)對(duì)開(kāi)發(fā)這個(gè)項(xiàng)目時(shí)做出的一些決策感到內(nèi)疚。我問(wèn)他們當(dāng)時(shí)為什么選擇這樣做,他們會(huì)羞愧的說(shuō),“唉,我知道這不是最好的實(shí)現(xiàn)方法,如果現(xiàn)在再去做,肯定不會(huì)采用那樣的方式?!庇行┤丝赡軙?huì)辯護(hù),或強(qiáng)調(diào)一下外部因素,比如工期壓力。但我的觀點(diǎn)是,程序員不需要為老的項(xiàng)目感到太多的內(nèi)疚。 經(jīng)驗(yàn) 我承認(rèn),我曾經(jīng)有一次重新發(fā)球的經(jīng)驗(yàn)。那是一個(gè)作為內(nèi)部工具使用的Ruby on Rails項(xiàng)目。我之前對(duì)這種技術(shù)架構(gòu)了解不多?;旧暇褪前褨|西按照需求拼湊起來(lái),它運(yùn)行很正常。沒(méi)有多少測(cè)試,設(shè)計(jì)上必然是沒(méi)有體現(xiàn)出最好的設(shè)計(jì)原則。但它能用。 接著,我做了一個(gè)6個(gè)月長(zhǎng)的Rails項(xiàng)目,過(guò)程完全是TDD的。在此之后,出現(xiàn)了一個(gè)機(jī)會(huì),需要調(diào)整那個(gè)內(nèi)部工具,增加一些功能。 我很高興有這次機(jī)會(huì)。我感覺(jué)對(duì)這種技術(shù)有了更好的了解,能夠看出代碼中存在的問(wèn)題,知道如何用更好的Rails或Ruby技術(shù)來(lái)解決這些問(wèn)題。這讓人很興奮。不止一次,我驚奇于那些老的代碼竟然能正常的運(yùn)行。我想,絕大多數(shù)程序員都很少能有這樣的機(jī)會(huì),除非他們是在維護(hù)一個(gè)老項(xiàng)目,我想這是一次很有價(jià)值的經(jīng)歷,讓我在事后看清了我自己寫(xiě)的程序。 綜合分析 但后來(lái),我開(kāi)始意識(shí)到,程序員不必要為自己開(kāi)發(fā)出的產(chǎn)品感到內(nèi)疚。新的技術(shù)和實(shí)踐方法不斷的出現(xiàn),等待著你去學(xué)習(xí),每一次你都要權(quán)衡取舍,總會(huì)有事后諸葛亮的情況出現(xiàn)。我應(yīng)該現(xiàn)在重構(gòu)這個(gè)類(lèi),還是放到以后再說(shuō)?我是需要把設(shè)計(jì)的容易擴(kuò)展,或者根本不需要這樣?做這個(gè)項(xiàng)目時(shí)我們是否應(yīng)該首先盡量的減少技術(shù)上的風(fēng)險(xiǎn)? 在針對(duì)某一問(wèn)題我遍歷群書(shū)后,對(duì)解決這類(lèi)問(wèn)題我學(xué)會(huì)了新的技術(shù),新的方法。但這并不能妨礙我們當(dāng)前的工作。我們不可能百分百的知道我們所需要的知識(shí),我們能想到的方案只是能滿足解決當(dāng)前問(wèn)題需求。 我相信,程序員都已經(jīng)盡了他們最大的努力。但這并不能免除程序員犯錯(cuò)誤,并從錯(cuò)誤中學(xué)到經(jīng)驗(yàn),也不能保證他們能夠進(jìn)行先知先覺(jué)的學(xué)習(xí)。 我想說(shuō)的是,程序員如果沒(méi)有足夠的知識(shí)以最佳的方式來(lái)解決所有的問(wèn)題或在困境中做出最正確的抉擇,他不必為此不安。在之后的歲月里認(rèn)識(shí)到了自己的錯(cuò)誤,這是自己進(jìn)步的標(biāo)識(shí)。每一次都把事情做的正確無(wú)誤,這暗示一種技術(shù)的停滯,或完美主義。哪一種更有可能? 你是否也有過(guò)這樣的一種愿望,希望能夠重新來(lái)一次,改變某個(gè)軟件項(xiàng)目中的某些東西?有過(guò)看著自己寫(xiě)過(guò)的代碼感到惡心的時(shí)候?把事情做對(duì),還是把事情做完?平衡點(diǎn)在哪里?在評(píng)論里留下你的想法吧! 本文編譯自:外刊IT評(píng)論 該文章在 2012/3/27 17:43:56 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |