码农如何主动学习?

时间: 2019-11-24阅读: 707标签: 学习

作为码农,工作以来我一直在断断续续思考和实践主动学习这件事,不过效果一直不尽人意,直到最近,我感觉状态有所改善,偶有所得。所以,在这篇文章中,我整理了 我对码农主动学习这件事的感悟以及可能有用的主动学习的方法 ,抛砖引玉,无论你是同意或是不同意,欢迎和我交流,对我意义重大。

郑重声明:本文内容不保证正确性。


为什么要主动学习?

我是一个实用主义者(虽然在写出这句话之前我都不知道我还有个“主义”),我也深信人性贪婪自私且虚伪,嘴上说的“不要妄想不劳而获”其实是心里最想要的东西。

为什么要主动学习?选了码农这个行业, 技术就是我们的吃饭家伙,想要吃得好,而且一直有饭吃,就得有足够的技术 ,怎么能获得足够的技术?学习可以让你获得足够的技术,但为什么要说主动学习呢?因为在日常的工作中也可以学到很多东西,那些当然也很重要,但是很慢,而且大家都可以从工作中学到东西,我怎么保证我学到的比别人多?保证不了,但我想要进步,所以寻求主动学习。

我所谓的主动学习,是指 在工作之外,学习那些在工作中接触过但是没时间深入了解的东西,或者是工作中没机会接触但是感兴趣的东西,或者任何可以让技术获得提升的东西 。比如,我会在  shell 中  echo 一个  Hello World ,但是对  sed 和  awk 不熟,所以一直想系统的学习一下这两个东西的用法,以便在下次需要在  shell 中处理字符串的时候不用薅头发;再比如, docker build 我会敲, kubectl get pods 我也会敲,但对原理是一窍不通,所以也一直想好好了解一下火爆的容器技术到底怎么回事;我还对各种开源项目感兴趣,想了解如何他们是如何运转的,以及如何贡献代码,想知道自己有没有机会掺一脚,也做过一些这方面的尝试。简单的来说,主动学习就是, 花时间、想办法完善或者扩展自己的技术栈。


主动学习的困难

学习难,主动学习更难,码农主动学习尤其难。

我认为码农主动学习的困难是来自两方面的,分别是:

1. 时间、精力和注意力的不足 2. 学习方法的不恰当

第一点无需多说,工作加班多,空闲时间本来就少,好不容易有时间休息,再去啃书啃文档啃代码,确实是很大的挑战。不过, 足够的时间投入是做成任何事的必要条件 ,这一点每个人情况不同,如何面对这个问题不做赘述,而且我主要想分享第二点。

第二点,学习方法的重要性无需多言,但我感觉离开学校之后,我学习很多东西的时候不是方法不对,而是几乎毫无方法可言,我尝试过学习不少东西,比如 MIT 的分布式系统课程 [1] ,比如 Hadoop 的源码,结果怎么样呢?花了很多时间,但几乎啥也没学到,感觉自己笨笨哒,再也不想学习了,那么我是怎么学习的呢?论文和文档好好读了,也做了笔记,代码一行一行的看,用各种工具看,但是最后都半途而废了,为什么呢?

人的劣根性(我想不到更合适的精炼的话了)。

当我说想学习的时候,其实我心里真正的想法是: 我要在尽可能少的时间里做尽可能少的事情达到尽可能好的学习效果,如果不能的话,我就不干了。 这个创意四舍五入一下,就是上面所说的“不劳而获”。

但是没办法,我就是这样恶劣的人,贪婪懒惰是我的一部分。为了顺应我的劣根性,让它不要影响我做事,在花了一些时间思考和尝试之后,对于码农的学习方法,我总结出了一个理论,叫做“庖丁砍牛”(今天起的名字),其实并没有什么新东西,应该都是前人总结过的东西,但我还是我自己的语言再传达一下,见笑。


“庖丁砍牛”理论

我认为码农持续深入的主动学习有两个关键点,一个要,一个不要:

1. 要给自己提供反馈,越快越好 2. 不要按部就班、完完整整的学

