Python 老司機給上路新手的 3 點忠告!
在你學習程式設計的過程中,是否有過以下經歷,或正在面臨類似的局面:
- 網上找了很多資料,不知道從哪裡看起
- 買了本書,過了很久也沒有看完第一章
- 開始還能跟著寫幾行程式碼,後來突然就看不懂了
- 也看了些教程和視訊,似乎明白了,但還是沒法自己寫程式碼
- 入門了很多次,每次過兩個月就又全忘了
對於初學者,尤其是自學者,太多問題可能成為你程式設計之路上的坎,一不小心就從入門到放棄了。
一、你需要一個明確的學習目標
很多人會說,我有目標啊,就是要學會程式設計,然後還要找份高薪的程式設計師工作。這是一種目標,但不是明確的、具體的、可執行的學習目標。這就好比說“我要幸福”、“我要做自己想做的事”但沒有具體標準一樣,對你的行動沒有任何指導意義。
你要學程式設計,是為了去寫一個自動指令碼搶票搶優惠券,還是平常處理大量檔案時候可以自動化?是為了驗證你股票上的交易策略是否可靠,還是做一個網頁推廣自己的品牌?如果你的目標是為了找工作,那是想做開發遊戲還是桌面軟體,是資料處理還是網站,前端還是後端?程式設計是一個很廣泛的概念,明確你的目的,學習時才能有方向,也更能堅持下去。
也許有不少人覺得,我也不清楚,只是想多學個技能,總歸會有好處吧。而且我都還沒學呢,怎麼知道之後要做什麼?這個出發點可以理解,但我仍然建議:必須給自己定一個小目標。哪怕你開腦洞隨便想一個需求也是好的。不然這種先學了再說的狀態很難讓你堅持下去。
你不必擔心定錯了目標就走上了彎路,它總比沒有目標要好多了。它只是你學習初期的一個里程碑,等你能順利完成它,後面還有更多的目標供你選擇。
二、建立整體的認知
在軟體開發領域有這樣一句話:
過早的優化是萬惡之源。
在程式設計學習裡同樣有效。很多人會追求某種一步到位的終極路線,表現出來就是:
- 希望別人推薦一套最佳教程
- 先理論後實踐
- 鑽入細節的牛角尖
似乎看起來沒什麼不對,明確路線、打好基礎、按部就班,很符合一貫的教育理念啊。就好像你執意要優化你的程式碼一樣,如果我說你這麼做是錯的,倒顯得我有問題。
但事情是分時機的,正確的事情在不合適的時間去做,就會導致錯誤的結果。過早地陷入區域性細節,追求理論基礎,很容易讓初學者困惑,以至於在某個點上卡殼,無法繼續學習下去。淺顯易懂和專業性強本來就是很難調和的兩個維度,很多教程之所以優秀,是因為它內容體系完善,但對於你來說真的合適嗎?
對於早期學習者,尤其是非專業的自學者來說,囫圇吞棗、不求甚解才是更合理的開啟方式。
借用網上的這張圖,程式設計與之很類似。如果說圖上的點是程式設計相關的各種概念和技術,學習的過程就好比繪製這張圖:你通過學習,瞭解了這些技能點,並將其連線起來。
一種繪製方法就是先畫好一個點的細節,再從這個點出發精確畫出通往下一個點的線,依次一個個畫下去。這是種看似穩妥,實際上卻低效且很容易出錯的方式。更合理的方法是:先確定紙上點的大體分佈,畫出他們的輪廓,然後畫好關鍵位置上的點,連線關鍵點,之後再逐步完善分支和細節。
學習程式設計是一個反覆迂迴、不斷迭代的過程,而不是一路到底的單行道。
在剛接觸程式設計的時候,你根本無須在意太多細節,而是更應該對程式設計有個直觀的印象,知道技術能夠實現什麼,體會程式設計的樂趣。這和上一點是相輔相成的:當你有了一個目標,就可以去了解達到目標需要哪些知識點、怎樣的學習路徑,以此來確立自己要學習的內容;而當你對程式設計的有一個整體的認知,又會更清楚自己學了程式設計可以做什麼,讓自己的目標更明確。
三、選擇合適的起點和路線
在有了明確的目標,建立了整體的認知之後,接下來的事情就很自然了:選擇一個合適你的起點,朝著通往目標的方向,開始你的學習,點亮技能圖譜上的點,並將其連線起來。否則,盲目地從一個不恰當的地方開始,就會事倍功半,效率很低,甚至導致放棄。所謂“欲速則不達”,就是這個道理。
以上三點,通俗來說就是,你要弄清楚:
- 學了幹嘛
- 學哪些內容
- 從哪學起
你去隨便找一款目前市面上流行的手機遊戲,會發現它們的新手引導也是類似的套路:
- 向你說明遊戲的勝利條件,引導你取得一場勝利(明確目標)
- 讓你體驗一套高級別高配置的陣容(整體的認知)
- 指導你遊戲基本操作和初期的升級(起點和路線)
這些遊戲經過精心設計,力求讓玩家成癮。對於學習也是如此,讓自己儘快“上癮”,才能深入下去。以上只是學習程式設計的一個開端,上手之後,也有很多重要提示。