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