编程的自学方法
我已经看了很多Java的书,也看了很多视频,可总觉得心里没底,觉得还是什么也不会,好像有很多东西看过都忘了, 接下来该干嘛? 迷茫了!
我的回答无外乎是要多编程,多实践,做个小项目巩固学过的知识。
不知道提问者是否满意,反正我自己对这个回答也不满意, 这促使我思考关于学习方法的问题,写了篇文章分享给大家,欢迎讨论, 好的想法有奖励啊(参见文末)
方法一: 看书,看视频,偶尔照着例子敲点小程序
策略: 先把那些Java 知识点统统都看一遍,集合,IO, 反射,线程,html , javascript ,servlet, jsp ,xml ,tomcat ,spring,hibernate,对哪个例子有好感的话,在自己的电脑上敲一遍
估计很多人都是这么自学的, 这种方法的缺点是:
(1) 一叶障目,不见泰山, 容易陷入细节
做码农需要和无穷无尽的细节打交道,例如:html那么多tag,属性 , xml dtd ,schema 复杂的语法, httprequest 那么多方法, 看着看着就烦了, 到底哪些是常用的? 哪些是不常用的?
自学者迷失在了细节当中, 产生了怀疑。
(2) 记不住
实践(编程)太少, 当然容易忘记了。
(3) 挫败感
就算很有定力,很有自制力,以及在未来拿高薪水的想象中, 利用断断续续的业余时间咬着牙终于把这些细节都看完了, 然后悲催的发现:
卧槽,还是写不出一个可以运行的像样的东西!
最终结果是: 我看完了,很多细节也忘了, 还是不知道怎么回事,还是蒙圈。
这种方法试图把所有的细节都搞定以后,再去做系统, 对自学来讲其实并不友好。
方法二: 实用主义, 拿项目作为牵引来学习
策略: 拿项目作为驱动, 开始是不追求面面俱到, 而是追求一个可以运行的东西, 单点突破,以点带面, 最终掌握所有知识点。
如果你懂得敏捷开发, 就会明白这和敏捷软件开发的本质思想是何其像啊。
这种方法的好处是:
(1) 成就感
一开始就搞可以运行的系统, 慢慢的增加功能
(2) 在实践中学习
学习金字塔, 在之前的文章中已经提到过,这里再强调一下: 通过实践来学习是非常有效的。
(3) 抓大放小
先学会最关键的,最实用的东西,先学会并且能实践一个关键知识点,然后再把周边的知识学会
(4) 思考才是进步的本质 !
实现系统过程中遇到了问题, 会逼着你思考,去动手解决问题
这种方法的缺点也很明显:
(1) 遇到问题容易卡壳, 需要有高手/师傅点拨一下
对于那些比较难的问题, 自己思考、尝试了很久以后,被点拨一下,恍然大悟,拨云见日的感觉非常的爽。
(2) 要求动手能力和主动思考的能力
伸手党是不行的。
(3) 要有项目
终于说到重点了, 这不是废话吗 ?
但是找个项目应该并不难,你完全可以想一个小项目来做啊,比如说我最近碰到的一个小需求:
1. 普通用户可以注册,登录,最好和QQ账号关联
2. 老师(暂定只有一个)可以创建班级
3. 普通用户可以加入班级
4. 老师能够按月发布作业, 作业有标题和内容
5. 加入班级的用户提交作业
6. 老师可以查看作业,查看哪些人提交了作业,哪些没有提交
找一个身边的问题,把它简化, 实现出来,是很有效的。
学习编程本质上是个迭代的过程,不可能一下子把所有的问题搞定,用项目做驱动来学习符合这个观点。
还有哪些自学的方法, 欢迎讨论!
分享一下你的自学方法吧,对于好的建议和想法, 我会把这篇文章的打赏作为奖赏送给Ta 。
(完)