查看原文
其他

编程的自学方法

2016-08-09 刘欣 码农翻身
很多人通过我的QQ(14703250),微信(liuxinlehan) 问我类似这样的问题:
我已经看了很多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 。 
(完)

你看到的只是冰山一角, 更多精彩文章,尽在“码农翻身” 微信公众号, 回复消息"m"或"目录" 查看更多文章
有心得想和大家分享? 欢迎投稿 ! 我的联系方式:微信:liuxinlehan  QQ: 14703250
公众号:码农翻身“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。

推荐一个叫掘金的开发者社区,很多技术干货,  我的文章也会在这里分享 : 

掘金是一个高质量的技术社区,从 Swift 到 React Native,性能优化到开源类库,让你不错过互联网开发的每一个技术干货。长按图片二维码识别或者各大应用市场搜索「掘金」,技术干货尽在掌握中。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存