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