我這些年和許多程序員工做過——他們有些人超級棒,有些明顯比較日常。由於我近來和一些熟練的程序員工做的很愉快,我花了一些時間考慮我羨慕他們什麼。程序員
是什麼讓一個好的程序員那麼好,差的程序員那麼差?或者,簡短一些,是什麼讓一個好的程序員那麼好呢?算法
根據個人經驗,成爲一個優秀的程序員與年齡、教育或者你掙錢的多少沒有關係。關鍵在於你的表現,更深入的說,是你如何思考。我注意到我羨慕的程序員有一致的習慣,編程
比起他們所選語言的知識、對數據結構和算法的深刻理解、或者幾年的工做經驗——更多的是他們交流的方式,數據結構
管理本身的方式,和根據他們精湛的技巧能夠知道他們接觸編程的方法頗有意義。數據結構和算法
固然,成爲一個好的程序員須要的比任何人能夠列舉的都還要多,我不會基於這些實踐的存在(或者缺失)而單獨評判任何程序員。編程語言
但當我看到時我確實能明確的知道,當我看到一個具備這些性格的程序員時,我會想,「這我的真的知道他們在作什麼。」函數
作研究工具
或者稱做「三思然後行」,或者稱做「谷歌一下」。學習
不管你怎麼稱呼它,你可能遇到的大多數編程問題幾乎在必定形式上都已經被解決了。傳道書早就記錄在案,陽光底下無新事。測試
在GitHub上的庫文件列表中,在因特網上的博客中,或者剛好與某我的經驗交流中,好的程序員知道要在解決一個問題以前先作研究。
我曾經見過厲害的程序員急於給出解決方案,可是我曾經一塊兒工做過的最糟糕的程序員,歷來不諮詢他人,
從而致使作了大量的重複性工做或者剛好使用了錯誤方式來解決問題。因而很不幸的,他們最終爲他們的錯誤付出代價。
讀錯誤信息(並以之行事)
這包括對堆棧追蹤的符號解析。是的,使人厭惡並且不幸——但若是你不肯意這麼作,怎麼知道哪裏出錯了?我知道的最高效的程序員不懼怕深刻挖掘問題。
最低效的程序員看到錯誤甚至都不肯讀錯誤信息。(這聽起來挺好笑的,但我遇到的頻率會讓你吃驚。)
更進一步說,偉大的程序員看到問題,會急迫的去解決它。對於他們來講,讀錯誤信息僅僅是第一步;他們渴望深刻問題並找出錯誤的根源。
他們對推卸責任沒有興趣,他們對找到解決方案有興趣。問題確實在他們這裏止步。
會去看源代碼
文檔,測試和人:這些均可能會說謊。未必是故意撒謊,可是若是你想確切的知道代碼是怎麼工做的,你就必須親自察看源代碼。
即便這不是你很是熟悉的語言也不要懼怕——好比,若是你主要是一個Ruby程序員而且你懷疑Ruby的C語言包裏有錯誤,那就去解壓它看看再說。
不錯,你可能會一無所得。可是誰知道呢,你也可能會找到問題所在,比起什麼都不作,你至少選擇了一條更有機會的路。
若是你工做在一個非開源的環境中,就不太好辦了,這很不幸,不過道理是不變的。糟糕的程序員對查看源碼一般沒有太多興趣,結果就是,跟那些願意去研究一下源碼的人相比,他們一般會被這些問題困擾的更久。
說作就作
好的程序員老是趨向於採起行動。他們彷佛有種控制不住的強迫性——一旦他們確認了一個問題或者看到了一個新的特性需求,
就會當即着手解決,有時甚至過早或者過於一往無前。他們遇到問題的直覺反應就是正面解決它。
有時這會帶來麻煩——可是他們的熱情正是他們可以作的很好的關鍵因素。當某些人還在拖延迴避或者幻想問題能本身消失的時候,好的程序員已經開始動手了。
更簡單的來講(也許,太過直白),若是你看到一我的興奮的發現並處理問題,頗有可能你獲得了一名好程序員。
防患未然
這多是一個壞的程序員的特徵——他們老是糾纏於一個又一個的人爲失誤,歷來都是沒有明白上一個就轉向下一個。
他們老是在抱怨他們程序中的錯誤部分,卻耗費數小時對完美運行的代碼來debug。他們讓情緒佔據主動,相信直覺而不是仔細明確的分析。
若是你忽然遇到一個問題——或者每個問題看起來都像是世界末日通常,你極有多是在犯錯誤而不是在解決潛在的問題。偉大的程序員會花費一些時間來了解是什麼出了錯,
哪怕是真的是一場災難,除了這些,他們還會把常出現的問題當成分配任務來處理掉。因爲他們能更精確的解決大部分問題,從而不會提升你的團隊的緊張程度。
善於交流
說到底,編程也是一種交流的方式。可以簡潔明瞭地表達出你的觀點之於寫代碼就如其之於寫詩同樣重要——長久以來,
我發現那些可以寫出精煉的電子郵件、優雅的報告或者僅僅是高效的備忘錄的人一般也會是更優秀的程序員。
這個發現對寫程序和對英語同樣使用。固然,把充斥着括號和只用一個字母命名的函數寫在一行裏面也是能夠的,可是若是沒有人可以理解你寫的代碼,
又有什麼意義呢?不管使用什麼媒介,優秀的程序員會把時間花在如何將他們的觀點更好地表達出來上面。
激情四射
我想這是最可以體現一個好的程序員的地方(而且,不只在計算機行業,這點適用於任何行業)。
若是你真正關心你作的東西——不僅是把它當作一個工做去應付,而是一個興趣、一件對你有着莫大魅力的事情,那麼在這個行業裏,相較於其餘人而言,你就擁有了一項巨大的優點。
好的程序員會一直保持着寫代碼的狀態,他們天天花在這個行業裏的時間都不低於8個小時——包括工做和空餘時間。在編寫項目和授業解惑二者之間,
他們不會偏向任何一方。他們不會只是爲了搞清楚某個東西的工做原理而成天癡迷於新技術或新的編程語言。
當我觀察一個週日正在作本身感興趣的項目、在創造本身須要的工具、被新的、有趣的事物吸引的程序員的時候,我意識到我正在觀察一個會令全部人都不禁自主心生敬意的人。
最後,厲害的程序員不會將他們的專業看作賺錢的工具,而是一種改變世界的手段。我想這就是早就一個偉大程序員的真正緣由吧。
編程,對於他們來講也就意味着創造世界。也只有這樣的人,才值得咱們由衷地敬佩和景仰。
另外若是你想更好的提高你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這裏或許能夠幫到你~
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比本身琢磨更快哦!
免費學習資料: