老碼農(nóng)的「錦囊」:10個(gè)編程技巧、5個(gè)糾錯(cuò)步驟,讓你的編程之路少點(diǎn)坎坷
在我下決心將編程進(jìn)行到底之前,大概經(jīng)歷了四次放棄又撿起的過程,而且我觀察了一些數(shù)據(jù)科學(xué)的學(xué)生,這種事不光是我一個(gè)人做過。
緩慢且乏味的學(xué)習(xí)過程,隨之而來的挫折感,這些都是造成半途而廢的原因。因此,我開始思考如何消除那些本不必要但確實(shí)阻礙了人們成為合格程序員的困難。學(xué)習(xí)都會(huì)有困難的,但是我們至少要減少一些沒有必要的障礙。
這里有 10 個(gè)技巧可以幫助你更快地跨越障礙,獲得更多的成就感。如果你已經(jīng)寫了很多年的代碼,這里的許多技巧可能顯得用處不大,但是對(duì)新手來說就是另外一回事了。而且就算你是個(gè)編程老手,也可能會(huì)看到一兩個(gè)節(jié)省時(shí)間的小竅門呢!
十個(gè)小技巧
1. 分屏
在大多數(shù)情況下,我建議你在學(xué)習(xí)編程的時(shí)候把屏幕分成兩個(gè)并排的面板——一個(gè)給你的 Jupyter notebook,另一個(gè)放瀏覽器,瀏覽器用來查看文檔、Stack Overflow 和一些教程。如果你的屏幕很小,建議在負(fù)擔(dān)得起的前提下?lián)Q個(gè)大點(diǎn)的顯示器。在美國,你可以花 100 多美元在亞馬遜 (Amazon) 上買到一臺(tái) 25 英寸的顯示器。等你越來越熟練的時(shí)候,你就會(huì)想要專注于一件工作——這時(shí)候可以用鍵盤快捷鍵在分屏和全屏之間切換。在 Mac 上,我喜歡用 BetterSnapTool,如果你的系統(tǒng)是 Windows,可以到這篇文章(https://www.excelcampus.com/tips/split-screen-view-windows-mac/)上看看。
2. 屏蔽干擾
讓電腦和手機(jī)靜音。如果可以的話,把手機(jī)拿開。如果你在一個(gè)嘈雜的地方,播放一些安靜的純音樂或者使用降噪耳機(jī)。你越能集中注意力,你就能學(xué)得越快。
3. 親手把示例代碼寫一遍
你不可能讀一遍教程就能記住這些內(nèi)容,復(fù)制粘貼沒有什么實(shí)際價(jià)值,你必須先自己寫一遍,然后想想怎么擴(kuò)展一下,最后根據(jù)記憶打出來?!咐碚撋希碚摵蛯?shí)踐之間沒有區(qū)別。但實(shí)際上是有的。」——本杰明·布魯斯特(不是約吉·貝拉最先說的)。
4. 溫故知新
學(xué)習(xí)一個(gè)新概念之后,在幾天內(nèi)再測(cè)試一下自己。研究表明,需要長(zhǎng)期記住一件事時(shí),每隔一段時(shí)間重復(fù)一次比直接死記硬背更有效。
5. 通過教別人來學(xué)習(xí)
能教會(huì)別人,說明自己徹底懂了。向別人清楚地解釋一個(gè)概念(口述或是書面都行)會(huì)迫使你理解這個(gè)概念的本質(zhì),建立關(guān)系,并創(chuàng)建類比,使得頭腦中的聯(lián)系得以鞏固。這個(gè)技巧是 Feynman 學(xué)習(xí)技巧的一部分。
6. 打好語言基礎(chǔ)再調(diào)庫
在使用編寫好的程序庫之前,要充分理解一門編程語言。學(xué)習(xí)變量類型可能很無聊,調(diào)用帶有屬性和方法的類似乎比較高級(jí)。但是一旦你很好地理解了一門語言,這個(gè)庫的使用會(huì)容易得多。這樣可以減少錯(cuò)誤,節(jié)省大量時(shí)間。
7. 一次只學(xué)一個(gè)東西
不要試圖同時(shí)學(xué)習(xí)兩個(gè)東西,這樣你學(xué)習(xí)的時(shí)間不只是變成兩倍,而是變成十倍。同理, 不要分心于閃閃發(fā)光的東西。找個(gè)地方,把那些誘人但和你正在學(xué)習(xí)的東西不相關(guān)的 url 保存一下,Chrome 的插件 One Tab 就很好用。
8. 睡覺,鍛煉,保持復(fù)原能力
讓你的大腦處于最好的狀態(tài),保持神經(jīng)連接的活躍。如果想要了解更多幫助你保持好狀態(tài)的技術(shù),可以看一下 Memorable Python 這本書。
9. 加快打字速度
你打特殊符號(hào)的次數(shù)越多,你打字速度就越快。然而,你只要做一件小事就能很大程度上加快這個(gè)過程——學(xué)習(xí)好的觸摸打字方式。這個(gè)網(wǎng)站(http://www.speedcoder.net/lessons/py/1/)里是一個(gè) SpeedCoder 的相關(guān)練習(xí)。
10. 學(xué)會(huì)使用快捷鍵
這里整理了三份快捷鍵使用方法:
- Chrome 瀏覽器:https://support.google.com/chrome/answer/157179?hl=en)
- Mac :https://support.apple.com/en-us/HT201236
- Windows :https://support.microsoft.com/en-us/help/12445/windows-%20keyboard-
如果你是數(shù)據(jù)科學(xué)家或數(shù)據(jù)分析師,我在 Github 中對(duì) Jupyter Lab 的快捷鍵做了整理 (https://gist.github.com/discdiver/9e00618756d120a8c9fa344ac1c375ac)。通過在~/的 Bash 配置文件中添加 ~/.bash_profile:alias gs="git status"就可以為 Mac 或 Linux 終端創(chuàng)建快捷方式。然后重新啟動(dòng)你的終端,這時(shí)候你需要鍵入的就是兩個(gè)按鍵而不是兩個(gè)單詞了。
福利:如何快速解決代碼中的錯(cuò)誤
這個(gè)話題太大了,但是卻并沒有得到足夠的重視,我也因此在考慮是否需要寫一篇。這部分算是福利:「一個(gè)快速解決錯(cuò)誤的五步法」。
每一個(gè)程序員都會(huì)碰到很多錯(cuò)誤。當(dāng)你有經(jīng)驗(yàn)時(shí),碰到錯(cuò)誤大概就只會(huì)聳聳肩,因?yàn)槟憧梢栽谝环昼妰?nèi)解決它們。
但是對(duì)于新手來說,一個(gè)錯(cuò)誤可能會(huì)耗費(fèi) 20 倍甚至更多的時(shí)間去解決。對(duì)于初學(xué)者來說,錯(cuò)誤會(huì)讓你覺得正在腳踝深的泥漿中跋涉。
這五個(gè)步驟可以幫你快速解決 95% 的錯(cuò)誤。
1. 看看是不是代碼打錯(cuò)了
有可能少括號(hào),或者是變量或函數(shù)拼寫錯(cuò)誤。所以一定要在提供代碼高亮顯示的軟件中進(jìn)行輸入,以避免錯(cuò)誤或是快速修復(fù)縮進(jìn)、少括號(hào)和類似錯(cuò)誤。有很多好的代碼編輯器可供選擇。如果你是新手,我建議你使用 VSCode——它擁有最大的市場(chǎng)份額,而且是免費(fèi)的,并且有很多方便的功能。
2. 先讀錯(cuò)誤信息里的開頭和結(jié)尾
相比于開頭和結(jié)尾,錯(cuò)誤信息的中間部分沒那么有用。之后再看你的代碼,看看你是否能夠根據(jù)錯(cuò)誤消息中的提示找出問題所在。如果無法快速解碼錯(cuò)誤信息,請(qǐng)將信息的最后一行復(fù)制并粘貼到谷歌中(如果使用的是 Python),其他語言可能在這之前也有錯(cuò)誤消息)。新手最大的錯(cuò)誤是沒有盡快用谷歌來查詢錯(cuò)誤信息。
3. 對(duì)網(wǎng)絡(luò)資源進(jìn)行篩選以分清良莠
這一部分列舉一些快速找到高質(zhì)量資源的啟發(fā)性方法吧。Stack Overflow、Medium、Reddit、Hacker News、Dev 和其它的線上社區(qū)會(huì)有反饋機(jī)制(如贊等)來顯示哪些答案是高質(zhì)量的。這些方法并不完美,但是通常效果也挺好的。大部分解決方案都是在 Stack Overflow、 Towards Data Science、GitHub 中對(duì)應(yīng)問題的 issues 板塊中找到的。
在谷歌的搜索結(jié)果中,博客的質(zhì)量是成敗的關(guān)鍵。如果你用的是 Python,我可以根據(jù)我的經(jīng)驗(yàn)推薦一些好的網(wǎng)站:
- Real Python (https://realpython.com/)
- Data School (https://www.dataschool.io/)
- Dataquest Blog (https://www.dataquest.io/blog/)
- DataCamp Blog (https://www.datacamp.com/community/blog)
- Practical Business Python (https://pbpython.com/)
- Chris Albon (https://chrisalbon.com/#machine_learning)
4. 過濾舊資源
對(duì)于大多數(shù)問題,你需要的是近幾年的資源。因此當(dāng)在谷歌上搜索一個(gè)錯(cuò)誤的解決方案時(shí),你可以過濾掉舊的結(jié)果,比如在搜索條件里設(shè)置時(shí)間限制,或者在查看結(jié)果片段時(shí)通過大體掃一遍來肉眼過濾等。
就比如說,如果你剛開始接觸 Python, 2009 年有關(guān) Python 2 的內(nèi)容可能對(duì)您沒有幫助。
API 在不斷發(fā)展,過去使用的方法通常在現(xiàn)在并不適用。你更有可能在相對(duì)近期的結(jié)果中找到一個(gè)適用的答案。
5. 讀懂錯(cuò)誤信息
這個(gè)網(wǎng)站
(https://inventwithpython.com/blog/2012/07/09/16-common-python-runtime-errors-beginners-find/)記錄了常見錯(cuò)誤信息在 Python 中的含義,這個(gè)網(wǎng)站
(https://pythonforbiologists.com/29-common-beginner-errors-on-one-page)則可以幫助你解決常見的 Python 錯(cuò)誤。
如果在用 Python 的 pandas 庫來做數(shù)據(jù)處理,有很多常見的錯(cuò)誤。這個(gè)網(wǎng)頁
(https://gist.github.com/discdiver/2f8df1c3f1c66f47129568a82c0666e5)里是我用 Jupyter notebook 整理的常見錯(cuò)誤及其解決方案。
總結(jié)
只要有正確的心態(tài)、一些指導(dǎo)和大量的實(shí)踐,任何人都可以學(xué)會(huì)編程。這個(gè)過程可能沒那么快也不算簡(jiǎn)單,但希望這篇文章能使這個(gè)過程變得不那么令人沮喪。
原文鏈接:
https://towardsdatascience.com/ten-tips-to-save-you-time-and-frustration-when-programming-1f5a4b61f390
【本文是51CTO專欄機(jī)構(gòu)“機(jī)器之心”的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】