作者:陈宇明
================================================================
-
前言
-
应该关注哪些技术?
-
应该如何学习?
-
怎么样更容易坚持?
-
为何分享?
-
总结
==============================================================
前段时间听到很多身边的朋友说自己所在的公司开始降薪了,甚至还有些发不出工资了。一天投了几十家,可是连面试都没有一个。在校的准程序员们学习什么比较合适?现在大环境不景气,我该怎么办?
=====================================================================
这些问题,每天都会有人在群里议论,也会有人经常在群里求工作职位坑。那么我的看法是不要纠结学什么,先学了再说,与其抓住变量(新的技术手段)还不如好好学习,我特别喜欢《暗时间》的一段重视知识的本质:对于程序员来说这一点尤其重要,程序员行业的知识芜杂海量,而且总是在增长变化。很多人感叹跟不上新技术。应对这个问题的办法只能是:抓住不变量。
底层知识永远都不过时。算法数据结构永远都不过时。基本的程序设计理论永远都不过时。良好的编码习惯永远都不过时。分析问题和解决问题的能力永远都不过时。强大的学习能力和旺盛的求知欲永远都不过时。你大脑的思维方式永远都不过时。
这里引用我比较喜欢的一句话:很多时候,看似最枯燥、最基础的东西往往具有最长久的生命力
我在刚入行时,一直在追逐最新最热的技术,几年过去了,才发现在,新的知识永远在增长,感觉自己很无力,有一天无意间在网上看到Google的面试问题类型,我惊讶的是在面试题中没有最新的技术,甚至不是在某一种语言下的知识,而是通用的知识,算法数据结构,设计理论,编码规范,那时我懂了,想起刚出来的时候去一些公司面试被问到算法,一脸懵逼,并且还理直气壮和面试官说“开发用到算法的地方不多呀,记不住也很正常。”,现在回想起来当初的想法真是给自己找借口,因为算法本身比调用API要难,你连难的东西都学好了,还学不会简单的API调用吗?本质上面试官是想看看你的学习能力和逻辑能力。
如果学好底层不变量,哪怕是你不做Android了,现在的大数据,云计算, AI 学习起来都是事半功倍,不然你以为你没有基础就能学好大数据,云计算,AI?
我们不要拘泥于某一门语言而是要先修炼好内功,你在这门语言的造诣是否高深,最终还是由你的内功深厚程度来决定的。
===================================================================
我们知道该学习什么了,那么如何学习?
在这个信息爆炸时代,我们每天阅读大量的信息(微信公众号、微博、简书、今日头条、微信读书、得到 …),阅读过后总感觉自己学习到了很多新知识,但是一周过后我们能说出来的收获又有多少呢?
这不禁让我想起塞内加的《论生命之短暂》中的一句话“如果一个人出海遇到狂风暴雨,被变换肆虐的风吹得团团转,你可能会觉得他航行了很远。其实航行得并不远,只是浮沉动荡的时间长而已。”,没错如今的知识就像出海时遇到的狂风暴雨,我们只是被吹的原地团团转而已,并没有在知识的海洋航行很远。
互联网的强大足以让我们查找到我们想要学习的资料,但是太多垃圾信息也掺杂在其中,如:大数据、AI广告,错误的资料,恶意的评论,吸引注意力的热点信息,这些东西无疑是对我们有百害而无一利的,那么如何避免出现这些信息呢?看本书吧,成体系,由浅入深,循序渐进,没有我刚才所说的垃圾信息,只需要支持几十元的书籍费用,让你的学习事半功倍。甚至网络上的有些电子书资源,还不需要你付费。
现在网上的视频也很多,牛人的收费课程也不少, 要不要去参与?
应该以通过阅读书籍为主。市面上的视频和收费小课程,大多是内容都是来自书籍中的,太阳底下无新事。
以终为始先定一个目标,比如学完后写一篇教程,然后去学习,这样更加有动力,有意思的刻意练习,更为有效。知识经过整理,才更容易理解,容易理解的知识才更容易记忆。 你想想所谓的高手是不是本质上就是在遇到对应问题场景的时候,能够快速调起自己的脑海中的解决方案,并且成功的解决掉这个问题。
管理学中有个很不错的模型,它非常适合用于学习,PDCA。
PDCA循环又叫质量环,是管理学中的一个通用模型,最早由休哈特于1930年构想,后来被美国质量管理专家戴明博士在1950年再度挖掘出来,并加以广泛宣传和运用于持续改善产品质量的过程。
PDCA是英语单词Plan(计划)、Do(执行)、Check(检查)和Adjust(纠正)
P (plan) 计划,包括方针和目标的确定,以及活动规划的制定。
D (Do) 执行,根据已知的信息,设计具体的方法、方案和计划布局;再根据设计和布局,进行具体运作,实现计划中的内容。
C (check) 检查,总结执行计划的结果,分清哪些对了,哪些错了,明确效果,找出问题。
A (Adjust)纠正,对总结检查的结果进行处理,对成功的经验加以肯定,并予以标准化;对于失败的教训也要总结,引起重视。对于没有解决的问题,应提交给下一个PDCA循环中去解决。
以上四个过程不是运行一次就结束,而是周而复始的进行。
总结:前期准备、中期执行、后期回顾
如何应用呢?
假设要学习设计模式。
-
step1 计划:明确目标,分别把常用的23种设计模式列出来,一周学习一种。
-
step2 执行:按照计划学习,学习完成之后写一篇自己对设计模式的理解。
-
step3 检查:写完之后,请朋友阅读,自己和别人的文章对比进行多维度的比较。
-
step4 纠正:现在大家都喜欢看写的有趣的,可以改改自己的写作风格迎合大众的喜好。这个类图画的不错,以后每篇都要画类图。
有人肯定会说了,我也知道学习很重要,但是我就是坚持不下来。
没错,我们人性天生懒惰,大部分的人都是半途而废的专家,其实很多时候,不是我们比别人笨,而是别人比我们更坚持。高德纳先生曾经说过“过早退出是一切失败的根源。兴趣遍地都是,专注和持之以恒才是真正稀缺的。”,可见坚持的重要性那么接下来我们就来说说如何更容易坚持。
=====================================================================
《暗时间》中提到过这样的一个方法给自己设立一个进度条
如果你把任务分割了,你就有了进度条,你就知道,事情在不断的进展,你总会完成任务或到达你的目标,你会有一个时间估计。反之如果没有这个分割,整个的任务或目标对你来说就只有两种状态——“完成”和“未完成”,如果不幸是一个比较漫长的目标,那么你会发现你的进度条总是“未完成”,一次又一次的等待未果会耗尽你的耐心,让你下意识的产生“这事什么时候才能完呢?”的疑惑,没有分而治之,你就不知道未来还需要付出多少努力才能达到目的,这就会让你心生怯意,不敢进一步投入时间,免得血本无归。在这样的心理下,不少人就会选择保守策略——退出,以免到头来花了时间还一事无成。
最后
本文在开源项目GitHub中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
目前已经更新的部分资料,需要的自己取: