有哪些項(xiàng)目在編程學(xué)習(xí)中練手最有效?

  • 回答一些正在自學(xué)編程的童鞋跟我提的問(wèn)題
  • 自學(xué)編程時(shí)學(xué)的東西忘得快,做什么項(xiàng)目最有效?
  • 怎樣判斷一個(gè)項(xiàng)目最適合自己學(xué)習(xí)練習(xí)?
  • 如做設(shè)計(jì)一個(gè)項(xiàng)目自己在學(xué)習(xí)中練習(xí)?

一、不同的階段,不同的練習(xí)

我把IT編程類(lèi)的學(xué)習(xí),一般分為以下幾個(gè)階段:(以下為遞進(jìn)關(guān)系)

  • 程序邏輯階段
    練習(xí)基本都是解答數(shù)學(xué)題,如萬(wàn)年歷,斐波那契數(shù)列,完全數(shù),雞兔同籠問(wèn)題。要求掌握循環(huán)、嵌套循環(huán),二維數(shù)組熟練應(yīng)用。
  • 面向?qū)ο箅A段
    思維要從面向過(guò)程向面向?qū)ο螅嫦蚪涌谵D(zhuǎn)變。沒(méi)有一定代碼量的基礎(chǔ),轉(zhuǎn)不過(guò),把面向過(guò)程的方法調(diào)用,參數(shù)傳遞,方法如何定義設(shè)計(jì)弄清楚,再轉(zhuǎn)到類(lèi)的設(shè)計(jì),消息傳遞上。
    這個(gè)時(shí)候的練習(xí)走向綜合性。沒(méi)有一定代碼量的積累是很難到OOAD(面向?qū)ο蟮脑O(shè)計(jì)與分析)的。
  • 某個(gè)開(kāi)發(fā)語(yǔ)言類(lèi)庫(kù),API
    Java如io, lang, util, text, sql包下類(lèi)的應(yīng)用
    此時(shí)多做一些針對(duì)性的,如io, jdbc的
  • 與這個(gè)核心語(yǔ)言相關(guān)聯(lián)的其他必要知識(shí)點(diǎn)
    如web開(kāi)發(fā)語(yǔ)言,都會(huì)涉及到 html, css, js(jq), db
    手機(jī)端開(kāi)發(fā)相對(duì)單一,也會(huì)有sqlite, 簡(jiǎn)單html, h5
    這部分甚至可以單獨(dú)項(xiàng)目練習(xí),最好是結(jié)合最后的項(xiàng)目(下面有推薦)。
  • 框架階段
    分為基本和擴(kuò)展框架
    比如Java,先掌握jsp, servlet,然后是Struts2, SpringMVC,MyBatis等輕量級(jí)框架
    這時(shí)的項(xiàng)目,以大的綜合性為主,基本上就是你想到的最終項(xiàng)目。

二、鎖定一個(gè)最終的項(xiàng)目作為目標(biāo),Step by Step

典型練手項(xiàng)目如:Web學(xué)習(xí)項(xiàng)目三件套:BBS(論壇),商城,CRM,適合Java, PHP, ASP.NET的學(xué)習(xí)。

客戶端典型練習(xí)項(xiàng)目:MIS(信息管理系統(tǒng)), 小工具類(lèi)(記事本,播放器),適合Android , iOS , C語(yǔ)言基礎(chǔ)的學(xué)習(xí)。

這樣的項(xiàng)目一定要完全模仿網(wǎng)上現(xiàn)成產(chǎn)品的功能來(lái)實(shí)現(xiàn),要“高仿”,甚至前臺(tái)頁(yè)面的樣式代碼可以直接從網(wǎng)上扒下來(lái)。

MVP原則(最小化可行產(chǎn)品)
1、用學(xué)的東西做出最小化產(chǎn)品來(lái)
不同的學(xué)習(xí)階段,可以做出不同的練習(xí)、項(xiàng)目。但是不能照著書(shū)本,視頻,一行一行敲過(guò),運(yùn)行完了,就OK了。

而是要做擴(kuò)展,在這個(gè)基礎(chǔ),想想還能不能添加其他的功能。要有產(chǎn)品意識(shí),而不是Demo或練習(xí)的思維。

2、用掌握的最少知識(shí)做出一個(gè)產(chǎn)品來(lái),再逐步擴(kuò)展。
如想做一個(gè)Web項(xiàng)目,你需要掌握html,css,js(jq), database, Java(或php, python, .net),這些知識(shí)點(diǎn),你一個(gè)個(gè)自學(xué)下來(lái),太零碎,如果沒(méi)有項(xiàng)目驅(qū)動(dòng),用最小化項(xiàng)來(lái)實(shí)現(xiàn),整個(gè)學(xué)習(xí)效果都不好。

所以要分清核心,在關(guān)鍵知識(shí)點(diǎn)掌握基礎(chǔ)上就做項(xiàng)目來(lái)提高,如jsp,servlet, jdbc 加簡(jiǎn)單html ,少量js,即可實(shí)現(xiàn)一個(gè)完整web項(xiàng)目功能。

在這個(gè)基礎(chǔ)上,向后端擴(kuò)展,就是掌握輕量級(jí)框架,向前端擴(kuò)展就是掌握html, js, jquery, bootstrap

3、嘗試用編程開(kāi)發(fā)來(lái)提高你工作中的效率
把你工作中的痛點(diǎn)(低效率),從項(xiàng)目的角度來(lái)思考,搞一個(gè)項(xiàng)目去提升工作效率,解決痛點(diǎn)問(wèn)題。


