.NET 開發者提高編程技能的五種方法
即使擁有40年的編程經驗,我唯一能確定的就是肯定有比我更好的程序員。但是我并沒有放棄,我會繼續嘗試并提高自己的編程技能。
我認為有五件事可以幫助任何人成為更好的程序員。有些是我個人的經驗,有的則是我從網上和其他程序員那里學到的方法。
查找適合您的學習方法
我們每個人都以不同的方式學習。例如,我不是視頻學習的忠實擁護者,而是寧愿從書本或網站上學習。而且我敢肯定我并不孤單:對于許多人來說,一段30分鐘的視頻(甚至更長)太慢了。這就是為什么YouTube上一些最受歡迎的編程視頻往往很短的原因-在許多情況下,時間在5到12分鐘之間。
如果您在學習視頻方面遇到困難,建議您去上學,閱讀?;氐轿覄傞_始的時候,編譯器附帶了廣泛的紙質手冊,您可以從頭到尾閱讀?,F在所有軟件文檔似乎都在線上,您可以按照自己的進度閱讀。
如果您不是被動學習的愛好者(無論是基于視頻還是基于文本),那么還有另一種可行的方法:編寫比賽代碼。您不必取勝,但是將自己的技能與其他人置于快節奏的環境中通常會教給您一些新的技巧。而且,如果您確實贏了-嘿,通常會有現金獎。Project Euler[2],TopCoder[3],Coderbyte[4]等幾個網站都可以挑戰您。
無論選擇哪種教育方式,都要確保離開舒適區。您需要投入未知才能成為更好的程序員。即使您有多年的經驗,仍然有很多東西要學習。
簡化您的代碼
只要有問題的代碼寫得好并且易于遵循,閱讀其他人生成的代碼就很有見識。如果您在編寫和維護代碼時遇到麻煩,檢查有經驗的程序員如何處理類似的任務是挑選一些指針的好方法。通常,您會發現這些專業人士盡可能地簡化了他們的代碼。
這是我多年來積累的一些簡化技巧:
刪除明顯的復制和粘貼代碼。如果您在不同的地方看到相同的代碼,則很可能成為類中的函數或方法的候選者。
將大型代碼塊拆分為較小的代碼塊。同樣,您可以將這些巨大的塊簡化為函數或方法,即使它們僅被調用一次:具有有意義名稱的代碼塊也更易于遵循。您并非總是能夠將代碼簡化為單一功能,但這是您可以追求的目標。
使用重構工具使變量名更具描述性。另外,添加有意義的注釋。從簡單的函數開始,以便您可以理解它們,并力求在每個函數,類和方法的頂部至少有一行注釋。
學習不同的編程語言
同樣,作為一名程序員而提高意味著要超越自己的舒適區。例如,如果您了解面向對象的語言,請嘗試一種功能性的語言。對于C#,顯而易見的功能語言是F#。同樣,如果您僅編程桌面應用程序,請嘗試學習移動或Web開發[5];如果您知道C#,則可以將Xamarin用于移動開發[6],也可以將ASP.NET MVC用于Web。我知道臺式機C#和Xamarin,但不了解ASP.NET MVC,我最近開始學習在線課程。
盡管它可能對您的編程無濟于事,但我鼓勵Windows開發人員學習如何使用Linux[7]。您可以將其安裝在舊PC或Windows機器上;如果要對網站進行編程,請嘗試在Linux[8]上設置Apache Web服務器。
學習新編程語言的首選方法是轉換現有的實用程序或小型程序。因為您已經知道它的作用以及它的工作方式,并且獲得了輸出或測試結果,所以使用新語言確實可以簡化學習過程。例如,我通過獲取現有Z80編輯器/匯編器的源代碼并從中編寫6502交叉匯編器來學習Z80匯編器編程。我沒有調試器,這可能有點極端,但是它對我有用。
探索不同的做事方式
這可能是這五件事中最難做到的。遇到編程問題時,我的直覺總是鎖定解決問題的特定方式。但是通常有更多的方法可以解決它。一旦用通常的方法解決了問題,就可以通過更快或更節省內存的方法來重做舒適區。起初可能會令人沮喪,但它可能使您成為功能更豐富的程序員。
在調試器中單步執行代碼
您可能會認為所有程序員都這樣做;但是在我的職業生涯中,我遇到了至少兩個沒有這么做的人,他們留下了一個漏洞被客戶發現。(“生產測試”,我曾聽說過這種說法,但這并不是對職業的友好舉動。)如果您確信自己的軟件沒有錯誤,那么可以采用著名計算機科學家Donald Knuth[9]的方法:他將獎勵支票郵寄給發現自己編寫的軟件有錯誤的任何人。
不愿意冒險嗎?單步執行代碼。您將對正在發生的事情有一個更好的了解,確定自己思維中的薄弱環節,并在下次構建類似的軟件時學習做什么(或不做什么)。
結論
我會練習這些技巧嗎?多半是對的。正如任何程序員所知道的那樣,當您忙于工作時,很難找到學習和成長的時間。盡管如此,重要的是要保留時間嘗試新事物。盡可能地保持技能的磨練不僅是保留您的工作,而且還可以完成您實際想要做的項目的最佳方法。
References
[1] David Bolton: https://insights.dice.com/author/dhbolton/
[2] Project Euler: https://projecteuler.net/
[3] TopCoder: https://www.topcoder.com/challenges/?pageIndex=1
[4] Coderbyte: https://coderbyte.com/
[5] Web開發: https://www.dice.com/jobs/q-Web+development-jobs
[6] 移動開發: https://www.dice.com/jobs/q-Mobile+development-jobs
[7] Linux: https://www.dice.com/jobs/q-Linux+Administrator-jobs
[8] Linux: https://www.dice.com/jobs/q-Linux+Administrator-jobs
[9] Donald Knuth: https://en.wikipedia.org/wiki/Knuth_reward_check
原文鏈接
https://insights.dice.com/2017/08/29/5-ways-improve-programming-skills/