http://kb.cnblogs.com/page/157885/
2012
英文原文鏈接:Programming with closed eyes
乍看這是一個(gè)引人思考的深層次問(wèn)題,在編程專(zhuān)業(yè)中常有這樣的誤解,軟件開(kāi)發(fā)就是寫(xiě)代碼。軟件開(kāi)發(fā)實(shí)為一門(mén)藝術(shù),而代碼僅僅是通往藝術(shù)之門(mén)的工具。好比燃料和畫(huà)布是畫(huà)家的工具一樣,寫(xiě)代碼的目的是實(shí)現某種策略和思路。對程序員來(lái)說(shuō),他的目標是開(kāi)發(fā)出完整的軟件系統,按照需求完成各個(gè)功能模塊或許是某種無(wú)形的思路、特性。比如一個(gè)深思熟慮的架構、明確的內部組織和代碼質(zhì)量,最后將這些進(jìn)行整合。畫(huà)家每隔一小段時(shí)間會(huì )停下來(lái)重新評估進(jìn)展和繪畫(huà),看看是否達到自己的要求,程序員也一樣,必須定期審查代碼、查看進(jìn)展、檢查思路是否實(shí)現。
那么你平時(shí)是如何工作的呢?是否確定工作區后就埋頭苦干?什么都無(wú)法阻止你的前進(jìn)呢?如果這個(gè)描述很適合你,那么你做的一切都有可能是錯的。
所有好的軟件都有共同之處——他們都設計精良。同樣,大多數失敗的案例也會(huì )有相同之處——缺乏結構和視覺(jué)上的盛宴,最終導致崩潰。軟件開(kāi)發(fā)是一項智力活動(dòng),這一切都歸結于實(shí)現的結構和在混亂中找到開(kāi)發(fā)軟件的最佳理念。
我做過(guò)一個(gè)非常有趣的觀(guān)察。在我第一年的編程生涯中,我設法在規定的時(shí)間里開(kāi)發(fā)出大量的代碼。結果大多數代碼都需要重新開(kāi)發(fā)、設計甚至是丟棄。速度提高了,而效率卻明顯下降了,欲速則不達。隨著(zhù)的時(shí)間推移,我學(xué)會(huì )一小步一小步前進(jìn),在開(kāi)發(fā)前進(jìn)行仔細分析思考,然后再開(kāi)始開(kāi)發(fā)、編碼。結果發(fā)現代碼生成速度下降了好幾倍,而成功率幾乎達到100%,是不是有點(diǎn)戲劇性。我越來(lái)越多采用這種策略進(jìn)行編程,我沒(méi)有堅持把時(shí)間直接轉換成代碼量。事實(shí)上,我經(jīng)常每天只寫(xiě)幾行代碼甚至有些時(shí)候會(huì )再刪除幾行。反而讓我的代碼從整體上更加簡(jiǎn)潔、效率更高。
許多程序員都體驗過(guò)這種黑暗感覺(jué),當你看到許多大大小小的缺陷都摻雜在一起的那種混亂,當走到這一步再回頭重新修改設計代碼,你會(huì )意識到為時(shí)已晚并且是毫無(wú)意義的,因為你繼續下去的工作本質(zhì)上已經(jīng)是被丟棄的。
對此,你還能做什么?
事實(shí)上,你可以!學(xué)會(huì )把更多的時(shí)間用來(lái)思考并且減少代碼輸入。我發(fā)現長(cháng)時(shí)間的盯著(zhù)屏幕并不會(huì )幫助你找到解決問(wèn)題的方式。當思緒被卡住的時(shí)候,我會(huì )放棄繼續工作,離開(kāi)電腦和所思考的問(wèn)題。當我漫步在公園和一些安靜的場(chǎng)所時(shí),常常會(huì )想到一些非常棒的思路和理念。實(shí)際上你可以試著(zhù)閉著(zhù)眼睛編程,燈光和周?chē)囊磺卸疾粫?huì )影響到你,片刻的休息會(huì )給你帶來(lái)轟動(dòng)的、突破性的思路。 我最喜歡的地方是浴室,它可以讓人放松和平靜下來(lái),聽(tīng)到照亮內心的那些非常安靜的想法和靈感。
解決問(wèn)題最重要的習慣不是一直盯著(zhù)屏幕和編寫(xiě)/修改代碼,某些時(shí)候,阻止你成功的東西恰恰會(huì )是過(guò)于努力。這時(shí)候你需要暫停一下,平緩你的思緒,換一種方法或許能帶給你不一樣的效果。
聯(lián)系客服