首页 > 代码库 > 谈谈学习方法

谈谈学习方法

上一篇文章公众号上有同学给我留言:张哥,我是一名大二学生,我很喜欢 Android,但是我感觉我的逻辑思维有点慢,学习方法也不得巧,所以,问下您有什么建议吗?还是说我不适合学编程,大学计算机专业!

其实不止这位同学,之前很多人给我留言,说因为兴趣,选择了编程,而且自己也很努力,也在持续坚持学习,然而觉得自己没有任何进步,甚至一度怀疑自己不适合编程。还有工作了一两年的同学给我留言,说感觉自己也挺吃苦的,做的项目也挺多,但是总感觉自己一直处于初级水平,没什么进展…

我相信以上绝不是一个人,这些人你能说他们不够努力么?不一定,但是如果你们很努力,而且很有毅力,那么我觉得可能就是学习方法的问题了,所以今天单独写篇文章来谈谈学习方法。

什么样的人适合编程?

在谈学习方法之前最重要的应该是先确保你的方向对不对,因为很多时候如果朝着错的方向,不管你如何努力,方法再怎么正确,可能都是在错的路上越走越远,所以方向很重要。

很多人总怀疑自己不适合编程,所以这个问题我觉得是优先要解决的。确切的说真的不是所有人都适合编程,我认为逻辑思维能力是编程最重要的能力,而通常是理工科的人逻辑思维能力较强,尤其是高中数学、物理还不错的人,这部分人学习编程完全不用担心不适合。相反如果你逻辑思维能力较差,而且对编程又提不起兴趣,一对着电脑就头晕等等,这部分人可能真的选错了方向。

至于自己是不是计算机专业真心没大的区别,如果是计算机专业,只能说你比别人基础好点,上手更快些,但是小学成绩好,不代表以后高中成绩就好。以后能走多远全靠自己的学习能力以及够不够努力。

学习方法

在确保方向是对的,或者差不多没有偏差太大的情况下,自己很努力,而又没有效果可能就是学习方法的问题了。

我一直认为学习是没有捷径的,就有两条:努力,坚持!然而是有一些学习方法可以参考的,适合你的学习方法可以帮你提高学习效率,也便于你更好的坚持下去。

相信大家都有这样一种经历,在上学的时候总有那么一批人,总感觉天天在玩,但是成绩很好,而我就是这么一批人。而总有另一部分人很努力,几乎每天都在看书学习,但是成绩依然很一般,甚至很差,你能说他智商低下么?我不这样认为,我觉得大部分人的智商应该都差不多,不会有根本性的区别,所以归根结底很可能就是学习方法有问题!

  • 培养自己的学习规律

我自己上初、高中的时候成绩很好,但是平时基本不看书,给人的感觉就是天天在玩,但是成绩却又很好,然而我并不是不看书,我只是习惯晚上看书学习而已。偶然间我发现我晚上学习能学的进去,效率较高,所以我就培养了这个习惯,然后把它坚持下去,进而形成了自己的学习规律,一到晚上就会把笔记掏出来消化掉。其实大部分人都是有惰性的,所以很多人喜欢看鸡汤,看完鸡汤后感觉浑身充满干劲,然后努力一阵子,但是没几天之后又回归本质,这种我把它叫做冲动学习,根本不足以持续。

所以之前有人留言说让我多发些鸡汤,鸡汤有用么?确实有用,我自学编程的时候甚至都主动找一些鸡汤来激励自己,但是解决不了坚持的问题。前面我说了学习就两条,努力和坚持,努力相信稍微有点自制力的人都能做到,但是坚持恰是最难的。而培养自己的学习规律本质上就是解决坚持的问题,所以,试着发现适合自己的学习场景,你是习惯早上阅读还是晚上阅读,是习惯在教室学习还是在宿舍学习,是习惯地铁上看书还是公司加班时看书…

总之,找到最适合自己的学习场景,培养成自己的一套学习规律,养成习惯才足以持续下去!

  • 结合实际,寻找适合自己的方法

我们在学习的时候有人看纸质书,有人看电子书,有人看视频,有人看博客,有人看官方文档,有人看源码等等,这些都是学习的不同方法,没有高低贵贱之分。

找到适合自己的学习方法很重要,但是一定要结合自己的实际情况。我觉得很有代表性的一个例子就是,有些大神分享自己的学习经验是看源码、看英文文档过来的,然后有些人就照搬这套学习方法,然而殊不知连编程基础都没有,甚至简单的中文文档都看不懂,就学大神看源码、看英文文档不是在扯淡么。大神的学习方法有用么?当然有用,然而却不适合你。

对于大部分人来说看书是最普遍的学习方法,然而就是因为最普遍,门槛最低,所以大部分人看书自学编程的阶段水平差距没怎么拉开,然而一旦入门,每个人就找到了自己的学习方法,这个时候差距才慢慢开始体现。英文好的,就选择看官方文档,这是最权威的,比任何书籍、博客更有说服力,然而不是所有人都能看得懂的。0 基础的一开始可能看书都有点看不懂,所以有的会结合视频,帮助自己理解,但是一旦水平进阶了,再看视频会觉得很没效率,几分钟看篇文章就弄懂的知识点,看视频要讲半小时。其实就是因为你处于不同的阶段,你知道有属于最适合你自己的学习方法了。

