众所周知,程序员是一个高收入群体,同时也被认为是个吃青春饭的群体。特别在今年,甚至有传出华为辞退34岁以上程序员的事件。这也会让很多快到30岁或是已经超过30岁的程序员多多少少产生一些恐慌。
仔细分析一下,为什么30岁以上程序员就会感觉不行了呢?是因为精力不行了?没有动力了?我觉的都不是。***的原因应该是很多30岁左右的程序员,渐渐开始带一些新人,从事一部份管理的工作,把时间都花在开会沟通上了,忽略了程序员最需要投入时间的内容——学习。程序员是一个需要持续学习的职业,新的技术层出不穷,一旦停止学习了,那很快就会被淘汰。
那么今天来聊聊应该怎么学习,怎么处理30岁带来的焦虑。
快速甄别,决定哪些事情值得花费时间
有些信件、文章、书籍,一看标题就知道和自己无关,或者已经了解和熟悉的信息,可以一带而过或者忽略,不会损失什么。甚至有些根据作者或来源就知道水分多少,不必要花太多的时间。这种筛选技能随着你见的多了,自然会培养出来,需要做的,只是克制自己不要在无用的事情上花费时间。
有些信息或内容即使是相关的,可能不是目前对你来说合适的。打个比方,你想了解数据库相关的知识,那么在你没有积累一定的基础的时候,去看关于性能优化,就会事倍功半。关于机器学习也类似,没有一点底子就去看深度学习,总有一些地方很难吃透。有些知识的获取是需要循序渐进的,除非你已经有底子,否则跳跃进阶吃力不讨好。
还有一种就是你知道对你很重要,却偏偏就是晦涩难懂。这包括工作中需要阅读的源码,文档等等。特别重要的,一遍看不懂,就得看两遍、三遍。需要去查别的资料的,就得去查。记得我刚刚开始做支付的时候,有时候为了搞懂一个名词,去查 wikipedia,其中的解释又出现新的不懂的名词,就继续追查。有时候为了搞懂一个名词,甚至要看十几个相关的 wiki 词条。但只要足够重要,就值得花时间。
对所有要学的,衡量时间成本的性价比
关于时间成本的性价比,大概有三个要素。
一是这个东西掌握了,在短期和长期对你有多重要。有些可能是短期急用,不得不用的。有些是了解了短期有可能用,长期早晚会用的。还有一些是短期可能找办法取代深度了解,长期可能也不一定用得上。这样的一些评估,也就是需求上的评估。根据短期和长期用处的加权考虑,决定这个知识或者信息对你有多重要。
二是时间成本本身的评估。同样的内容,你学起来可能比别人慢,也可能比别人快。因为每个人的学习能力不同,而且知识都是有累积效应的。有些问题你有有背景,看一下就明白。有些你从来没接触过,看起来就会费劲。比如曹政老师,对互联网的东西知道很多,看到一个案例立马就能知道深浅和上下文,甄别其中真假成分。而对我来说,除非去做很认真的研究,否则大部分问题看到了就是看到了,我能联系到的就很有限,更别提甄别是非了。所以倒是老被他调侃我不懂中国的互联网。但我也并不是很着急去学,为什么呢?因为这些我花精力去研究,对我的能力和工作不能说没有益处,但是考虑我每天的工作内容,这个成本就有点大于收益了。
三是这种信息获取是不是可以利用时间碎片来学习或者处理,还是需要连贯的安静的时间去持续学习。比如很多公众号文章和新闻等,就可以利用碎片时间阅读,但是真正的 “干货”,总是要坐坐冷板凳才能学好的。
所以不同的学习和信息,对你的时间成本要求是什么样,心里要有个数。
学之前明确目标,要做专家还是要入门
我个人时间很有限,所以很多的东西,即使再热再有趣,我也能克制自己花费仅仅是必要的时间去了解。有一些比如公司相关的设计文档,虽然不是那么必须看,但是需要的时间不多,很快可以了解,所以还是都会去看。代码审核很费时间,但是是了解代码库最有效的方法,所以坚持花时间。一些语言或工具,如果确实需要用,即使学起来很废时间,也会预留一些固定的时间来有计划地学习。
计划学什么的时候想清楚,一旦开始执行,就不要想太多。
学习的时候经常会遇到瓶颈期,也有想放弃的时候。所以如果前三条都做好了,剩的就是坚持。比如:对一些需要持续花功夫深学的,可以每天早起半到一个小时,预留出来就是做这件事。或者每个周末固定三四个小时也行。又比如可以碎片学习跟进的内容,就约定每天上下班路上或者午饭后的闲暇去做等等。有了规律,成了惯性,就更容易坚持。
不要执着于是不是每一个点滴都有用,学习不能太功利心。也不要太刻板。如果执行到一半,仔细思量,确实计划有问题,那还是应该随时调整。