当"猝死"、"跳楼"、"34 岁"、"被离职"这些关键词扎堆而起时,"中年危机"这个名词与程序员似乎自带关联了。这个世界究竟是对中年人不够友好,还是对不优秀的人不友好?亦或是对不优秀还不努力的人不友好? 相对于传统行业技术变化没有那么快,往往学一次用终身,比如司机只需要学会驾驶技术,就可以用终身,因为汽车驾驶技术基本是数十年不会变。 但是软件开发行业则恰恰相反,变化太快,也许你从事软件开发数十年的经验,还不如一个刚入门的新手,因为新手往往学的是最新的技术,而老程序员用的还是过去的老技术,这就好比马车再好也跑不过汽车,新技术优势太明显了 在竞争激烈的互联网行业里讨生活,很多人都劝你放平心态理性看待中年危机,但也许你的核心竞争力就是你的学习能力,而这才是支持你可持续发展的根本。 问题的关键是,你知道如何更高效终身学习吗? 图片源自网络,仅做配文展示 01 为什么要终身学习 为什么要终身学习,持续学习?中国人有一句老话叫,活到老,学到老。大概是说总有新的知识产生,需要持续学习。回到大龄程序员焦虑这个话题,学习仍然是破解的不二法门。 我们来看对于程序员要求的一些变化。在小公司的时候,可能一个人就把页面、java和数据库都干了,100人的公司都未必有dba,运维的活也将就能干。随着业务规模的发展,问题域的复杂度几何级数增长,分工呈现精细化方向。 干活一个前端、一个后端、一个测试,可能还有交互,不然开不了工。精细化分工的副作用开始显现了,分工鸿沟阻碍了效能。于是我们搞了全栈---基础前端工作,研发同学可以学习、质量保障是研发自己的事情。 作为2年前的研发工程师和现在的,需要学习的内容广度不同了。随着业务数据化、数据业务化的发展,搞开发不掌握一点大数据甚至AI的基础,也很难适应时代的需要。综上述,学习是一种能力,知识是可迁移的。 学习是在持续的为脑子注入新的信息,不断的迭代和更新,如果没有持续的新的信息输入,仅仅是倚靠存量知识的话,随着时间的流逝,脑子里的知识是在快速贬值的。随着脑子里的信息贬值,你的认知模型和决策能力也会跟着降低。 因为外部世界发展太快了,科技日新月异,为什么我们觉得爸妈那一辈的很多观点都很老旧,就是因为他们的信息更新不及时,用十年前的存量信息拿到十年后处理问题,低质量的信息导致了低质量的决策。 所以我们需要和趋势较劲,避免自己跟着趋势走下坡路。 图片源自网络,仅做配文展示 02 如何终身学习 那既然终身学习那么重要,那我们要如何正确学习?我们首先要避免几个误区: 首先,未必是只有看书看教程才叫学习。 社会大学也有很多值得学习的东西,和厉害的人学习待人接物,学习演讲技巧,学习处理危机,学会调和矛盾,新信息的输入形式和来源都是多样化的,这一点区别于学校。 第二,碎片化的学习未必就一无是处。 碎片化指代两层含义,一层是你用于学习的时间相对碎片化,都是5min,10min这样凑起来的,第二层指的是你学的东西都是碎片化和不成体系的。 用于学习的时间相对碎片化其实是可以理解的,毕竟成段的时间的确很少,大部分时间都被各种事情瓜分,时不时还有一些紧急的事情,因此的确很多时间是碎片化的。 时间碎片化导致了我们没有足够的时间去摄入更丰富的信息以及进行深度的思考,因此碎片的时间更适合摄取资讯类的信息而不是进行微信读书或者其他思考。 在你的日常时间已经被打碎的情况下,碎片化的学习好过不学习,而且我们真正的问题在于,很多人只有碎片化学习,没有深度的学习。 所以在第一层含义下,碎片化的学习本身是没有大问题的,学了好过不学,但碎片化学习肯定是比不上系统性学习的,我们在碎片学习的基础上,依旧需要深度思考的时间和空间。 理解了碎片化学习的误区后,小渡为大家提供几点实际学习中的方法建议: 1、读懂框架源码 框架它本身就是一个工具,但是作为高级工程师与架构师这个是你必须要学会和掌握的。让你读源码并不是真的让你读懂它,而是要理解它底层实现的原理,培养起框架思维和自定义框架的能力。 2、掌握分布式架构设计 面对互联网项目高并发、高可用、高性能的特点,分布式系统的架构能力是你必须要掌握的。面对亿级的数据系统架构如何迎接高并发流量的挑战,这是作为架构师,必须要考虑的问题。 3、深刻搞懂算法和计算机底层原理 项目性能瓶颈一部分是要通过底层调优实现的,而一些高级的内核和引擎开发往往是需要一些精良算法和对底层原理的理解才能完成的, 只有掌握这些,才能多一些角度进行项目优化。 并且,去一些大厂面试,也是 100% 都会面到的。就算你现在的工作还用不到算法和底层原理,但如何以后想要进BAT这样的的大厂,还是要尽快学习起来。 4、掌握数据库调优和选型 架构最难的部分就是存储,如何用 MySQL 支撑起海量的数据,并保持高响应性,如何让数据库持续的稳定运行,都是必须掌握的技能。不管是现在主流的 MySQL,MongoDB、还是大数据 Hadoop 生态圈中的 HBase 等等。 5、构建工具 浏览器只能识别 HTML、CSS 和 JavaScript,所以不管使用什么框架写的代码最终都需要让浏览器能够识别。不同浏览器对 JavaScript 的特性支持的不一致,可以通过构建工具把 JavaScript 代码转换成浏览器能支持的。使用构建工具也能够做到性能优化,比如压缩代码。 6、资源 好的资源会达到事半功倍的效果。关于资源方面小渡推荐 MDN,像那些一文搞懂 xxxxxx,10分钟搞懂 xxxxxx。别做梦了,学习没有捷径。想学好就必须系统深入学习。 掌握这些数据技术让你不管是面试还是技术方案选型,都可以锦上添花,并且能够应对向大数据延展的业务需求。 7、浏览器工作原理 网页最终由浏览器渲染,掌握浏览器工作原理是必须的。首先要搞懂HTTP,然后弄懂浏览器显示一个页面所要经历的过程。网络太重要了,处处多需要。 图片源自网络,仅做配文展示 其实,学习不是难事,难的是坚持学习。工作之后,我们的重心不在是学习,大家会觉得学生的任务是学习,社畜的任务就是工作和挣钱,但是工作之后也是要坚持学习的,而且坚持学习的挑战更大,因为你需要逆趋势。在学校,不学习的人是少数,学习是趋势;在社会,不学习或者停止学习的是大多数,坚持学习和精进的是少数。 再多技巧,都不如稳扎稳打的学习提升。而能真正能够稳步提升的,都是笨办法,量变引起质变,一起共勉吧!