如何選擇一個合適的練手項目

最近在組織編程擂臺活動(前文:碼上行動的同學,你有一個機會等待簽收),會幫學員們挑選合適的項目,在實踐中提升編程能力。

在選題過程中,有些普遍被關注的問題,今天在這裏集中聊一聊,包括我這些年指導學生的一點經驗,供各位參考。

  1. WHO:誰需要練手項目?
    可以說,所有編程學習者都離不開實踐的過程。除非你只是心血來潮,僅僅想看下編程是怎樣一回事,不打算去用它。否則,不管你是準備成爲一名專業的開發人員,還是想在其他領域使用編程提升效率,只要你打算“真的”寫程序,那就離不開練習。

  2. WHY:爲什麼需要練手?
    少數技能是知道/不知道的性質,比如某種工具軟件的使用、某種機器的操作,只要經過培訓就能上崗;大多數的技能是熟練/不熟練的性質,比如演奏樂器、駕駛汽車。編程亦是如此。你瞭解基礎的語法、類型、常用的函數、模塊,就好像你知道如何在吉他上彈出單音、和絃,這離演奏出一首曲子來,還差了大量的練習時間。

編程雖不用像樂器一樣需要肌肉記憶,但你同樣需要對常用“套路”的熟悉,才能在使用時信手拈來。另一方面,只有去面對實際的問題,纔會倒逼你思考解決問題的“大局觀”,如何流程化模塊化地實現你需要的功能。

  1. WHEN:什麼時候開始練?
    儘管項目實踐很重要,但也不宜過早,所謂“欲速則不達”。如果你還沒有掌握編程的基礎,就急於做出一個可展示的作品,往往事倍功半,說不定還帶來挫敗感,喪失繼續學習的動力。我建議,至少你對基本的語法、類型,常用的數據結構如 list、dict 的使用,函數及參數的原理,字符串、文件、網絡操作,如何使用模塊提供的功能等方面都有所瞭解之後,再動手做項目。在此之前,把教程上的例程自己寫一遍會更有效果。

當然,也不宜太晚。學會編程,但遲遲不動手,過一陣子這個技能就荒廢了,等到下次想起來要用的時候發現又得從頭學。很多人表示,我上學時候學過 C 語言,但依然寫不出代碼,就是這個原因。

  1. WHAT:應該選擇怎樣的項目?
    儘可能選擇難度在自己能力上界左右的項目。太簡單了對能力提升不大;太難了,步子太大,通常都是半途而廢。偶爾會遇到有人問類似問題:我剛學 Python,我想做個自動駕駛程序,應該怎麼做?這問題我回答不了,答案也沒有意義,在你能力還不夠的時候,即便答案放在你面前也是理解不了的。高出自己能力一點點,在過程中通過搜索、查閱、詢問等方式解決問題,你的經驗值纔會得到增長。

除了合適的難度外,儘量從身邊入手,尋找可用程序解決的問題。做一個你平常用得上的批量文件處理小程序,會比千篇一律的抓圖片爬蟲更有意思。這樣的項目目標明確,最終更可能完成。

  1. HOW:選好題後要怎麼練?
    從模仿做起,從核心功能做起。比如你要做網站項目,那就可以模仿一個知乎。開發時,不建議用瀑布式的開發模式一步到位,而是迭代式的開發,例如:
    1.先完成最基本的問答功能;
    2.之後增加點贊、排序;
    3.再增加評論功能;
    4.實現關注用戶功能
    ……
    迭代式開發可以讓你更快獲得階段成就感。永遠記住:完成比完美更重要!

當你慢慢已經可以模仿得像那麼回事之後,不妨嘗試下:
1.深入細節,把一兩個具體功能做到“像素級”復刻原版的程度;
2.增加你自己的功能,甚至完全原創一個項目;
3.把你的作品發給別人使用。當做到這幾點的時候,你已經離一個程序員不遠了。

以上是我對於通過項目實踐提升編程能力的一些經驗和建議。歡迎留言討論,也歡迎分享你在學習中的心得。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章