成為乙個優秀的程式設計師與年齡、教育或者你掙錢的多少沒有關係。關鍵在於你的表現,更深刻的說,是你如何思考。比起他們所選語言的知識、對資料結構和演算法的深入理解、或者幾年的工作經驗——更多的是他們交流的方式,管理自己的方式,和根據他們精湛的技巧可以知道他們接觸程式設計的方法很有意義。
當然,成為乙個好的程式設計師需要的比任何人可以列舉的都還要多,我不會基於這些實踐的存在(或者缺失)而單獨評判任何程式設計師。但當我看到時我確實能明確的知道,當我看到乙個具有這些性格的程式設計師時,我會想,「這個人真的知道他們在做什麼。」
他們做研究
無論你怎麼稱呼它,你可能遇到的大多數程式設計問題幾乎在一定形式上都已經被解決了。傳道書早就記錄在案,陽光底下無新事。在github
上的庫檔案列表中,在網際網路上的部落格中,或者恰好與某個人經驗交流中,好的程式設計師知道要在解決乙個問題之前先做研究。
我曾經見過偉大的程式設計師急於給出解決方案,但是我曾經一起工作過的最糟糕的程式設計師,從來不諮詢他人,從而導致做了大量的重複性工作或者恰好使用了錯誤方式來解決問題。於是很不幸的,他們最終為他們的錯誤付出代價。
讀錯誤資訊(並以之行事)
這包括對堆疊追蹤的符號解析。是的,令人厭惡而且不幸——但如果你不願意這麼做,怎麼知道**出錯了?我知道的最高效的程式設計師不害怕深入挖掘問題。最低效的程式設計師看到錯誤甚至都不願讀錯誤資訊。(這聽起來挺可笑的,但我遇到的頻率會讓你吃驚。)
更進一步說,偉大的程式設計師看到問題,會急迫的去解決它。對於他們來說,讀錯誤資訊僅僅是第一步;他們渴望深入問題並找出錯誤的根源。他們對推卸責任沒有興趣,他們對找到解決方案有興趣。問題確實在他們這裡止步。
他們會去看源**
文件,測試和人:這些都可能會說謊。未必是故意撒謊,但是如果你想確切的知道**是怎麼工作的,你就必須親自察看源**。
即使這不是你非常熟悉的語言也不要害怕–比如,如果你主要是乙個ruby
程式設計師並且你懷疑
ruby的c
語言包裡有錯誤,那就去解壓它看看再說。不錯,你可能會一無所獲。但是誰知道呢,你也可能會找到問題所在,比起什麼都不做,你至少選擇了一條更有機會的路。
如果你工作在乙個非開源的環境中,就不太好辦了,這很不幸,不過道理是不變的。糟糕的程式設計師對檢視原始碼通常沒有太多興趣,結果就是,跟那些願意去研究一下原始碼的人相比,他們通常會被這些問題困擾的更久。
他們說做就做
好的程式設計師總是趨向於採取行動。他們似乎有種控制不住的強迫性:
一旦他們確認了乙個問題或者看到了乙個新的特性需求,就會立即著手解決,有時甚至過早或者過於勇往直前。他們遇到問題的直覺反應就是正面解決它。
有時這會帶來麻煩–但是他們的熱情正是他們能夠做的很好的關鍵因素。當某些人還在拖延迴避或者幻想問題能自己消失的時候,好的程式設計師已經開始動手了。
更簡單的來說(
也許,太過直白
):如果你看到乙個人興奮的發現並處理問題,很有可能你得到了一名好程式設計師。
他們防患未然
這可能是乙個壞的程式設計師的特徵:他們總是糾纏於乙個又乙個的人為失誤,從來都是沒有明白上乙個就轉向下乙個。他們總是在抱怨他們程式中的錯誤部分,卻耗費數小時對完美執行的**來debug
。他們讓情緒佔據主動,相信直覺而不是仔細明確的分析。
如果你突然遇到乙個問題——或者每乙個問題看起來都像是世界末日一般,你極有可能是在犯錯誤而不是在解決潛在的問題。偉大的程式設計師會花費一些時間來了解是什麼出了錯,哪怕是真的是一場災難,除了這些,他們還會把常出現的問題當成分配任務來處理掉。由於他們能更精確的解決大部分問題,從而不會提高你的團隊的緊張程度。
他們善於交流
說到底,程式設計也是一種交流的方式。能夠簡潔明瞭地表達出你的觀點之於寫**就如其之於寫詩一樣重要——長久以來,我發現那些能夠寫出精煉的電子郵件、優雅的報告或者僅僅是高效的備忘錄的人通常也會是更優秀的程式設計師。
這個發現對寫程式和對英語一樣使用。當然,把充斥著括號和只用乙個字母命名的函式寫在一行裡面也是可以的,但是如果沒有人能夠理解你寫的**,又有什麼意義呢?無論使用什麼媒介,優秀的程式設計師會把時間花在如何將他們的觀點更好地表達出來上面。
他們激情四射
我想這是最能夠體現乙個好的程式猿的地方(並且,不僅在計算機行業,這點適用於任何行業)。
如果你真正關心你做的東西——不只是把它當做乙個工作區應付,而是乙個興趣、一件對你有著莫大魅力的事情,那麼在這個行業裡,相較於其他人而言,你就擁有了一項巨大的優勢。好的程式猿會一直保持者寫**的狀態,他們每天花在這個行業裡的時間都不低於8
個小時:包括工作和空餘時間。在編寫專案和授業解惑兩者之間,他們不會偏向任何一方。他們不會只是為了搞清楚某個東西的工作原理而整天痴迷於新技術或新的程式語言。
如何成為乙個優秀的程式設計師
programming achievements how to level up as a developer 翻譯而來。文章內容如下 乙個優秀的程式設計師如何能練就成乙個卓越的程式設計師?先等等,暫時不談卓越,先談談如何成為乙個優秀的程式設計師。從第一步到第n步並沒有明確的路線圖。事實上,第n步到...
為乙個優秀的C 程式設計師
一 技術能力 1.語言 我們要成為乙個程式設計師,學的東西會很多很雜,但是最開始一定要從語言開始學習,而學習語言最關鍵的莫過於選好一本書,學校的教材就算了,根本沒有寫 得好的。在此隆重推薦 c primer 這本書很厚,內容也很豐富,對知識的講解不僅僅停留在表面。如果這本書能有耐心看完,語言方面基本...
做乙個優秀的程式設計師(反思)
乙個優秀的程式設計師必須懂得如何搜尋各種資源,必須將乙個硬道理時刻牢記於心 只有不斷學習,才能變得更加優秀。前幾年的時候,我非常懶惰,以為進了所謂的計算機卓越班,學習絲毫不費力就是同學們眼中的大佬,可是我嚴重的低估了這個社會發展的嚴酷 可能是當時的我太過幼稚,眼界小的可憐 僅僅半年我就被不少同學超越...