- 回答一些正在自学编程的童鞋跟我提的问题:
- 自学编程时学的东西忘得快,做什么项目最有效?
- 怎样判断一个项目最适合自己学习练习?
- 如做设计一个项目自己在学习中练习?
一、不同的阶段,不同的练习
我把IT编程类的学习,一般分为以下几个阶段:(以下为递进关系)
- 程序逻辑阶段
练习基本都是解答数学题,如万年历,斐波那契数列,完全数,鸡兔同笼问题。要求掌握循环、嵌套循环,二维数组熟练应用。 - 面向对象阶段
思维要从面向过程向面向对象,面向接口转变。没有一定代码量的基础,转不过,把面向过程的方法调用,参数传递,方法如何定义设计弄清楚,再转到类的设计,消息传递上。
这个时候的练习走向综合性。没有一定代码量的积累是很难到OOAD(面向对象的设计与分析)的。 - 某个开发语言类库,API
Java如io, lang, util, text, sql包下类的应用
此时多做一些针对性的,如io, jdbc的 - 与这个核心语言相关联的其他必要知识点
如web开发语言,都会涉及到 html, css, js(jq), db
手机端开发相对单一,也会有sqlite, 简单html, h5
这部分甚至可以单独项目练习,最好是结合最后的项目(下面有推荐)。 - 框架阶段
分为基本和扩展框架
比如Java,先掌握jsp, servlet,然后是Struts2, SpringMVC,MyBatis等轻量级框架
这时的项目,以大的综合性为主,基本上就是你想到的最终项目。
二、锁定一个最终的项目作为目标,Step by Step
典型练手项目如:Web学习项目三件套:BBS(论坛),商城,CRM,适合Java, PHP, ASP.NET的学习。
客户端典型练习项目:MIS(信息管理系统), 小工具类(记事本,播放器),适合Android , iOS , C语言基础的学习。
这样的项目一定要完全模仿网上现成产品的功能来实现,要“高仿”,甚至前台页面的样式代码可以直接从网上扒下来。
MVP原则(最小化可行产品)
1、用学的东西做出最小化产品来
不同的学习阶段,可以做出不同的练习、项目。但是不能照着书本,视频,一行一行敲过,运行完了,就OK了。
而是要做扩展,在这个基础,想想还能不能添加其他的功能。要有产品意识,而不是Demo或练习的思维。
2、用掌握的最少知识做出一个产品来,再逐步扩展。
如想做一个Web项目,你需要掌握html,css,js(jq), database, Java(或php, python, .net),这些知识点,你一个个自学下来,太零碎,如果没有项目驱动,用最小化项来实现,整个学习效果都不好。
所以要分清核心,在关键知识点掌握基础上就做项目来提高,如jsp,servlet, jdbc 加简单html ,少量js,即可实现一个完整web项目功能。
在这个基础上,向后端扩展,就是掌握轻量级框架,向前端扩展就是掌握html, js, jquery, bootstrap
3、尝试用编程开发来提高你工作中的效率
把你工作中的痛点(低效率),从项目的角度来思考,搞一个项目去提升工作效率,解决痛点问题。
以学习Python为例,我做了哪些项目,是如何快速提高并应用的?这些项目是自己设计并实现的。
1、确定体系,确定方向
刚开始我了解了一下Python能做哪些:爬虫、Web开发、科学计算,游戏、图形开发... ... 太广啦,我需要找一个学习的切入点,即先学什么内容,用Python去做什么?
选择爬虫作为我Python学习的开始。方向确定后,简单了解语法,找了几段代码边看边改,熟悉Python爬虫,一开始是从网上爬图片,然后是页面解析 xpath , beautifulsup , 写了这篇文章:当我们学Python时,我们学什么?。上周一个Python的公众号跟我联系要求转发。
基本的数据抓取没有问题后,我开始学习Scrapy框架(中间还学习了mongodb),一次数据爬取可以达到10W+,写了这篇文章:60小时Python爬虫学习:从100行数据到10W+数据,这篇文章也受到某V的关注,说很不错。
手头的数据多了,就想这多数据如何处理,于是接触数据分析,刚开始数据分析时困难重重,没想到我写的爬虫的文章下,就有留言给我推荐书。开始了Python科学计算的学习。
2、选择项目,解决问题
在Python数据统计和分析上,刚好看到简书上一个连载榜的统计,顺带帮助解决这个数据抓取和统计。日常工作中也有一些小的应用。
然后围绕简书的数据,写了几篇数据分析,也受到了简叔关注和点赞。之后也加了一些与联系我想做数据分析或想要数据,或者跟着学习的朋友。
3、快速输出,由此及彼
学习是一个输入的过程,而项目和文章是输出,高质量的输出就是检查你的学习效果的最好方式。Python的整个内容已经很清晰。写文章的过程还了解数据可视化,分词技术。
最近关注儿童如何学习编程开发,《与孩子一起学编程(Python)》,也想比较一下儿童编程如何教,儿童学Python与学scratch有什么不同。
如果你是没有计算机基础,没有编程语言基础,看看这本书,就知道学习掌握一种开发语言根本不是问题。
Python数据分析还要走一个比较长的时间,了解到Python在Web开发中的优势后我开始学习Python Web,掌握了Django开发整个流程,我选择的是做个博客。
我的Python学习文章:
Python爬虫30篇:Python爬虫学习
数据分析12篇:Python数据分析
PythonWeb开发 3篇:Python Web开发