美文网首页自我成长之路程序员
怎样高效地学习编程?

怎样高效地学习编程?

作者: readyou | 来源:发表于2018-04-27 15:12 被阅读23次

一、目标驱动

flask实践系列的第一篇文章工程初始化一文里,我并没有说明为什么要安装那些软件以及相关的依赖,这是因为我之前自学的时候容易掉入一个坑:我很想按我们线上标准做一个网站上线,然后发现需要用到很多技术,每涉及一种技术,又去了解它背后的原理,以及它的一些依赖知识,再去挖掘同类产品,再去对比选择,挨个试一遍,就此步入苦海无涯的处境,迷失在知识的海洋里丢失了最初的方向。

所以在实践系列,我们的第一目标是用flask + vue开发出一个可用的小网站上线使用,探索期间会了解到linux、mysql、redis、sqlalchemy、ansible、docker等等各种东西,但我们只关注跟我们目标相关的。

给自己的教诲:做任何事前,先确定目标,并把目标放在最显眼的地方,加上时间期限。

二、要适当地不求甚解,而不是刨根究底

拿开发一个网站举例:

首先,一个网站的整体架构,是一个公司的技术团队经过数年时间的迭代与进化,不断地积累得来的,一个人不可能在短期内积累这么多知识。这里要注意哦,技术团队里面的人,往往在最初就已经是这些领域的资深人士,所以这个积累还应该包括他们之前的学习与经历。为什么公司花高价招一个技术专家?其中很重要的一个原因是买他们的经验、买他们的积累嘛。所以不要妄想你可以以一顶百、可以全盘消化整个公司比较完美的线上方案。

其次,一个网站往往至少包括:开发(前端、后端)、测试、运维三个大工种,数十种小岗位,不同岗位的人术业有专攻。所以在多年的迭代过程中,还包括了他们根据经验做的一些舍。而一个人的经历是有限的,如果你想要把这些都学透了,知道怎么取和怎么舍,再来开发你的网站,黄花菜都凉了,到头来还是啥都不会(因为你学到的东西,在对应的领域已经过时了,一个人几乎不可能在所有的领域都能跟上时代前沿)。

所以如果有教程(网上教程或官网示例)教我5分钟把一个东西用起来,就第一时间用起来,先不要太过深究细节。

给自己的教诲:在实现目标的过程中,要从外界找工具,而不是找解剖对象。

三、动手做一个可用的产品,把它当作考试

精益创业这些年越来越受创业公司青睐,精益创业主张快速上线快速迭代,践行MVP原则(最小可用原则)。我这里也跨学科地借用一下精益创业的理念,将它应用到我们的学习当中,叫精益学习。

精益学习,追求快速做一个可用的产品,不追求面面俱到,用我们学习到的东西,使之可用即可。因为我们只是学习技术,这个产品不需要很有创意,可以是老掉牙的博客或其他你在市面上能看到的任何东西。

很多人(包括我自己)毕业之后也在不断地学习,但总觉得不能像学生时代一样,在短期内学会多门知识。我后来思考为什么会这样呢,想到的原因有两个,第一是工作占用大量的时间,学习时间变少;第二是没有课后习题与考试。

其实学校里面的学习方式是非常高效的——学习一个知识点后做作业加以巩固,再阶段性地通过考试加强对整体知识的记忆与应用。为什么在学校要以这样的方式学习,总是有它的道理的。

给自己的教训:学习一项新技能的过程中,给自己考个试——做一个可用的产品。

四、先最小可用,再逐步完善

目标太大,往往被吓倒,导致还没开始就放弃了。

比如我要做一个在线笔记本,过程可能应该是这样的:

  1. 能录入与编辑:编辑其实就是查看,所以就起到笔记的作用了
  2. 只读查看:对外展示的话,直接显示一个编辑框显然不太合适,所以再增加查看页面。
  3. 现在markdown很流行,也确实很方便,所以我们可以加入对markdown的支持
  4. 随着笔记越来越多,我们需要分组的功能
  5. 笔记进一步增多,我们需要搜索的功能
  6. ... ...

五、阶段性的总结与重复

我们有了前面的目标驱动,不会一根筋地扎到无尽的知识深渊里无法自拔。但如果只是一味地走马观花,知识积累程度太浅,对个人的长期发展不利。

所以我们要学会取舍,学会专注。不要什么都做,在做完一个东西之后,可以总结一下:

  • 期间遇到了哪些问题?这些问题怎么解决的?有没有更好的解决方案?能给我带来什么哪些经验?
  • 如果再来一次,哪些东西是可以舍弃的(或者少花点时间与心思)?
  • 如果再来一次,哪些东西是可以抽象出来共用的?

然后,再来一次吧。

六、阶段性的探索