这两点中,我认为第一点的反馈和学校里的学习方法是一致的,课堂提问、课后作业、小测验、单元考、期中考、期末考,这些东西的作用就是 提供反馈,让你知道自己每个知识点学的怎么样,哪些学漏了,哪些理解不到位,哪些不熟练,然后根据反馈去重新学习、改正、练习,这样才能提高 ,不然就是没有指南针在大海上划船,一直看不到岸选择跳海是完全可以理解的。举一个不知道恰不恰当的例子,为什么刚学编程的时候,我会喜欢 Python 多于 Java 呢?因为 Python 在交互模式下,可以立马对我的输入返回一个结果,而 Java 要编译了才能运行,他们之间存在严格的好坏吗,不存在吧,但是 劣根性就是让我更喜欢有即时反馈的东西 。

第二点所说的不要按部就班、完完整整的学,是和学校里的学习方法相反的,在学校里,我们参照一本教材,跟着老师一页一页的学,觉得哪页难了就多学一节课,为什么我觉得现在不能再这样学呢?因为环境变了,虽然我想要提高自己的技术,但并没有打算也没有时间把一门技术的所有细节全部吃透,还记得上文提到的“实用主义”吗, 我不需要“全”,我只要“够用”就行 ,而按部就班学习的问题在于战线拉的太长,学习内容多且杂,很难分清主次,最后淹没在各种细节里面,热情被消磨殆尽,然后只好放弃(读 HDFS 代码有感)。所以,我认为码农学习也要 讲究“轻量级”,不要依赖太多上下文,做到来了能学,学了能用。

当然,我并没有在否认基础知识的重要性,相反,我认为在深入学习之前掌握好基础知识是必要的,就像厨师要先学会切菜和和面才可以逐步学习更高深的厨艺,本文讨论的方法的前提是已经具备必要的基础知识,基础知识没有捷径可走。

为什么叫“庖丁砍牛”呢?因为如果技术水平存在客观标准的话,那么最高水平可以比作庖丁解牛,而技术进步的过程就是不断熟悉牛的筋骨纹络的过程,这个熟悉的过程当然可以先对照牛的解剖图进行观察研习,全部掌握后再开始练习杀牛,但上面所说的方法其实是在建议不要在解剖图上花太多时间, 直接拿刀砍牛 ,可以立马感受到刀是怎么劈开肉,斩断骨头的,当然也可以立马感受到“牛血淋头”是什么意思( 有反馈 ),而且,如果觉得解剖整头牛费力的话,可以分部位来,先砍一个月的牛腿,再砍一个月的牛屁股,每砍一个部位就可以熟悉一个部位( 轻量级 ),用不了几个月,牛身上的主要部位就被我砍了个遍,也许还有没砍过的地方,但不要紧,我已经可以把一头牛解剖的很好了,尽管没有达到庖丁解牛的地步,但“够用”了。

在整理文章的时候,我发现这个理论叫“盲人摸象”也可以。


方法论

虽然道理说得啪啪响(谢谢掌声),可是实际中怎么操作呢?其实还是很难,而且为了让文章读起来顺畅有趣,我在上面的段落中加了很多初听起来很有道理但禁不起细琢磨的东西(当然大体内容还是 OK 的)。总之还是很难,我分享两个我正在尝试的方法,分别对应上面理论中的 反馈 和 轻量级 。


公众号写文章

把学到的知识、技能或者遇到的问题和解决方法以公众号(博客)文章的方式分享,这个方法主要是能给我提供反馈,我写一篇文章,别人夸一句“写得好!”,你说如果是你,你会不会想要再写一篇,我会,因为我就是这么的肤浅(而且听说文章读的人多,微信还给你发钱)。

好处:有反馈,通过输出刺激输入,提供反向驱动力(自创词),降低半途而废的可能。

问题:这个方法一方面需要花费很多时间,因为要兼顾技术性和可读性,我都有点遭不住了,另一方面如何组织安排文章的内容,以及匹配文章内容和学习内容也是门学问,还在摸索中。


解决别人的问题

注意,我没有说“帮别人解决问题”,因为我做这件事的目的不是帮助别人,而是为了自己。