以學(xué)習(xí)Python為例,我做了哪些項(xiàng)目,是如何快速提高并應(yīng)用的?這些項(xiàng)目是自己設(shè)計(jì)并實(shí)現(xiàn)的。

1、確定體系,確定方向
剛開(kāi)始我了解了一下Python能做哪些:爬蟲(chóng)、Web開(kāi)發(fā)、科學(xué)計(jì)算,游戲、圖形開(kāi)發(fā)... ... 太廣啦,我需要找一個(gè)學(xué)習(xí)的切入點(diǎn),即先學(xué)什么內(nèi)容,用Python去做什么?

選擇爬蟲(chóng)作為我Python學(xué)習(xí)的開(kāi)始。方向確定后,簡(jiǎn)單了解語(yǔ)法,找了幾段代碼邊看邊改,熟悉Python爬蟲(chóng),一開(kāi)始是從網(wǎng)上爬圖片,然后是頁(yè)面解析 xpath , beautifulsup , 寫(xiě)了這篇文章:當(dāng)我們學(xué)Python時(shí),我們學(xué)什么?。上周一個(gè)Python的公眾號(hào)跟我聯(lián)系要求轉(zhuǎn)發(fā)。

基本的數(shù)據(jù)抓取沒(méi)有問(wèn)題后,我開(kāi)始學(xué)習(xí)Scrapy框架(中間還學(xué)習(xí)了mongodb),一次數(shù)據(jù)爬取可以達(dá)到10W+,寫(xiě)了這篇文章:60小時(shí)Python爬蟲(chóng)學(xué)習(xí):從100行數(shù)據(jù)到10W+數(shù)據(jù),這篇文章也受到某V的關(guān)注,說(shuō)很不錯(cuò)。

手頭的數(shù)據(jù)多了,就想這多數(shù)據(jù)如何處理,于是接觸數(shù)據(jù)分析,剛開(kāi)始數(shù)據(jù)分析時(shí)困難重重,沒(méi)想到我寫(xiě)的爬蟲(chóng)的文章下,就有留言給我推薦書(shū)。開(kāi)始了Python科學(xué)計(jì)算的學(xué)習(xí)。

2、選擇項(xiàng)目,解決問(wèn)題
在Python數(shù)據(jù)統(tǒng)計(jì)和分析上,剛好看到簡(jiǎn)書(shū)上一個(gè)連載榜的統(tǒng)計(jì),順帶幫助解決這個(gè)數(shù)據(jù)抓取和統(tǒng)計(jì)。日常工作中也有一些小的應(yīng)用。

然后圍繞簡(jiǎn)書(shū)的數(shù)據(jù),寫(xiě)了幾篇數(shù)據(jù)分析,也受到了簡(jiǎn)叔關(guān)注和點(diǎn)贊。之后也加了一些與聯(lián)系我想做數(shù)據(jù)分析或想要數(shù)據(jù),或者跟著學(xué)習(xí)的朋友。

3、快速輸出,由此及彼
學(xué)習(xí)是一個(gè)輸入的過(guò)程,而項(xiàng)目和文章是輸出,高質(zhì)量的輸出就是檢查你的學(xué)習(xí)效果的最好方式。Python的整個(gè)內(nèi)容已經(jīng)很清晰。寫(xiě)文章的過(guò)程還了解數(shù)據(jù)可視化,分詞技術(shù)。

最近關(guān)注兒童如何學(xué)習(xí)編程開(kāi)發(fā),《與孩子一起學(xué)編程(Python)》,也想比較一下兒童編程如何教,兒童學(xué)Python與學(xué)scratch有什么不同。
如果你是沒(méi)有計(jì)算機(jī)基礎(chǔ),沒(méi)有編程語(yǔ)言基礎(chǔ),看看這本書(shū),就知道學(xué)習(xí)掌握一種開(kāi)發(fā)語(yǔ)言根本不是問(wèn)題。

Python數(shù)據(jù)分析還要走一個(gè)比較長(zhǎng)的時(shí)間,了解到Python在Web開(kāi)發(fā)中的優(yōu)勢(shì)后我開(kāi)始學(xué)習(xí)Python Web,掌握了Django開(kāi)發(fā)整個(gè)流程,我選擇的是做個(gè)博客。

我的Python學(xué)習(xí)文章:
Python爬蟲(chóng)30篇:Python爬蟲(chóng)學(xué)習(xí)
數(shù)據(jù)分析12篇:Python數(shù)據(jù)分析
PythonWeb開(kāi)發(fā) 3篇:Python Web開(kāi)發(fā)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,023評(píng)論 25 709
  • ANALYSISWEN閱讀 189評(píng)論 0 0
  • git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名> : 將遠(yuǎn)程分支與本地分支合并。git pull ...
    一江碎月閱讀 462評(píng)論 0 0
  • 崽崽: 今天情書(shū)寫(xiě)給你, 在媽媽這月例假的最后一天(應(yīng)該是哦!) 記得你和我說(shuō)過(guò)幾次了,男孩子多好, 不會(huì)有大姨媽...
    liqi_carol閱讀 415評(píng)論 2 1
  • 人潮擁擠,紛繁復(fù)雜,我們用盡全身力氣好好打拼,久而久之我們總會(huì)給一些人貼上一些標(biāo)簽,也會(huì)被他人冠名好多標(biāo)簽,“學(xué)霸...
    王姑娘sunshine閱讀 800評(píng)論 0 6

友情鏈接更多精彩內(nèi)容