程序员如何在业余时间提升自己?

近年来,出现越来越多“自主学习”、“业余提升" 的相关话题。


我们经常收到一些同学提问:程序员的工作非常忙碌,如何在繁忙的工作中利用碎片化时间学习或是做自己感兴趣的事情?不管是新的应届生,还是两三年的职场人,甚至工作多年的职场老人都在关心这个问题。到底现在的程序员该如何利用业余时间从而让那个自己达到满意的状态呢?


今天我们邀请了 4 名淘系技术的工程师,给大家分享一些他们的业余提升技巧,以及时间的安排,希望能够为你提供一份参考。


淘系技术部 | 去来


这个话题非常现实,我的方法就是发现工作以外的时间在哪。


程序员的一天其实挺忙的,每天能留出的时间可以分几块:


通勤时间


我的通勤方式是地铁,每天大概需要花40分钟在地铁上,这段时间一般用来读书,一年累计下来能读完2-3本。有些人可能不太爱看书,其实不同类型的书吸引力确实差很多,找到自己感兴趣的书才能培养阅读的习惯。
本科的时候我自己也是更爱打游戏不爱看书,在研究生阶段偶然看了一本基督山伯爵,才开始喜欢上阅读的。书里的很多故事不好拍成电视剧或电影,这些有趣的故事能让我在代码之外找到更多乐趣。那之后慢慢开始找书看,在朋友圈看看好友分享的,和同事们也有交流看到的好书。
前段时间恰逢建党100周年,组里的几个小伙伴毅安,增群对《*选集》产生很大兴趣,我也在读**文献研究室出的《*传》,有很大收获。


午休时间


这段时间不是很长,吃完饭大概还有半个小时,习惯午睡的同学可以趁机休息会,为下午的工作养足精神。

我个人更习惯和同事遛弯交流交流最近生活上的新闻。


晚上下班后


一周锻炼2-3天,在外跑步跳绳,或在家跟着keep练。没有好身体,心情也不好,其他都干不好,所以对自己的健康还是要多关注一些。

IT从业者白天坐的时间太久,用眼时间很长,晚上尽量别玩太久手机。

健身是给身体充电,读书是给头脑充电,利用一些更加碎片化的时间我会翻一翻知乎和微信公众号上和人工智能相关的技术专栏,看下行业动态。


周末


除了吃喝玩乐,继续阅读,健身还有写作。

阅读是被动接收信息,我还有一个小目标就是自己写文章,打造个人技术影响力的尝试。
去年定了一个小目标,微信公众号的关注超500(超过500就可以加广告,赚流量分成,哈哈)。写了几篇,只吸引了自己朋友圈里的人关注,分析原因:一是内容还不够精彩,二是微信公众号没有公域推荐机制。于是又转到知乎上,通过写文章与答题,目前已经收到1k多粉丝,分析了粉丝来源之后,发现大部分都是来自一两个优质的回答,头部效应很严重,所以再写文章还是要出精品,争取早日一篇自己的10w+。


淘系技术部 | 玖伍


其实提升自己没有秘籍和诀窍,只要愿意花业余时间去学习,再加上长时间的坚持,就可以成为大神。


阅读


我个人比较喜欢读书,喜欢读纸质的书,记得刚开始工作的时候,很多东西都不会,只会写CSS切页面,是一名真切图仔,同时自己又特别想成为大神,然后就每天中午吃完饭在工位上看一个小时的书,下班后也会留在公司看两个小时的书再回家,就这样每天中午和晚上一边看书一边写Demo,前期的提升速度还是非常明显的,基本上每天都能感觉到自己学会了新知识。

我比较推荐多读一些技术书,特别是纸质书,熟悉我的同学都知道我有非常多的书。一本书从填选题表到最终出版,中间会经历很多步骤,出版社专业的编辑也会和作者一起反复的校验和修改好多遍,上市之后再经过读者的认可,这样一本书的内容质量是非常有保障的。根据经验图灵出版的书质量都非常高。


学习资料


学习资料非常重要,要阅读高质量的第一手资料,很多时候我们学习某个技术发现怎么都学不会搞不懂时可能不一定是我们笨,也有可能是学习资料有问题。
我见过很多文章讲某个技术,即使那个技术我事先已经会了,也确实看不懂文章里在说些什么。我也见过很多文章可能作者自己也不是很懂某个技术,他只是把一些其他文章拼凑起来。
不好的学习资料通常内容晦涩难懂且没有把技术讲清楚,而高质量的学习资料通常会很清晰且精准地把一个技术讲透,因为讲解清晰明确,所以学习起来也不会太复杂枯燥。
JS框架、库、工具等,我一般会从官网和口碑较好的纸质书籍中学习。基础知识我一般通过阅读高质量的纸质书籍 + 阅读W3C的规范来学习。Web性能领域我通常在Chrome开发者官网和web.dev里的文章来学习。
具备一定的基础知识后就可以判断出学习资料的质量,这时候就可以关注一些公众号或者明星程序员来获取一些知识。


写作分享


除了学习,我还会利用业余时间写文章,做技术分享等,将自己学到的知识分享出去。切身体会,将自己学到的知识分享出去对自己的成长有很大帮助,有时候写文章的过程中会发现自己对某个知识也没有真的学透。
而且写作和分享可以让自己学会思考并锻炼思考能力,而思考能力其实很重要。