有了阶段性的总结与重复后,我们已经熟练掌握了某项技术的使用,这时候我们就可以更深入地去探索它的实现原理了。

  • 这项技术底层原理是什么?该原理有没有其他的应用?
  • 它产生的理由是什么?解决了什么问题?它出现之前,市场上是怎样解决那问题的?
  • 当前市面上有没有其他类似的产品?彼此之间有什么差异?

这个探索阶段,我们可能会顺便把其他领域的知识也学会了。也能将这项新技术诞生的思路应用到我们以后的开发工作中。

到此,一次学习螺旋完成。我们已经能从更高层次看待上一个螺旋的自己,以及期间的进步。然后再整理心情出发,开始下一个螺旋吧。

七、保持与外界的联系

大家都知道闭门造车是不可行的。其实呀,闭门造车,不只是说从无到有自己一个人琢磨,还包括对某个领域有一些了解,但脱离与世界的交流而埋头去做研究或工作。

比如很多人会钻牛角尖说:能用就行嘛,以前java6时代,不照样可以搞定所有的事情嘛,java6我已经使用10多年了,用得比较熟练,没必要追求花哨去学习java7、8、9、10嘛。对于有这样想法的人,我不打算说啥,庆幸自己不是这样的人。

外界新鲜事物不是凭空出现的,有一天突然某个东西进入你的视线,并不表示它刚诞生,它往往已经经历过多次迭代,接受过市场的检验,并且正慢慢兴起。我们为什么不去尝试一下呢?虽然你用牛能耕地,但换上机器能更高效,让你不那么累,为什么不用呢?

八、不要独自学习

我们接受过前人的教诲:不要单打独斗,要注重团队合作。工作上如此,学习上也应如此。

所以不要独自学习,组织或加入一个团队,一起完成一件作品吧。

如果我是学生,我将找一份实习,而不是一味呆在图书馆

为什么呢?因为公司与市场最近,最知道哪些东西是实用的。想想我毕业之前学习java,在图书馆里面找书看,找了一堆讲述怎样用jdbc跟数据库打交道,随便写一个表的增删改查都得折腾大半天,没入门就放弃了,最终啥都没做出来。现在想想,我天啦,这世界还有哪个公司会直接写jdbc的,这样的公司不死才怪。那公司都不用,你学那些东西又有多大的价值呢?

过了一段时间整理好心情重新再来,又往前走了一点,接触了SSH。随便一本书都是500页以上的大块头,对于我那样的新手,简直是天书,直接给跪了。费了大把的时间,也没学会个啥。现在想想,还学什么SSH,现在都用spring + mybatis。。。唉,最后毕业了,也没有学会个啥。。。

在公司实习,公司不会给你大量的时间学习乱七八糟的东西,基本是直接找人带你干活,干活的过程中再充电,学习的都是当前需要的东西。并且,你有机会接触到一个完整的项目代码,这些东西书上是没有的。书上很难有一套完整可用的优秀代码,基本都是各种级别的hello world,很少有能直接上生产环境的。

相关文章

  • 怎样高效地学习编程?

    一、目标驱动 在flask实践系列的第一篇文章工程初始化一文里,我并没有说明为什么要安装那些软件以及相关的依赖,这...

  • 小白轻松地入门编程书《编程小白的第一本Python入门书》(好书

    为了能让更多的编程小白轻松地入门编程,把高效学习法结合 Python 中的核心知识,写成了这本书。随意翻上几页,你...

  • 脱不花·怎样成为高效学习的人

    课程:脱不花·怎样成为高效学习的人 APP:得到 制图:Bella Zhang #脱不花·怎样成为高效学习的人 0...

  • 高效学习编程

    学习框架 快速浏览框架快速学习基础知识,构建一个框架,对其有个基本的印象,了解基本元素。这就如读书中先快速浏览一本...

  • Python安装及开发环境配置

    Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。Py...

  • 怎样高效学习

    任务驱动,限时聚焦。 必要知识,做出成果。 拆解要素,刻意练习。 以教为学,即时反馈。

  • 怎样高效学习

    最近在得到上听了许岑有关《高效学习》的一个课程,课程内容质量还是很高的,有不少干货,所以分享一下。 高效学习的核心...

  • 怎样高效学习

    学习分为五个阶段: 1.获取 对知识的阅读,输入,以及储存 2.理解 了解知识的定义,来处,公式的含义,通俗来讲就...

  • 怎样高效学习?

    对于成年人来说,应该放弃兴趣驱动学习,采用任务是驱动学习。 成年人的时间已经被工作和生活打破,都是碎片化学习,也许...

  • 怎样高效学习

    通过听讲学习可以记住5% (如大学课程) 通过阅读学习可以记住10% (如阅读书籍、文章)通过视听软件学习可以记住...

网友评论

    本文标题:怎样高效地学习编程?

    本文链接:https://www.haomeiwen.com/subject/kmiblftx.html