“持续学习”是几乎所有大神都会给菜鸟们的建议之一,这个概念也不是最近被提出来的,早在两千多年前古希腊哲学家梭伦就提出“活到老学到老”,这可算最早的“持续学习”。近些年来持续学习在IT领域里又不不断被提及,程序猿们成为持续学习最大的一群实践者,我从没看到过那个其他行业的普通员工要像程序猿一样学习那么多东西(也可能是我少见多怪)。

究其原因,我觉得有这样几点。 

技术涉及面广

有些人在公司承担着很大的责任,可能什么Spark、数据库、网络、linux……都得懂一些,要知道这随便一个方向,都有耗费一个人几个月甚至几年的能力。但幸运的是其实你不用知道太深,够用就好了。但这个“够用”可能是实际工作中够用,但面试中不够用。

轮子多

持续学习——程序猿的军备竞赛_第1张图片
这点貌似在前端领域尤其明显,像前端框架有什么react、angularjs、vue……,每个框架目的都是为了简化前端的开发,但在具体实现上各自不同,而且各自有各自的优势,缺少一个集大成者的框架。了一个原因是计算机行业细分领域比较多,有些领域比较新,缺少一种工具,然后有人就会跳出来开发一个。另外可能会有人觉得这个工具不好,再开发一个,需要经过长期的技术迭代,才会逐渐有个比较成熟的工具和框架。

技术迭代快

计算机行业一直在追热点,10年11年比较时髦的物联网,后来的大数据与云计算,区块链、机器学习,深度学习,AI,AR,然后今年的5G…… 还有很多比较小众的热点。有些确实是炒作出来的热点,啥实质性的东西也没留下,有些确实给整个技术行业带来的变革。但是追上了某个热点,对于程序猿来说就是加薪 加薪……。毫无疑问,这些热点都是技术快速迭代的产物,要想追上这些热点就意味着你得学习。

行业竞争压力大

计算机行业的高压力很多人都有耳闻,996是经常的事,996ICU几个月前还火了一把。但依旧有好多人拼命往计算机行业里挤,而且之前网络统计,计算机专业成为了高考考生的新宠,为什么? 其实就是因为程序猿的工资高啊,之前看数据某国内top10院校毕业生5年后的平均薪资,可以被一个渣本院校刚毕业的程序猿秒掉,就这样,大家当然想做程序猿了。但大批人的涌入,各个公司对程序猿的要求也水涨船高,你不学新东西,如果有一天你被裁,你连其他公司面试都过不了。之前在油管看某个硅谷大佬的视频,几年前leetcode你随便刷100-200题,基本上硅谷哪些公司可以随便选,现在远远不够了。 国内在以宇宙条为代表的公司不懈的努力下,刷leetcode的军备竞赛已经逐渐开始了。

互联网行业,随着大家学习的热情越来越高,线上培训也越来越多。像之前,好多人遇到技术问题都是上网查博客,查官方文档,有想法的人还会在问题解决之后写个博客,方便其他人。现在不行了,好多人都等不到问题发生的时候,都想着在问题发生前学会问题的解决方案。这当然是个好事,未雨绸缪,等到问题真正发生时从容应对,但有些不良商家或者个人借机牟取私利,借机推出一些《为什么程序猿都该懂点xxx》之类的课程,赚取你的血汗钱。要知道报班就像办健身卡一样,你是为了提升自己,但公司只是为了赚钱,如果你报了一次都不去,你这钱不就是打水漂了吗。我敢肯定,肯定有好多人报班和办健身卡一样,报了就没下文了。

抛开那些一开始就放弃的人,那些人肯定很难提升自己。我们来说说那些坚持下来的人。你以为你自己把课程里的内容仔仔细细看一遍,你就会了?too young too simple, some time naive!还差的远呢。就拿最近很火的极客时间为例,我感觉好多课程都是在以一种科普的形式来给你讲述某个东西,当然我不是说这种方式不好,但这种方式有个缺点就是可能会有些浅显。所以意味着你学了也许只是学了表面一些花里胡哨的东西,而内功毫无提升。

当然我不是diss极客时间的课程,其实里面有好多好课,我个人已经买了20多个课程了(如果内容质量差我是不会买这么多的)。说下我的感受,有些课程我学的比较轻松,比如《linux性能优化》《计算机网络》,因为我之前做过两年的运维,好多问题是我曾经实际遇到过的,当时我解决不了别人解决了的,但这个问题曾经我心中盘踞了好久的,这些课程给了我曾经苦苦思索好久的答案。我之所以学的轻松,除了老师讲的好之外,比较重要的一点是我理解这些问题之后的背景,我已经有足够的基础了。

