讓你成爲一個優秀的程序員的8種方法

做者 | Esther Schindler 程序員

譯者 | IT外文選刊(公衆號回覆「IT666」領取技術學習全網最全資料,更多資源持續更新中!)web

提高你的編程技能是一個很容易實現的職業發展目標,但「成爲一個值錢的程序員」不是一個簡單的事情。首先,若是說「我想變得更好」,就假設你知道「更好」是什麼樣子的。然而,太多人想提高和進步,殊不知道如何作。編程

所以,讓我分享8個可操做的方法,能夠做爲提升你的編程技能的指引。這些祕訣都是在計算機行業35年的時間裏收集的,其中不少都是基於前人的整理。架構

1.提醒本身要學習的內容還有不少

「要想成爲一個優秀的程序員,學習的第一步是瞭解到本身有不懂的東西。」這聽起來很明顯,但有經驗的程序員們都知道,要克服這種我的假設須要多長時間。太多的計算機科學專業的學生在畢業時都是帶着「我知道的最多」的傲慢自大,認爲本身什麼都知道,以及向每個新的同事證實這一點的強烈慾望。換句話說。你的自覺得是的態度會阻礙你學習任何新的東西。框架

2.不要再試圖證實本身是對的

要成爲偉大的人,而不只僅是優秀的人,你必須從經驗中學習。但要當心,經驗會教咱們重複不良行爲,養成壞習慣。咱們遇到過有八年經驗的程序員...和一年經驗同樣,只是重複了八次。「爲了不這種狀況,覆盤你所作的每一件事,問問本身,「我怎麼才能把這件事作得更好?」。」編程語言

新手軟件開發人員(以及太多有經驗的開發人員)看着他們的代碼,都是爲了欣賞代碼寫得有多精彩。他們寫測試來證實他們的代碼是有效的,而不是試圖讓它失敗。「真正優秀的程序員會主動尋找他們的錯誤,由於他們知道最終用戶會發現他們的問題。」工具

3.「代碼能夠工做」- 不在於你在哪裏止步,而在於你從哪裏開始。

你的第一步是要寫出符合規範的高質量軟件。通常的程序員都會在這一點上放棄,轉而去作下一件事。學習

可是,一旦「完成」了就停下來,就像拍了一張照片,指望它成爲一件藝術品同樣。「優秀的程序員都知道,第一次迭代只是第一次迭代。它成功了-恭喜你!- 但你尚未完成。你須要把它作得更好。」測試

這個過程的一部分就是定義「更好」的含義。讓它更快、更有價值嗎?更容易文檔化?更可複用?更可靠?每一個應用的答案可能都不同,但過程不會改變。職業規劃

4.好的軟件須要寫三次

好的程序員寫出的軟件都是好用的。優秀的程序員寫出的軟件都是很是好用的。但這種狀況不多在第一次嘗試時發生。最好的軟件一般要寫三次。

  • 第一次,你寫軟件是爲了向本身(或客戶)證實這個解決方案是可行的。別人可能不會意識到這只是一個驗證,但你應該知道。
  • 第二次,你讓它成功了。
  • 第三次,你把它作得很好。

「當你看到好的開發者的做品時,他們所作的工做可能並不明顯。他們所作的一切看起來都是那麼的輝煌,但你沒有看到的是,即便是明星級的開發者,也可能在向別人展現他們的軟件以前,就把初版和第二版扔掉了。」扔掉代碼,從頭再來,是很是有力的方式,能夠將其歸入你的我的工做流程中。

若是不出意外的話,"寫三次"能夠教會你有多少種方法來處理一個問題。並且,它還能防止你陷於困境。

5.閱讀代碼,閱讀大量的代碼

您可能但願我先提出這個建議,的確,這是提升編程技能最多見也是最有價值的建議。但須要弄清楚的是,閱讀別人的代碼爲何重要的緣由。

「當你閱讀別人的代碼時,你看到的是別人是何解決一個編程問題的。但不要把它當成文學做品,把它當成是一門課,也是一種挑戰。」要想變得更好,請問本身:

  • 我應該如何寫出那段代碼?如今你看到了另外一個解決方案,你會怎麼作?
  • 我學到了什麼?我如何將這種技術應用到我過去寫的代碼中?(我可能歷來沒有想過在那裏使用遞歸降低...)。
  • 我將如何改進這段代碼?若是是一個開源項目,若是你有信心給出更好的解決方案,那就去作吧!
  • 用做者的風格來寫代碼。練習這個能夠幫助你深刻編寫這個軟件的人的思惟,這能夠提升你的理解能力。

不要只是閒着無聊地想着這些步驟。把你的答案寫出來,不管是在我的日誌、博客中,仍是在代碼審查過程當中,或者是在社區論壇上和其餘開發者一塊兒討論,均可以幫助你找出答案。就像向朋友解釋一個問題能夠幫助你梳理出解決方案同樣,寫下並分享你的分析能夠幫助你理解爲何你會對別人的代碼作出特定的反應。這都是我前面提到的覆盤的一部分,幫助你冷靜地判斷本身的優勢和缺點。

警告:閱讀了大量的代碼,可是仍是不能成爲一個優秀的程序員是很常見的,就像一個想成爲做家的人,閱讀了大量優秀的文學做品可是並無提升散文水平同樣。大量的開發者看開源軟件或其餘軟件,就是爲了「找到答案」,頗有多是複製粘貼看似能解決相似問題的代碼。這樣作實際上會使你成爲一個更糟糕的程序員,由於你不加審視就盲目地接受別人的成果。(另外,它可能比夏天野餐的時候bug還多,但由於你沒有花時間去了解它,因此你永遠不會知道你導入了一個bug工廠)。

6.編寫代碼,而不只僅是做爲任務來寫

從事我的編程項目的工做有不少好處。「首先,它給你提供了一個學習工具和技術的途徑,而這些工具和技術在你目前的工做中是不具有的,但在下一份工做中卻能讓你更有市場。」不管你是爲一個開源項目作貢獻,仍是爲社區組織承擔無償工做,你都會得到技能和自信。(此外,你的我的項目還能向潛在的僱主證實你是一個永不中止學習的自我激勵者)。

爲了樂趣而編寫代碼的另外一個好處是,它迫使你本身去想辦法。你不能把困難的事情交給別人,因此它可讓你不至於過早地尋求幫助。

專業意見:不要只選擇我的項目,不要只選擇你永遠不會失敗的項目。你須要失敗! 可是,你可能確實不想在工做中或當你有時間期限時失敗。

7.儘量地與其餘開發者合做

傾聽別人的意見是有幫助的。這可能意味着結對編程,或參加黑客馬拉松,或加入一個編程交流羣。當你對一個開源項目作出貢獻時,要注意從用戶和其餘開發者那裏獲取反饋。你在他們的批評中看到了哪些共同點?

「你可能很幸運地找到了一個你能夠信任的導師,在從編碼技術到職業規劃等方面都能給你提供指導。不要浪費這些機會。」

8.儘量地與其餘開發者合做

編程語言、工具和方法論層出不窮。這就是爲何儘量多地得到語言和框架的經驗是值得的。專一於編程的基礎知識,由於基礎知識是永遠不會改變的;多關注架構而不是編程。若是你以爲只有一種正確的方法來作某件事情,那麼多是時候進行檢討了。教條會阻礙你學習新事物的能力,讓你遲遲不能適應變化。

END


外文連接:

https://blog.newrelic.com/eng...


版權聲明:

本譯文僅用於學習、研究和交流目的,歡迎非商業轉載。轉載請註明出處、譯者和IT外文選刊的完整連接。

相關文章
相關標籤/搜索