從11歲時,,我就一直在編程,并且一直都很喜歡技術和編程,。這些年來,,我積累了一些艱難又容易的經(jīng)驗。作為一名程序員,,你或許還沒這些經(jīng)驗,,但我會把它們獻給那些想從中學到更多的朋友。 我會持續(xù)更新這些經(jīng)驗,,我可能還會有更多的感想,,但就我這20年來看,我想下面這個列表中基本不需要增添額外的東西了,。下面就是我至今最難忘的經(jīng)驗,。 1. 估算解決問題所需要的時間,。不要怕,承認吧,!我曾見過一些程序員為了解決一個特殊問題而坐在顯示器前面8小時,。為自己定一個時間限制吧,1小時,、30分鐘或甚至15分鐘,。如果在這期間你不能解決問題,那就去尋求幫助,,或到網(wǎng)上找答案,,而不是嘗試去做“超級堆碼員”。 2. 編程語言是一種語言,,只是一種語言,。隨著時光推移,只要你理解了一種語言的原理,,你會發(fā)現(xiàn)各種語言之間的相似之處 ,。你所選擇的語言,你應該覺得“舒服”,,并且能夠?qū)懗鲇行Вǘ液啙崳┑拇a,。最重要的,讓語言去適應項目,,反之亦然,。 3. 不要過于注重程序的“設計模式”。 有時候,,寫一個簡單的算法,,要比引入某種模式更容易。在多數(shù)情況下,,程序代碼應是簡單易懂,,甚至清潔工也能看懂。 4. 經(jīng)常備份代碼,。在我年輕時,,我就有過因硬盤故障而丟了大量代碼的經(jīng)歷,這經(jīng)歷很恐怖的,。只要你一次沒有備份,,就應當像有著嚴格的期限,客戶明天就需要,。此時就該源碼/版本控制軟件大顯身手了,。 5. 承認自己并不是最頂尖的程序員 - 知不足。我常想,我對編程了解已足夠多,,但是總有其他人比你優(yōu)秀,。正所謂,“一山總比一山高”,。所以,,向他們看齊吧! 6. 學習再學習,。正如第5點所說,,我經(jīng)常會在手里拿一本計算機或編程相關的雜志或書(不信,可以問我的朋友),。誠然,,總有很多你不知道的技術,你可以從中學習以保持不落后,。如果你有一種靈巧的方式來獲取你需要的新技術,那你每天都應該堅持學習,。 7. 永恒的變化,。你對待技術/編程知識,就應像你對待股票一樣:多樣化,。不要在某一特定技術上自我感覺良好,。如果那種技術或語言已經(jīng)沒有足夠支持,那你還不如現(xiàn)在就開始更新你的簡歷,,并啟動培訓新計劃,。我能保持前行的主要原則是什么呢?至少了解兩到三種語言,,所以,,如果某種語言過時了,你在學習新技術的時候還可以依靠另一種語言,。 8. 提攜新人,。協(xié)助并且培養(yǎng)初級/入門的開發(fā)人員學習優(yōu)秀的編程方法和技巧。也許你還不知道,,在幫助他們向更高一層前進時,,你自己也在向更高一層提升,你會更加自信,。 9. 簡化算法,。代碼如惡魔,在你完成編碼后,,應回頭并且優(yōu)化它,。從長遠來看,這里或那里一些的改進,會讓后來的支持人員更加輕松,。 10. 編寫文檔,。無論是Web服務的API,還是一個簡單的類,,你盡量編寫相應文檔,。我曾經(jīng)引以為豪的代碼注釋,因過度注釋而有人指責,。給三行代碼加一行注釋,,只需要你幾秒時間。如果那是一個比較難以理解的技術,,千萬別擔心過多注釋,。如果你能很好做好自己的工作,大多數(shù)架構師,、后備程序員,、支持組都會感激你。 11. 測試,、測試再測試,。我是一名黑盒測試粉絲。當你完成編碼后,,你“被認可”的時候就開始了,。如果你們公司有QA部門,如果你的代碼中有錯誤,,那你得到的評論,,會比項目經(jīng)理還多。如果你不徹底測試自己的代碼,,那恐怕你開發(fā)的就不只是代碼,,可能還會聲名狼藉。 12. 慶祝每一次成功,。我見過很多程序員在解決編程技術難題后,,會和同伴握手、擊掌或甚至手舞足蹈,。每個人在生命中都會碰到“頓悟”,。如果一個程序員高興地跑來叫你去看他的非凡代碼,也許你已經(jīng)看過這樣的代碼100遍了,,但你也應該為了這個家伙而慶祝第101次,。 13. 經(jīng)常檢查代碼。 在公司,,你的代碼要經(jīng)常檢查(包括自查和其他同事檢查),。不要把別人的檢查,,看成是對代碼風格的苛求。應該把它們看作是有建設性的批評,。對個人來說,,經(jīng)常檢查你的代碼并且自問,“我怎樣才能寫得更好呢,?” 這會讓你加速你的成長,,讓你成為一個更優(yōu)秀的程序員。 14. 回顧你的代碼,。在看到自己以前的代碼時,,通常會有兩種方式:“難以至信,這代碼是我寫的”和“難以至信,,這代碼是我寫的”,。第一種往往是厭惡的語氣,并在想如何改進它,。你也許會驚嘆,,舊代碼也能復活成為一種更好的程序,甚至是一個完整的產(chǎn)品,。第二種通常帶著驚奇和成就感,。開發(fā)人員應該一到兩個自己完成的項目成果,能讓眾人不禁而立并注目而觀的項目,。同樣,基于你優(yōu)越的編程能力,,你可以把過去的程序或項目拿出來,,把它們更新為更加優(yōu)秀的產(chǎn)品或想法。 15. 幽默是不可缺的,。在我20年的開發(fā)生涯中,,我還沒有碰到哪位程序員是沒有幽默感的。實際上,,干我們這行,,幽默是一項必備品。 16. 謹防那些無所不知的程序員,,不愿分享的程序員,,還有經(jīng)驗不足的程序員。當你遇到這幾種程序員時,,你自己要謙虛,。無所不知的程序員,更想當一個英雄而不是團隊成員,;保守的程序員則是在編寫著他們獨享的代碼,;而經(jīng)驗不足的程序員則會每十分鐘就來問你一下,,當代碼完成后,代碼已經(jīng)是你的,,而不是他們,。 17. 任何項目都不會那么簡單。朋友,、家人和同事曾請求我倉促做一些事情,,倉促做一個程序或者網(wǎng)站。對于這樣的事,,應該從雙方做計劃,,才能做出令兩方都會滿意的東西。如果某人起初只是需要一個使用Microsoft Access的,、只有有3個頁面的網(wǎng)站,,但來就很可能變成一個有15個頁面的網(wǎng)站,并使用SQL Server,,有一個論壇,,還有一個定制的CMS(內(nèi)容管理系統(tǒng))。 18. 任何時候不要想當然,。假如你承接一個簡單的項目,,你可能會認為某個部分可以輕松完成。千萬別這樣想,!除非你有一個類,、組件、或者一段已經(jīng)寫好的代碼,,并且在現(xiàn)有的項目已經(jīng)測試通過,。不要認為這將是很容易的。 19. 沒有已經(jīng)完成的軟件,。曾經(jīng)有一位程序員告訴我,,沒有軟件是已經(jīng)完成的,它只是“暫時完成了”,。這是明智的忠告,。如果客戶還在使用你寫的程序,并經(jīng)受了時間的考驗,。如果有機會,,你仍在更新它,這并不是什么壞事,,這讓你不斷地前行,。 20. 耐心是一種美德。當客戶,、朋友或家庭成員用電腦的時候,,他們也許會受挫,,進而想砸電腦,或氣沖沖地離開,。我一直在告訴他們,,“是你掌控電腦,不是電腦掌控你,。”對于用作編程的電腦,,你要有一定的耐心。一旦程序員知道問題所在后,,他們就會站在電腦的角度看問題,,并且說“哦,這就是為什么它是這樣做,。” 本文轉自:http://www./entry.php/322 英文出自:http://www./Archive/20-20-top-20-programming-lessons-ive-learned-in-20-years-FH |
|
來自: orion360doc > 《計算機》