解决别人问题的过程是一个绝佳的学习机会,因为 软件或系统中每一个出故障的点都对应了它整体结构中的一个模块(或者是配置、机制等等),将这个故障排除的过程就是学习了解这个模块的过程 ,碰到并解决的故障越多,对这个软件和系统的了解和理解就越深刻,但是我一个人能够碰到的问题有限,所以当别人遇到问题时,其实是一个非常好的学习机会(且不论你也可能在日后遇到相同的问题,而你已经提前准备好了解决方法,到时你肯定会感叹自己的机智)。

好处:问题或故障的解决一般只需要局部、少量的知识,每解决一个问题都会有相应的提高,多次的小进步累积起来会是很大的提升。

问题:这是被动的学习机会,有质量的问题可遇不可求。有时我在想,能不能把认同这种观点的人聚合起来,每个人把自己遇到的问题抛出来,其他人可以在有兴趣、有时间的情况下和遇到问题的人一起解决这个问题,解决之后,能够将这个问题出现的原因、相关的原理整理出来进行分享,这样对于每个人都是一次学习,当然解决问题的人会理解更深刻。咦,怎么听起来有点像 StackOverflow,忽略。

链接:https://www.jianshu.com/p/009b5384946a  

站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6647

关闭

前端越学越越迷茫,如何跳出前端学习的5大误区?

希望通过这篇文章,可以帮助到更多正在学习但是又不知道从哪里学习学习的前端的小伙伴,还有一些想要去转行的,但是不知道不知道如何去学习,以及整个市场的情况,还有一些正在从事前端开发的小伙伴吧

前端为什么要学习vue.js

这几年Vue.js成为前端框架中最火的一个。越来越多的网站前端开始采用Vue.js开发。是开源世界华人的骄傲,其作者是我国尤雨溪。为了给个人开发提供更多的机遇打造出门槛低,成本低,跨设备和多平台的Vue.js.

如何学习前端?前端学习路线总结

随着多屏互动和多端兼容友好的界面变得越来与重要,前端工程师也成为了热门的研发技术岗位之一。随着就业市场大环境的改变,一方面是前端人才的紧缺,另一方面是对前端求职者的要求增高

为什么Web前端变的越来越复杂,变得更加难学了

前端发展了也有些年头了,曾记得很多年前,聊起前端,都觉得是很简单,那个时候都没有前端工程师这个职位。可现在,前端已经逆袭了,已经不是原来的样子了,各种技术层出不穷,显的越来越高深莫测了

20多岁的人做什么,将来不会后悔?

这个标题有点大,起这个标题的时候我自己都有点害怕,事情是这样的,前两天在知乎上写了一个回答叫20多岁的人做什么,将来不会后悔?我正好也是20多岁,就回答了这个问题

高效的学习的几种方式

学习可以说是生活中的一部分,无论是为了升值加薪还是为了扩充自己的知识面,还是无意中的好奇心,我们都会去学习。不过很多时候,学过的东西没多久就忘记了

零基础转行web前端,如何高效的去学习web前端?

web前端开发要学的知识内容涉及的会很宽泛,虽然说主要是HTML、CSS和JavaScript这些基础知识点,但学前端开发除了要学这些基础知识外,学员还要在这之上进行延伸和深入的去学,而且互联网时代不断发展,掌握了这些新技术

自学Web前端的五个不同阶段,从浅入深

学习一门技术,你要知道必须要学习的内容有哪些,哪些是更重要的,从浅入深了解一门技术,扎实的掌握住基础的知识,才能让我们更好的去掌握更精髓的内容。

资深web前端工程师总结出一套正确的学习思路

对于零基础的学员来说:初接触一门技术,想要去了解他,并掌握它,是不是觉得有点无从下手,不知道该学习什么?该先学哪个后学哪个?今天一位资深web前端工程师

前端为什么学node.js?

前端为什么学node.js?下面本篇文章就来给大家具体介绍一下前端为什么学习node.js?希望对大家有所帮助。随着互联网的高速发展以及市场需求推动,Node已经成为前端知识栈必备技能之一,很多企业在招聘中也会着重考察求职者对Node的掌握程度。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!