如何選擇一個合適的練手項目
共 1770字,需瀏覽 4分鐘
·
2024-07-15 13:31
經(jīng)常有同學(xué)問到關(guān)于練手項目的問題,今天在這里集中聊一聊,包括我這些年指導(dǎo)學(xué)生的一點經(jīng)驗,供各位參考。
1. WHO:誰需要練手項目?
可以說,所有編程學(xué)習(xí)者都離不開實踐的過程。除非你只是心血來潮,僅僅想看下編程是怎樣一回事,不打算去用它。否則,不管你是準(zhǔn)備成為一名專業(yè)的開發(fā)人員,還是想在其他領(lǐng)域使用編程提升效率,只要你打算“真的”寫程序,那就離不開練習(xí)。
2. WHY:為什么需要練手?
少數(shù)技能是知道/不知道的性質(zhì),比如某種工具軟件的使用、某種機器的操作,只要經(jīng)過培訓(xùn)就能上崗;大多數(shù)的技能是熟練/不熟練的性質(zhì),比如演奏樂器、駕駛汽車。編程亦是如此。你了解基礎(chǔ)的語法、類型、常用的函數(shù)、模塊,就好像你知道如何在吉他上彈出單音、和弦,這離演奏出一首曲子來,還差了大量的練習(xí)時間。
編程雖不用像樂器一樣需要肌肉記憶,但你同樣需要對常用“套路”的熟悉,才能在使用時信手拈來。另一方面,只有去面對實際的問題,才會倒逼你思考解決問題的“大局觀”,如何流程化模塊化地實現(xiàn)你需要的功能。
3. WHEN:什么時候開始練?
盡管項目實踐很重要,但也不宜過早,所謂“欲速則不達(dá)”。如果你還沒有掌握編程的基礎(chǔ),就急于做出一個可展示的作品,往往事倍功半,說不定還帶來挫敗感,喪失繼續(xù)學(xué)習(xí)的動力。我建議,至少你對基本的語法、類型,常用的數(shù)據(jù)結(jié)構(gòu)如 list、dict 的使用,函數(shù)及參數(shù)的原理,字符串、文件、網(wǎng)絡(luò)操作,如何使用模塊提供的功能等方面都有所了解之后,再動手做項目。在此之前,把教程上的例程自己寫一遍會更有效果。
當(dāng)然,也不宜太晚。學(xué)會編程,但遲遲不動手,過一陣子這個技能就荒廢了,等到下次想起來要用的時候發(fā)現(xiàn)又得從頭學(xué)。很多人表示,我上學(xué)時候?qū)W過 C 語言,但依然寫不出代碼,就是這個原因。
4. WHAT:應(yīng)該選擇怎樣的項目?
盡可能選擇難度在自己能力上界左右的項目。太簡單了對能力提升不大;太難了,步子太大,通常都是半途而廢。偶爾會遇到有人問類似問題:我剛學(xué) Python,我想做個自動駕駛程序,應(yīng)該怎么做?這問題我回答不了,答案也沒有意義,在你能力還不夠的時候,即便答案放在你面前也是理解不了的。高出自己能力一點點,在過程中通過搜索、查閱、詢問等方式解決問題,你的經(jīng)驗值才會得到增長。
除了合適的難度外,盡量從身邊入手,尋找可用程序解決的問題。做一個你平常用得上的批量文件處理小程序,會比千篇一律的抓圖片爬蟲更有意思。這樣的項目目標(biāo)明確,最終更可能完成。
5. HOW:選好題后要怎么練?
從模仿做起,從核心功能做起。比如你要做網(wǎng)站項目,那就可以模仿一個知乎。開發(fā)時,不建議用瀑布式的開發(fā)模式一步到位,而是迭代式的開發(fā),例如:1.先完成最基本的問答功能;2.之后增加點贊、排序;3.再增加評論功能;4.實現(xiàn)關(guān)注用戶功能……迭代式開發(fā)可以讓你更快獲得階段成就感。永遠(yuǎn)記住:完成比完美更重要!
當(dāng)你慢慢已經(jīng)可以模仿得像那么回事之后,不妨嘗試下:1.深入細(xì)節(jié),把一兩個具體功能做到“像素級”復(fù)刻原版的程度;2.增加你自己的功能,甚至完全原創(chuàng)一個項目;3.把你的作品發(fā)給別人使用。當(dāng)做到這幾點的時候,你已經(jīng)離一個程序員不遠(yuǎn)了。
以上是我對于通過項目實踐提升編程能力的一些經(jīng)驗和建議。歡迎留言討論,也歡迎分享你在學(xué)習(xí)中的心得。
大家好,歡迎來到 Crossin的編程教室~
作者:Crossin的編程教室