坚持


最后,坚持才是最重要的,我们的职业生涯,其实是一场没有终点的长跑比赛,很多人可能想问怎样才能跑得更快,把这场比赛跑赢。

其实在这条没有终点的赛道上在短期内快一些没有任何意义。

大部分人跑到中途就主动放弃了,这就是为什么大牛那么少。唯一能决定这场比赛输赢的,只有两个字叫“坚持”。

在这条赛道上跑赢的,不是那些跑得快的人,而是为数不多坚持跑的人。

他们能跑赢,只是因为他们还在跑。


书单推荐


最后推荐一些书单,全都是我自己看过的觉得非常不错的书。
JavaScript相关的书籍:《你不知道的JavaScript》上中下三本、《深入理解ES6》、《JavaScript高级程序设计》
CSS相关的书:《CSS世界》(
这类书我自己没有看,但我看张鑫旭博客学的CSS,他出版的书我虽然没看,但凭着对作者的信任,而且作者还专门为这本书做了个[官网](https://www.cssworld.cn/)感觉还是蛮用心的,质量应该是可以保障的
JS框架相关的书籍:React相关我没有看过不做推荐,Vue相关的推荐一本:《深入浅出Vue.js》(
非广告,内容质量和深度确实是目前市面上最好的一本)。
Node.js相关的书籍:《深入浅出Node.js》(
只看过一本朴灵大大写的质量还行,别的没看过,所以只推荐这本)。
再分享下其他我看过的觉得不错的书:《算法4》、《Web性能权威指南》(
作者是前任W3C性能工作组主席,译者是李松峰老师,虽然这本书出版快10年了,但我感觉还是值得一看的)、《重构》、《码农翻身》、《代码整洁之道》、《软技能 - 代码之外的生存指南》、《金字塔原理》。


淘系技术部 | 岳溪


这个话题非常现实,我的方法就是发现工作以外的时间在哪?程序员的一天其实挺忙的,每天能留出的时间可以分几块


业余时间如何分配,如何保持高效的工作状态?


  1. 首先还是要规律生活,早睡早起,比如晚上尽量逼迫到点就睡,晚上的熬夜必定带来白天的萎靡。
  2. 保持锻炼,规律健身跑步运动,缓解工作的疲劳,也给工作注入更多的体能资本,健身房的一声大喊,工作的疲劳一扫而尽。
  3. 业余时间还是要慢下来,品味生活,比如对某一时期的历史感兴趣,不妨系统研究研究,然后结合了解的知识,再制订一个长期的业务学习计划,总之还是要做一些让能力能够专注的事情,给生活多一些愉悦,需要愉悦。


工作上多线程切换真的会带来效率提升吗?


有时会感觉事情很多,陷入忙碌后容易在多件事情上来回切换,最后的结果经常是一件事都没有做好;普通人真的是不适合多线程工作,有时不妨多想想,要思考,适当的慢下来,分清事情的主次,然后集中精力一件件完成,往往效果会更好;


工作中经常会遇到新的领域,新的问题,高大尚的东东,面对新技术如何学习,快速入门?


还是要具体问题来分析,面对工作的难题,需要深入理解时,我通常会读读经验帖,找一本好书或资料,以解决问题为目标制订系统学习的分阶段目标,阶段目标可以防止总目标lost。


淘系技术部 | 勇剑


“业余时间”对自己提升相比“工作中”的提升,不同的地方是,我们可以有选择性的针对自己薄弱的点去提升。


那么首先要了解自己有哪些需要提升的地方,才能有针对性的去提升。


个人理解,作为技术人员提升的主要方向不外乎技术基础、沟通技巧、推动能力等等。


业余时间的话,主要可提升的还是技术基础,这个也比较好去有针对性的学习。


自我分析


首先需要有自己的一份技术栈大图,有哪些已经掌握的、哪些还不太熟悉、哪些完全不懂的,然后就可以针对自己的薄弱项进行针对性的学习。当然还有一些是我们还完全不知道的技术,这就需要我们经常去关注业界动态了,针对这些,可以视情况去参加一些线下的 meetup,跟大佬面对面的交流。

献上我自己的一份个人技术技术大图


程序员如何在业余时间提升自己?


透过现象看本质


在学习过程中,要注意透过现象去看本质,常说的 What、How、Why 在学习的过程中要常去思考。


不给自己设限


总结来说就是不设限,尝试去寻找自己的突破点,在自己的技术边界不断拓展,而不是不断的去做一些重复的事情。

至于提升的方式那就很多了,首先一手技术资料肯定是各种官方网站,对于各种中间件的学习,看源码是最好的方式(github);想更系统化的学习话,可以读一些书、专业 paper ,都是比较不错的手段;还可以通过一些社区,跟其他人一起学习,交流心得,取长补短。

避免直接网上搜索的拿来主义式学习,另外看多少不代表你会多少,付诸实践、产出结果才是我们的最终目标。


结语


如上,不管是什么职业,我们都需要继续提升。也有很多人觉得不仅现下的生活如一潭死水,工作也没有任何提升。其实不外乎一个原因:想太多,做太少。

解决方法很简单,放手去干


上一篇:高性能WEB开发(11) - flush让页面分块,逐步呈现


下一篇:nginx反向代理webSocket配置