程序员如何“变轨”
前言
笔者干了3年多web测试开发(lamp)、2年java开发,最近有感于个人成长,遂作此文,望与诸位大牛共勉。
程序员的展望
笔者信管专业毕业,一直觉得可以比测试同学做得更多,便转了开发,还制定了一个目标:
- 第一年靠谱:代码无bug
- 第二年熟练:效率高
- 第三年牛逼:融会贯通,专治各种疑难杂症
除去主动学习spring视频的1个多月,后面基本是靠项目中的被动学习来走。2年已经过去,随着头发的不断减少,之前的目标基本实现,但距离“牛逼”还有不少的距离。最近一直在思考,为啥成长的速度略慢......
程序员的工作轨道
程序员的沼泽
咱们程序员换工作面试时,通常会要去xx年工作经验。很多人(包括hr,甚至技术主管)都只考虑实际的工作年限,而实际上体现程序员工作经验积累的往往是工作能力,这是很难用年限去衡量的。一个很明显的例子就是某程序员工作5年,做的事情跟第1年基本一致,积累基本为0,只会重复地实现需求,成为真正意义上的“码农”。
如上图所示,在实际的工作中,很多程序员小伙伴一不小心就陷入了里面的蓝色小圈子,一直被业务拉着推着跑,焦头烂额,周而复始,最终的成长只是遇到问题时被动学习的小点,既没有深究,也没有沉淀积累……如果一直意识不到这样的工作方式其实是在不断地滑入沼泽,最终只会成为“温水中的青蛙”,而这其实是一个有追求、有情怀的程序员所不愿看到的,也是团队和主管所不愿意看到的。
理想的天堂
团队和个人最终的诉求肯定是一致的,即在个人技能提升、效率提升的同时,更好地满足业务的需求。相对理想的工作方式上图中橙色外围圆圈,是一种良性循环。一边满足业务需求,一边不断主动学习,提升技能和效率。
如何变轨
这个问题我考虑了很久, 觉得最终的钥匙就是“主动学习”,程序员中间的差距一定是上班8个小时、睡觉8个小时之外的那8个小时。
从工作学习方式上来看,我们要从最基本的完成业务需求、偶尔的被动学习延伸为:以被动学习为契机,主动深挖,不断地学习某个点的知识,最终串连成面,打通“任督二脉”。
从个人情感体验来看,就是要勇敢面对各种问题,将“延伸区”扩展为自己的“舒适区”,积跬步以致千里。
如何实施
实施需要一个很重要的前提条件——发自内心的想要去提高技能。当然,如果你觉得当前的技能已经够用,或者你不想花这份心思,可能接下里的内容可能都与你无关。
实施最终落地时需要一个学习计划,这里面包括两点:学习内容、时间进度安排。实施时按照这2点来做即可。这个计划一定要适合你自己的,切实可行的。
学习时间哪里来?
学习的时间主要还是那8个小时如何分配。如果有了家庭,宝宝,可能会比较困难一些。
总之项目或者日常的时间评估一定要尽量合理,保证上班时间内可以完成,并且应对风险,有一定的buffer。我给自己时间的要求就是下班之后不干活(只学习或者娱乐)。
学习内容如何确定?
主要是跟着学习计划系统整理,过程中也会掺杂着以项目中遇到的问题为点,将被动学习延伸为主动学习。
再好的学习计划还需要扎扎实实地实施和跟进,附一份我给自己制定这一年学习、整理计划,与小伙伴们共勉,也欢迎大家与我交流。