本文是碼農網原創翻譯,轉載請看清文末的轉載要求,謝謝合做!html
不論你是剛畢業的大學生,仍是入門級的程序員,亦或是高級程序員,但願此文都能給你一些啓發。程序員
從我11歲初次進入編程領域,我就被她的魅力所傾倒,一直陷在她的石榴裙下不可自拔,我深深地愛上了編程。做爲後來者,你可能沒有個人這些經歷,我如今將這些經驗公之於衆,但願能對你們有所幫助。我相信長江後浪推前浪,一代新人換舊人,後生可畏。算法
其實不要說20條經驗,哪怕30條、40條,都是遠遠不止的,可是在我從業20年的時間裏,我已經將全部的精華都已經概括到這20條中了,固然若是之後有增長,我會補充更新的。編程
下面就是我目前爲止最讓我受益不淺的20條。(這可都是我血與汗的結晶啊。)設計模式
好吧,對於這一點,我不得不認可,做爲一個程序員我很慚愧。我曾經親眼目擊一個牛人連續8小時坐在電腦前就爲了解決某個程序問題,呵呵。給本身定個時間,1小時、30分鐘均可以,甚至15分鐘也行,若是在這段時間內你仍是毫無頭緒,那麼爲避免浪費時間,能夠直接尋求幫助或者自行在網上搜索。不要牛逼哄哄地覺得本身是個超級編碼器——你只是一我的,而不是計算機。less
一旦瞭解了某種編程語言的工做原理,那麼其餘語言之間的共通之處就顯而易見了。咱們選擇編程要參照這樣的標準:用的得心順手、生產的效率高、寫出來的代碼整潔,而最最關鍵的是,編程語言應該適合項目,反之亦然。編程語言
有時候,比起組合成一個像模像樣的模式,還不如編寫一個簡單的算法來的省時省力。並且通常而言,用於寫算法的代碼還更整潔,更便於理解。學習
話說有一次個人一個硬盤忽然完全壞了,致使我寫的許許多多代碼統統丟失,要知道這些代碼但是從我年輕的時候就開始存儲起來的,意義非凡,是無價之寶。你不明白丟失數據的可怕性只是由於你還不曾經歷過。試想一下,要是明天就是最後的期限,而今天你卻僅僅是由於沒有備份而使得所作的一切努力化爲流水,不光是悲劇,仍是人間慘劇。這一條也一樣適用於源碼和版本控制。測試
有時候我經常坐井觀天地覺得老子天下第一。後來慢慢發現,原來別人能比我作的更好。要謙虛謹慎地向他人學習。優化
接上面第5條,我常常手不釋卷,抱着雜誌和書籍啃上面的計算機和編程的知識(不信能夠問個人朋友,他們能夠爲我做證)。誠然,如今是個信息爆炸的時代,想要跟上技術發展的腳步真心不是件易事。每一天都孜孜不倦地學習,就是我所謂的及時接收這些信息的好辦法,這樣,咱們纔不會被時代的大浪拍死在沙灘上。
咱們學習技術和編程方面的知識應該和咱們買股票同樣:要多樣化。不要覺得學會了一種技術就能夠高枕無憂了。若是某種技術或者編程語言後繼無力逐漸被市場所淘汰,那麼就得趕快更新簡歷,而且臨時抱佛腳迅速練習新技術。我這麼多年的經驗告訴我,不要把全部雞蛋都放在同一個籃子裏,至少得掌握兩三種語言,以防有一種過期了,另一種還能在你閉關修煉新技術的時候應急頂上。
給予和培訓初級/入門級開發人員有關於編程的指導和技巧。溫故而知新,要知道,在幫助他們進步的同時,咱們本身可能也在進步,變得更自信,更有發展潛力。
寫完代碼以後,回過頭去再好好進行優化。雖然這邊改一點,那邊變一點,顯得很瑣碎,可是從長遠角度來看,之後維護起來那可就不是方便了這麼一點兩點的事了。
不管是Web服務的API,仍是一個簡單的類,咱們都應該儘可能編寫相應文檔。曾經有人指責我註釋氾濫,可是我卻引覺得豪。寫代碼的時候加個註釋對咱們而言只是舉手而勞的事,可是當趕上難以攻克的技術難題時,我想大多數構師、新來的程序員、維護人員都會所以而感激你的。
我是黑盒測試的鐵桿粉絲哦。若是咱們不能完全地檢查代碼,不但會影響項目的進程,還會讓你的信譽一落千丈、喪失你們的信任。
不少程序員在好不容易歷盡千辛萬苦終於搞定那些使人頭疼的難題以後,老是會不由自主地和同伴慶祝一下:尖叫、擊掌甚至是手舞足蹈。若是有我的興沖沖地跑來告訴你他寫出了一段驚天地泣鬼神的代碼,即便關於這個代碼片斷你已經看過100遍了,也值得你爲他第101次的成功而喝彩。
不管是項目的仍是我的的。對於項目代碼,通常而言常常會有人要求查閱,對於別人提出的批評不要當作是吹毛求疵、雞蛋裏面挑骨頭,把它想成是建設性意見以此來激勵本身。對於我的代碼,在堅持不斷自檢的同時,也要經常問問本身,「我怎麼作代碼才能寫得更好?」這有助於你加快學習的步伐,讓你迅速成長爲一枚優秀的程序員。
當咱們回顧以往的代碼時,經常會有兩種迥然不一樣的態度出現:看到差代碼時「有沒有搞錯,這麼爛的代碼居然是我寫的?!」以及看到好代碼時「哇塞,這麼棒的代碼竟然出自我手!」第一種的態度每每是厭惡的,而後好像有強迫症同樣開始想着是否還能提升和改進。而第二種則帶點驚奇和成就感了。開發人員總會有那麼一兩個超棒的項目成果,引領你們膜拜。若是你對你的編程能力足夠自信,那麼也能夠將這些成功的案例拿出來再次仔細雕琢,使之更好更棒越發熠熠生輝。
在這20年時間裏,話說,我還歷來沒有遇到過一個沒有幽默感的程序員。別說你遇到過,程序員的幽默外行人怎麼會懂?事實上,若是想在這行發展,幽默是必須的。
當你不幸或者不得不和這些傢伙合做的時候,不用給他們講道理,本身成竹在胸、指揮若定就能夠了,固然態度上要謙虛,畢竟謙虛是美德嘛。自覺得無所不知的程序員,時刻想着搶風頭而不是做爲團隊一員好好協做。不肯分享的程序員,老是默默無聞自管自地寫代碼。而經驗不足的程序員最煩人了,他們每隔個10分鐘就跑過來問你一下,最後搞定代碼的時候,呵呵,我不得不吐槽,這代碼分明都是我寫的了。
個人朋友、家人和同事都曾要求我「快點」搞定一些事情,好比作網站。但是要知道,心急吃不了熱豆腐,作網站不是說說的,應該考慮全面,這樣才能作出令客戶和本身都滿意的做品。比方說,開始客戶只是想要一個使用Microsoft Access的、只有3個頁面的網站,可是最後頗有可能會變成一個使用SQL Server,有15個頁面的網站,而且還要有一個論壇,有一個定製的CMS(內容管理系統)。
若是手頭上有一個看上去特簡單的項目,你或許會想固然地認爲這確定很容易搞定。千萬不要有這樣的想法。除非你有已經一個類和組件,或者一段已經寫好的代碼,而且在現有的項目上已經測試經過,萬事俱備只欠東風,不然你沒有理由也沒有資格說「小菜一碟」。
曾經有一位程序員告訴我,軟件是永遠完不成的,它最多隻是「暫時完成」。這個忠告我一直銘記於心。若是客戶還在使用你寫的程序,而且經受了時間的考驗,那麼有機會的話,不妨保持更新,這對你的發展絕對有好處。
客戶、朋友和家人在使用電腦的時候,經常會由於電腦壞掉了等各類緣由變得煩躁、氣得只想砸東西,最後本身搞不定只得怒氣衝衝地離開。每次看到這樣的場景,我都會語重心長地說勸誡,「是咱們人掌控電腦,而不是電腦掌控人」。通常人尚且會心情很差,更不要說成天對着電腦的程序員了。因此咱們程序員更加須要耐心。下次,要是咱們的電腦和程序又出問題了,不要急着對本身發脾氣,好好檢查,最後,找出問題根源所在了,不妨自嘲地說一句,「衆裏尋他千百度,驀然回首,那人卻在燈火闌珊處」。
最後我但願,這20條能對你們有所裨益、有所啓迪,能讓各位會心一笑。
譯文連接:http://www.codeceo.com/article/20-years-20-experiance.html
英文原文:Top 20 Programming Lessons I've Learned in 20 Years
翻譯做者:碼農網 – 小峯
[ 轉載必須在正文中標註並保留原文連接、譯文連接和譯者等信息。]