系统学习 Vs 边做边学
今天朋友在知乎邀我回答一个问题:哪种学习编程方式更好,系统学习还是边做边学?
认认真真花了1个小时回答问题后,忽然灵光一现,这周的博文有着落了。
我是学医出身,投身医学互联网。由于没有编程基础,我在学习编程的过程中遇到坑真他妈的多。
两年多的时间里,每天都花两个小时coding。一开始我和楼主想法一样,闭关修行,把一门语言学好,然后就武功盖世,天下无敌了。
理想很丰满,现实很骨感。
第1个坑:这么多编程语言,该学什么好?
我们公司的技术框架是这样的:
- 商业项目用PHP。开发速度快,入行门槛低,程序员满大街都是,招人方便。
- 自有项目用Java。稳定,性能好。
- iOS,Android没的选择,用OC 和 Java。
因为我的好友Sam是PHP黑、Java黑,并极力的向我推荐Ruby,我就鬼使神差的选择了Ruby。回首往事,这其是不是一个明智的选择。
身边没有Ruby伙伴,没有沟通交流的机会,学习变得十分吃力。
我建议你在选择语言时,一定要考虑一个因素:你的身边是否有一起学习的伙伴。
第2个坑:资料太多,无从下手?
我开始学习Ruby时,购买了很多书籍,下载了巨多文档。
可以用「毫无章法」来形容当时的场景,为了学习E这个知识点,要补充学习A、B、C、D三个知识点。进度十分缓慢。学了1年,仅仅搭建了一个blog。
后来和一个大牛 @叶玎玎 聊天时,他说:「吕小荣,你还没有搞懂Rails的mvc框架时,却在浪费时间学习coffee script、twitter bootstrap」
太多的人还没有学会走路时,就急于奔跑。但基础知识是逃不掉的,总要在以后花费更多的时间学习。
第3个坑:系统的学习 or 边做边学?
不明白为什么楼主会将两种学习方法对立起来。我认为边做边学其是就是系统的学习。
- 你在解决需求的过程中,脑海中没有浮现涉及的知识点吗?
- 你在解决需求的过程中,没有尝试更优雅的实现方式?
- 你在解决需求的过程中,没有尝试过BDD?
- 你在解决需求的过程中,没有尝试将复杂的逻辑封装至包?
当你边学边做,解决一个个需求时,就是在不断突破,系统的学习啊。
一个不懂编程的菜鸟,如何高效的学习编程?
-
有个好伙伴
作为一个菜鸟,有太多这种情况:苦思冥想一晚上得不到结果,第二天经高人指点,豁然开朗。
假如你身边有高人,一定要好好利用这宝贵的资源。
-
合理设定学习目标
如果目标设计的过于宏大,往往实现不了。时间久了,把兴趣也抹杀了。倒不如每周给自己几个学习任务,完成后自我奖励。
假以时日,必定能取得很大的进步。
-
执行
没有时间的投入,以上方法都是扯淡。
学习资料推荐
国外有很成熟的编程网站,知识点安排合理,学习循序渐进,视频讲解生动。如果你的英文还不错,可尝试通过CodeSchool学编程,这个网站的教学内容涵盖Ruby,iOS,R,Javascript。
每个月收费25美金,要想成为高富帅,这点血本是必须的。
CodeSchool的有些课程是免费的,体验一下
TeaHour是程序员创办的Podcast,里面有一期介绍菜鸟如何学习编程,你可以听一下。