所以,大神分享的学习方法不能一味的去照搬,要对照自己的实际场景,起点高的看英文文档也好,源码也好,起点低的就看书结合视频也好,总之寻找到最适合你自己的方法最重要!

  • 学习的目的

我们做一件事总归是有目的的,比如上学的时候学习就是为了能取得好成绩,考上好大学,以后出任 CEO,迎娶白富美!学习编程一样需要一个目的,没有目的,你就会没有任何动力。

之前有人问过我,说:张哥,你这么努力,到底是为了什么?其实我想说,不好意思,我很俗,我这么努力就是为了赚钱!

是的,我当初选择自学编程的目的就是为了赚钱,因为经历过生活的困苦,我才意识到钱有多么重要。所以我之后自学编程没有其他那么高尚的目的,很简单粗暴,但却很明确,所以我学习起来会比其他人更有动力,一想到以后学成了可以月薪过万,顿时充满了斗志。

所以学习有个目的很重要,你想清楚你是为了什么而学,如果你还没想清楚,那么先别急着学,这跟上学不一样,上学是被迫的,我们不得不上,但是现在你可以有更多选择。现在当然我想,大部分读者学习编程的目的可能都跟我一样俗,就是为了赚钱,如果你不是,恭喜你,你还不够俗!

  • 定个小目标

学习的目的是了挣钱,但是挣钱是个大方向,不够具体,总归有个具体的小目标吧,而且这个目标得是眼前看得到可达成的。

如果当初我给自己定个目标是以后月薪 10w,我想我会很有挫败感,因为不管我怎么努力,怎么付出可能都没法达成。所以我最初给自己定的目标就是月薪 1w,那会每天想着什么时候月薪 1w 就好了。

然而当我真的月薪 1w 的时候,意识到靠自己努力是真的可以实现自己梦想的,更加自信,更加有努力的动力。不过欣喜之外,我又给自己定了下一个目标,就是月薪 1w5,看看市面上月薪 1w5 大概是什么级别的,这个级别的开发大概需要具备什么样的技能,然后去朝着这个方向继续努力。

就这样,我一步步实现自己的小目标,达成之后给自己设定下一个小目标,就是这么简单直接有效!

  • 实践实践再实践

编程是一个实践比理论重要的多得多的职业,可能你看了很多书,很多博客,但是远没有亲自做一个项目来的有效。

相比我那个信息匮乏的时代,现在可谓是信息爆炸的时代,每天大量的技术文章可以看,信息的消化就变得很重要。之前很多人问我,说希望我多更新些技术文章,最好每天一更,我时间与精力跟不上是一个原因,退一步说即使我有大量的时间与精力去每天更新技术文章,对你来说你真的消化了么?对于技术文章来说,看过跟消化掉是完全两个概念。

你每天看的技术文章是没有目的性的,刚好看到了就看到了,要么就收藏了。但是远没有多大价值,下次碰到同样的问题你一样不知道怎么解决,而如果你是在项目中用到的,或者说遇到问题了,比如项目中需要用到自定义 View,这个时候因为项目的需要,再去搜索引擎中寻找答案,然后去学习、研究、实践,这才是最佳的消化信息的方式。

而我认为在找到工作之前的实践一般分以下三个阶段:

1.对着书本或者视频敲代码的阶段:这个是学习编程的最初阶段,哪怕完全按照出本敲一遍,也比你只是看有效的多,只有亲自敲代码你才能加深印象,方便你更深刻的理解;

2.模仿:当你有一定的基础知识的时候,但是缺乏实践经验的时候,其实这个时候最迷茫了,自己会点基础,但是自己写项目根本不知道无从下手,这个阶段我推荐你们从模仿着手。网上一堆 demo,就从这些 demo 入手,结合代码,自己理解,边理解边对着 demo 敲代码,直到你可以不看代码可以自己敲出来为止。也许是从一个小动效,再到一个半成品的 demo,再到一个完整项目的模仿,在模仿的过程中你会逐渐的进步,进而对一个真实的项目有所了解。这么说,我认为模仿是项目经验的启蒙!

3.练手项目:当你跨过模仿阶段的时候,这个时候要想着自己单独做个项目练手,也许是模仿的别人的项目,但是是完全自己从 0 开始搭建,不再需要依赖已有代码就可以折腾出属于自己的项目,在这个阶段会遇到各种问题,相信我,即使之前你掌握的技能,在这个阶段依然会遇到问题。但是一旦经历过这个阶段,会进步很大!

一般来说经历过以上阶段之后就可以考虑找实习或者找正式工作了,在工作中不同的人进步速度又会有所不同,有的人在工作中持续学习,总结经验,积极争取新的机会,有的人安于现状,得过且过,把自己眼前的事做完就行了。这本身是两种态度,工作之中把自己事情做好了就觉得 ok 了没有任何错,但是如果你只把自己当成一个打工的,那么你可能永远都是个打工的!

最后,很多人总觉得自己进步很慢,学习效率奇低,这个是正常的,大部分人都跟你一样,包括我自己,经历过跟你们一样的阶段,套用意见游戏里常说的话:当你遇到敌人的时候,就说明你路走对了。你需要做的就是确保在正确的道路上,找到适合自己的学习方法,按照自己的节奏,持续不断的努力,坚持下去就足够了!

本文原创发布于微信公众号 AndroidDeveloper,id:googdev,转载请务必注明出处!

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    谈谈学习方法