scribble

吕小荣

Blog Friends RSS About

系统学习 Vs 边做边学

13 July, 2013

今天朋友在知乎邀我回答一个问题:哪种学习编程方式更好,系统学习还是边做边学?

认认真真花了1个小时回答问题后,忽然灵光一现,这周的博文有着落了。

我是学医出身,投身医学互联网。由于没有编程基础,我在学习编程的过程中遇到坑真他妈的多。

两年多的时间里,每天都花两个小时coding。一开始我和楼主想法一样,闭关修行,把一门语言学好,然后就武功盖世,天下无敌了。

理想很丰满,现实很骨感。

第1个坑:这么多编程语言,该学什么好?

我们公司的技术框架是这样的:

  1. 商业项目用PHP。开发速度快,入行门槛低,程序员满大街都是,招人方便。
  2. 自有项目用Java。稳定,性能好。
  3. 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 边做边学?

不明白为什么楼主会将两种学习方法对立起来。我认为边做边学其是就是系统的学习。

  1. 你在解决需求的过程中,脑海中没有浮现涉及的知识点吗?
  2. 你在解决需求的过程中,没有尝试更优雅的实现方式?
  3. 你在解决需求的过程中,没有尝试过BDD?
  4. 你在解决需求的过程中,没有尝试将复杂的逻辑封装至包?

当你边学边做,解决一个个需求时,就是在不断突破,系统的学习啊。

一个不懂编程的菜鸟,如何高效的学习编程?

  1. 有个好伙伴

    作为一个菜鸟,有太多这种情况:苦思冥想一晚上得不到结果,第二天经高人指点,豁然开朗。

    假如你身边有高人,一定要好好利用这宝贵的资源。

  2. 合理设定学习目标

    如果目标设计的过于宏大,往往实现不了。时间久了,把兴趣也抹杀了。倒不如每周给自己几个学习任务,完成后自我奖励。

    假以时日,必定能取得很大的进步。

  3. 执行

    没有时间的投入,以上方法都是扯淡。

学习资料推荐

国外有很成熟的编程网站,知识点安排合理,学习循序渐进,视频讲解生动。如果你的英文还不错,可尝试通过CodeSchool学编程,这个网站的教学内容涵盖Ruby,iOS,R,Javascript。

每个月收费25美金,要想成为高富帅,这点血本是必须的。

CodeSchool的有些课程是免费的,体验一下

TeaHour是程序员创办的Podcast,里面有一期介绍菜鸟如何学习编程,你可以听一下。

learning ruby and rails