前言
看《小欢喜》看到 45 岁的方圆被辞退的那个场景我有点难过。当然我不是因为他而难过,我是想到我 45 岁的时候会不会也被辞退?这种情绪持续了几天也无法挥散。(我似乎知道为什么有些 40 多岁的老员工突然离职了)
正文
现在很多公司加班都很严重,这种情况导致很多人将学习放到了一边。
有些人在这种情况越陷越深,导致自己知识架构和市场已经脱节。然后在出去找工作已经没有了议价能力,恶性循环,再然后到 40 岁的时候公司已经看不到你这颗满是锈迹的螺丝钉之价值所在,索性对你动了手。
工作繁忙只是充实的一个假象,所谓充实应该是每一天都有进步;忙到没法学习是对自己(未来的家庭)的极大不负责。
忙到没法学习可能是一个假命题
我们还是先来看一个场景:
早上 7:46 小方终于挤上了地铁,并找到了一个好的角落靠着;地铁开动了,他也开始看视频或者是斗地主。48 分钟过后,他到站了,出地铁口顺便买了一份 10 元的热干面。
在 8:57 的时候赶到了工位上,他打开了一些常摸鱼的网站,边逛变边吃着有点让他心疼的早餐。吃完早餐后,看了下钉钉群的消息,发现没有什么需要马上处理的。又开始水群了,转眼就到了中午。
13:32 的时候,小方不情愿的从桌子上爬了起来开始处理需求了,算是开始工作了;开始写 bug 解 bug,再带着开了两个会议;一转眼晚饭都没吃就 21:26 了,到了下班的时间。
23:04 小方终于洗好澡了,他觉得辛苦了一天;需要放松一下……
我觉得这样的程序员并不是个例,要从时间的占用来说,确实很忙;可是换个角度看,很多都是即时的快感。其实还是有很多时间可以拿来学习的。
我们现在回到最初的问题 —— 加班太严重,如何平衡工作和学习?
首先我们必须清楚学习的目的到底是什么?
说到底学习是为了提升自己,而这是一个很漫长的过程。我们需要在学习的过程中找到使自己快乐的因素,我们才有可能坚持下去。
然后我们要弄清楚加班严重是自己的拖拉造成的还是公司有修福报的文化。
如果是自己的问题,那还没有到平衡工作和学习地步,需要从自身找问题;所以侧重点在后者。
1. 项目本身是否对你具有挑战
如果导致我们一直加班的项目是具有挑战的,那么项目本身就是一个很好地学习提高的途径。我们不用一味的想着该如何学习,更不要在工作的时候摸鱼来学习,这才是舍近求远的糊涂。
都说实践才是检验真理的唯一标准,既然有这么好的实践机会,为什么要白白浪费掉呢?
如果没有挑战,就是需要做无数重复的工作;那么我们是否可以写一个插件让自己从这个重复工作中解放出来。让自己可以做一些更有挑战的事用来提高自己。
如果真的没有任何挑战又没有时间学习,我们就需要适时的重新思考一下自己的职业规划。
我的第一份工作就是外派到银行做外包,真的没有任何技术含量;而且国企的甲方真的是大爷,做了一年完全没有任何成就感。外派的时候,只要有时间我就为自己跳槽做准备。
年轻人确实有时间,但这些时间最好用来提升自己。
学习和钱都是重要的,有些公司打着有好的学习环境而开很低的工资,最后很可能学不到知识也没有赚到钱。
2. 你是否利用好了周末和下班的时间
这里说的利用好,不是说你一定需要周末一直学习,而是说周末你需要有计划的学习。好些人一到周末就是:
一觉睡到十二点
醒了先来把吃鸡
三点吃个早晚饭
看个电影电视剧
睡前一看三点钟
这种状态其实就是不渴望学习新技能,或者说不想付出就想习得新技能。这是不可能的,有危机感就需要具备保持持续学习新知识的能力,要不然这种危机感也是徒劳。
平日里可以每天挤一些出来学习,巩固基础也好,学习框架也好、学习口语也好。只要是有计划的学习,都是有好处的。
周末的时间是很宝贵的,这也是少有的属于自己的大段可控时间。这种时间是最适合学习的。具体来说:3个小时我们能好好的梳理‘闭包’或者‘原型链’这样基础知识点;我们知道这样的基础知识点其实没有很多。坚持两三个月下来我们必定可以有一个全新的认识。
两三个月的周末时间,就能让我们重新认识基础,这笔买卖很是划算。
关于时间管理这块我自己也没有太多的经验,我自己的做法很简单:
拟定好自己的学习计划,按时复盘
学习的时候尽量避免手机的干扰
3. 你遇到问题会如何处理
当你遇到一个问题,你最先想到的是怎么解决呢(这不是选择题)?
马上把问题抛到群里面问群友?
问旁边的同事?
打开搜索引擎查找答案?
先处理 bug,然后有时间在好好研究,避免在犯。
可能有些人是第一种,可是这种方式很容易让人忘了最开始想干嘛。很容易就在群里面吹水,所以建议不要用这种方式。至于问同事的话,需要先掂量一下。如果是业务上的问题,可以质询一下;如果就是代码本身的问题,同事也是有需求任务在身的,这样可能反而不好。
我一般是会先找找其他人的处理方案,其实你遇到的问题,之前肯定是有人也遇到过得。你打开使用 Google(百度)可能几分钟就能找到问题所在。这种效率一般是最高的。
当然最好是可以自己记录下来,以免忘记。有时间的时候可以研究问什么这样写会有 bug。
你可以这样记录一些有意义的 bug:
【日期】:*********
【问题】:*********
【原因】:*********
【如何发现】:*********
【如何修复】:*********
【总结】:*********
这就像我们高考的错题本一样有用。
关于前端的学习路线和方法我会在下一篇文章中详细说明。这里就不展开了。
4. 十年后你的竞争力在哪里
这一点就不展开了,我觉得忧患意识是一个很好地品质,有忧患意识并付出行动同样也是。
对于如何确定自己是否还有竞争力,最直接的办法应该就是时常出去面试一下。看看市场需要,也检测自己。
5. 有效地评估开发时间
于江水大佬写的挺好的,我就直接搬运了。
如何能评估比较准的工期呢?一个很简单的公式送给大家:
需求非常明确而且经常这样做:自己评估时间 * 1.5 需求不够清晰,有可能变,但是代码和技术方案熟悉:自己评估的时间 * 2 需求不够清晰,代码和技术方案也是新的,需要探索:自己评估的时间 * 2.5 or 3
自己评估的时间一般会留点 buffer,自我感觉应该没问题,实际上开发过程可能会有各种会议、需求和技术方案变更或者突发事件。所以多留一点 buffer 会更好,因为这个时间点可能是下游运营活动上线时间点,评估后业务方觉得太长可以砍需求拆成两期或者调整上线预期,但一旦设置了时间点,不应该跳票。如果你比预期早完成上线,皆大欢喜,如果你一次次的告知业务方还需要延期一两天,效果正好相反。
结尾
想要提升自己的能力,我们必须付出很多时间。对应的娱乐的时候就需要减少。这个道理大家都是清楚的,但是能做到的却不多。
最后提几个建议:
注重长期的可能性,而不是短期的快感
无论如何一定要做好持续学习的计划
技术之外的能力也很重要,比如表达能力、思考方式
系统的学习基础知识很重要,不要急于求新
其实说到底就是需要有持续学习的能力和渴望,如果加班已经严重影响到学习,那么这些人肯定会适时的考虑自己的职业规划。