当然我肯定也买一些对我毫无用处的课程,比如《机器学习40讲》《go语言核心36讲》…… 很多都没看,都是一时冲动买下来的。因为目前我也不从事这些领域,虽然感兴趣但没有什么精力去学。但是如果我以后有时间精力还是会回过头来看下这些内容的。发表下我对极客时间课程的感受:你能很轻易看懂的不一定是好课,因为你可能很多都会了。你很难看懂的不一定是坏课,可能你基础不够。但是能启发你思考,给你实践带来指引的,一般都是好课。

再回到“报班”这个话题上,首先大家理性报班,不要被标题软文一忽悠就乖乖掏钱,你得评估自身需求,合理规划自己的时间精力之后再报。另外现在在线培训机构课程众多,内容质量良莠不济,做选择时要擦亮自己的眼睛,选择一些口碑平台比较好的课程。

说了这么多,再来说下持续学习的负面。没错“持续学习”,一个积极向上,非常正能量的词,也是有负面的。很多程序猿都会在业余时间刷下脉脉匿名圈,圈子里除了哪些秀offer、秀收入让人很酸的内容外,还有一些是对面试的吐槽。其中比较有名的有那次关于头条面试手写红黑树的吐槽了,现在已经演变成头条自带红黑树buff的梗了。除此之外,还有很多面试都是问的绝大多数人实际工作中完全不会用到的东西。如果所有的面试都这样,再加上近年来各种裁员、996的的新闻,越来越多的程序猿势必会以面试为导向提升自己,可能会花费大量时间精力学习一些完全无用的技能。“面试造火箭,入职拧螺丝”这一说法也不是空穴来风。
  
为什么越来越多的公司会在面试上来难为应聘者?我简单分析下并谈谈我的看法。

求职者越来越多,其中不乏滥竽充数之人

当竞争越来越激烈的时候,坑就那么多,当然得提升通过的门槛。拿什么来筛,肯定不能用有些人人都能快速学会的东西筛啊,所以好多面试官都会选择用算法题,或者有些框架的细节来面试,这些都是需要大量时间积累大量的练习才能学会的。

喜欢炫技的面试官

首先我觉得这是为人的问题。这种面试官的都是拿自己擅长的冷门知识点去面别人,比人上面说的头条的手写红黑树,我猜测可能就是出自这种人。如果遇到喜欢炫技的面试官,除了自认倒霉外,可以尝试翻转主动权,要让对方绝对你比他牛逼(瞎说的),实在遇到人品不行的,可以反怼回去。

不合格的面试官

有些公司有些团队可能都比较年轻,资历尚浅,不懂的挖掘出候选者背后的潜力。他们常用的面试方式是拿自己会的去面别人,相当于拿自己所在的知识圈去圈候选者的知识圈。人人都有自己的知识盲区,都有自己的擅长点,如果面试官这样面,最后看到的肯定只有交集那部分,很可能会错误估计候选者的能力,错失人才。当然如果面试官的知识圈足够大,这样也没问题,怕就怕面试官自己都能力不够。所以让新人去当面试官,除了对候选人的不尊重外,也可能会得出错误的面试评估。

对候选人不合理的要求

上招聘网站随便找个岗位看下职位要求,我相信他们组内很多人都达不到,这些要求可能就是想让这个岗位显得高大上一些,当然也增加了面试的难度。

如果你想跳槽,你肯定得考虑到上面这些问题。你不可能改变面试官,你能改变的只有自己。面试官不合格,你只能尽可能释放出更多的光辉让他看到。所以努力学习吧,去刷leetcode,去看框架源码,你只要学的比别人多,你肯定能脱颖而出。但是你也别忘记了,别人也在学,所以这就是一场知识的军备竞赛,谁停下来谁死、谁慢谁死、谁低效谁死。

持续学习的人,除了真正想提升自己的,除了面向面试学习的,还有一波面向自我安慰学习的,这些人学习只是为了缓解自己的知识焦虑。我相信大多数人都有一颗上进的心,但很少有人真正有上进的执行力,这些人可能觉得看一篇博客、看一本书就会有提升,以为简单付出就会有收获,所以持续学习成了他们的安慰剂,缓解了他们的知识焦虑。最可恨的是还有好多人靠贩卖知识焦虑来挣钱。

最后,理性看待持续学习,不要随波逐流,不要随意追热点,不要轻易放弃。我刚毕业那会儿,因为技术太差,而且缺乏正确的指引,所以一直啥都想学,当时是做运维,就学linux、python,后来学docker,再后来学java,而且曾经还花时间学过机器学习,没一个学精的,都是略懂皮毛。转开发之后,主力学java,现在也能算是一个合格的java工程师了。学了这么多,最大的体会就是自己的时间精力有限,要学会合理分配利用,还有一点是基础东西才是最优价值的,比如什么正则表达式、gc都在《编译原理》(龙书)里有介绍,感觉编译原理会为你铲除很多技术的学习门槛。