学习方法:如何在工作内外获得持续的技术成长
Posted helloworld2048
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习方法:如何在工作内外获得持续的技术成长相关的知识,希望对你有一定的参考价值。
成长永远不是一种结果,而是一种累积效应,更是一种习惯,每个人都时刻在累积,但成长力度却相差甚远,原因就在于特定客观环境内,是各种束缚导致自己打破不掉习惯以及打破后不能坚持。要突破就要从工作内外这两个战场下手,工作内是最佳的成长之地,而工作外是工作内所不能提供的试验田,可以有更多的涉猎与想法验证。
成长本质是突破天花板
几乎每个人都遇到了成长受限、成长瓶颈、成长迷茫的问题,每个人的原因背景都不同,比如:
- 转行做前端,在大公司里,业务与团队环境趋于稳定,找不到成长机会,与同龄人也有差距,心有不甘想要破局,看不清楚从哪里做起,坚持下去。
- 从事前端 1 年,公司业务偏外包型,没有组织及主管对自己直接负责,团队归属感弱成长慢,较强的跳槽意愿,近期简历投递不少,但效果不尽如人意。
- 从事前端 4 年,有转管理的机会,技术属于上升期,在这样的十字路口,面对业务已是熟练手,想要大发力找不到发力点,思考蛮多但仍有困惑,感觉遇到了职业瓶颈,希望走出舒适区。
- 14 高中毕业,培训 4 个月 UI 后发现自己更喜欢代码,然后自学转前端,后又自学 php、JAVA 等基础,但效果都学得不是很理想。
- 17 年毕业,两年前端经验,第一年就分别在两家公司工作,面临跳槽频繁的职业发展问题。
- 就职于一家房地产相关的互联网公司,工作时间近两年。技术部门不是主导,团队中前端虽然是业务主导,但彼此之间协作较少,基础建设和团队配置较为落后。近期业务繁忙而人手不够,技术提升也十分有限。
平时微信上我也会收到非常非常多这样的困惑:
大佬,我想请教你一个最近一直困扰我的问题,我想问问你如何看待繁重的业务和个人技术成长之间的矛盾,繁重的业务是建立在jquery这种特别老旧的技术之上的,而且领导要求维稳,这就限制了在业务中成长技术的可能性...同时个人技术成长又很重要,毕竟出去面试前端人家不会问产品业务,只会问一些技术,这就造成了一个很严重的矛盾...是不是只能找一个同样看重技术、关注技术成长的志同道合的团队...
全部看下来,背景不同结果都类似,那就是想要提升却无从发力甚至无从下手,对于接下来需要马上进行的 Action 没有清晰的规划,那么所有的这些问题,把他抽象成工作内外,来看看从方法套路上如何打破僵局取得进步。
了解技术的成本和门槛
我们很多时候,会非常喜欢追风追潮流,其实我本人也不例外,但快 10 年了,我才终于意识到,对技术寻根溯源追求本质是最重要的,但比这个更重要的是自己的时间分配和如何选择,你的时间远比你以为的要值钱的多,请珍惜它。
对自己而言如何选择我们后面再讨论,先看时间分配,我们知道,任何技术都有它优劣势,也有它的学习上手成本,那么这些成本结合自己的业务场景,也会有进一步的实现复杂度成本,也就是它的应用场景也是一道成本,对这个成本我们要有一些预判,比如在很早期,我给团队同学梳理了这样一张图:
那时候所整理的业务应用端和背后的技术,已经多样到眼花缭乱,而要挑出来押注的技术方向是需要长期的技术栈过程发展,然后我们又整理了第二张图:
将两者结合后,我们发现针对不同的业务场景,不同的技术栈从陌生到能拿来干活,到运用熟练,都有一定的时间周期,比如对于普通的前端工程师,要把 H5 或者 小程序玩的比较溜,需要 1 年以上的经验,而 ios/android 则需要更久,所以哪些技术栈是时间长度相对可被接受,也就是哪些学习成本可以被接受是你需要思考的,思考清楚后,再去选择,会更有侧重,然后再来看不同的技术学习成本背后,哪个更贴合自己。
求变之前要先认清自己
我是谁?我的身份是?未来我想要做什么?当下我可以做什么?我擅长什么?我还需要学会什么?
诸如此类的终极拷问,建议大家在每个深夜难眠的时候,都问问自己,在每个聚会的酒后,都问问朋友,它的答案永远在变化,也永远没在变,时间越久思考的越久经历也越多,就会距离它最真实的答案越近。
比如 “我是一个四线城市来北京的前端小菜,北漂三年半在小公司做营销活动页面开发,未来我想成为一个能独当一面的资深前端,当下我可以积累项目经验,我擅长发现团队及工作中的问题,我还需要学会很多前端的热门框架和基础知识” 这样的命题,大家可以找张纸把问题写下来(重点:一定动手写下来),开始分析:
- 我到底想不想成为这样的前端?是一般想,非常想,还是撕心裂肺的想?
- 我知道资深前端要具备什么能力么?是要会一些框架,会一些思想,要有哪些框架,要有哪些思想?
- 我知道独当一面的意思么?是独立做项目,能带人,还是独立完成分配的任务,还是经验丰富?
- 我的强项是什么?除了发现问题,还有什么?解决问题能力如何,思考深度如何,沟通能力如何?
- 我来北京为了什么,去上海北京厦门和杭州行不行?是什么在牵绊我约束我,是朋友还是面子还是勇气?
- 我过往的跳槽经历和项目经历,哪个对我影响最大?是什么影响了我,合作流程、他人还是某件事?
- 我这些年过的开不开心?开心是为了什么?不开心是为了什么?哪些不开心最难释怀?哪些回忆更甜蜜?
- 我想要做前端的初心变化了么?为了更好的用户体验,做牛逼的产品,为了生计,为了编程兴趣?
- 我最能坚持做的事情是什么?运动、听歌、看电影、发呆、闲逛、看书、看抖音玩微博,还是旅游?
- 我离开做前端行业要靠什么生存?写书、做运营、转产品、回老家开店、找人创业?我有信心么?
- 我最不能忍受的事情是什么?别人的诬陷、业务方的强势、老板的冷漠、合作方的甩锅还是没有成就感?
- 我知道 Vue/React 要看源码懂原理为什么没掌握?全部时间被压缩干净了,还是没韧劲啃不动就放弃?
- 我知道程序员也需要社交为什么自己宅几年不出去?是我习惯满意了当下的生活还是失去了进取的动力?
- 我知道能力弱会薪资会但看别人拿高薪为什么会不开心?是我希望少劳多得,还是发生在我身上的都是不公平?
- ...
其实有太多太多的问题,我们可以尝试问自己,但我们往往找别人去问,都会挑选跟自己内心与未来无关的话题,比如我选框架 A 还是 B,我是重构还是保持,我是转产品还是转管理....其实所有的答案都取决于我接下来 3 ~ 9 个月具体的行动,这些答案来源于我的原动力以及我规划的最优或者最可执行路径,可一旦我们眼睛看到 9 月后的结果,而忽视这个可执行路径,甚至忽略我的原动力的时候,结果就变得非常惋惜,那就是我竟然整个思考过程,我也就压根无法了解自己的真实诉求和真实能力。
习惯养成与定目标计划
在经过深思熟虑后去制定的目标成功的概率更大,而脑袋一热跑出来的目标往往会泡汤,泡汤到也罢了,这会让自己陷入定目标 - 执行难度过大 - 放弃 - 再定目标这样的死循环,信心和成就感一天天挫败下去,就变成了今日的自己,晚上想千万条路早上起来走原路,越来越麻木越来越气馁。
我的建议是,在定一个目标时候,比如半年内就要看完 6 个框架源码或者写博客,那么要考虑自己有没有阅读代码和写博客的习惯,如果从来没有,那么这个目标就有点激进,比如对于看代码,有效的做法是,先逼自己用 2 周时间,最多一个月时间,在相对固定的时间段去阅读源码,如果用两三周,发现自己完全坚持不下来,那么这个目标就要修正,如果自己坚持两三周慢慢形成了阅读代码的习惯,并且也从中受益获得一些兴趣和成就感,这时候才是要定目标的时候,因为这时候,你的习惯正在养成。
当你有了一种正在建立中的习惯或者成熟的习惯,也定了具体的目标后,就可以定具体的计划了,计划就是行动指南,要一板一眼的去执行的,坚决不能马虎大意,最好是一条条的写下来,比如:
- 每周晚上 10 点钟,花 20 分钟粗读 React 的生命周期函数源码
- 每周六花 1 个小时,对本周 5 天的源码阅读及当时的笔记进行整理汇总,绘制函数关系图或者原理图
- 每周日花 2 个小时,针对本周阅读源码遇到的问题进行深入研究,及本地用代码测试模拟甚至模仿
然后再把这个规律性的事项,分解到每一天,每一天都要打一个对勾,任务才算完成,完成了要给你自己一个激励,比如连续 5 天完成,可以奖励自己周末去看场电影,如此这般会有很多像打游戏闯关的奖惩细则,最后叠加进去到每日的手机/电脑/智能手表的行程中,给与自己强力的提醒,我相信如果这样能坚持一个月,也就是将近 100 天,一个习惯大概率就能养成了,就可以定第二个目标去养成第二个习惯了。
所以习惯和目标及计划的关系是,定目标前要尽可能先养成一个潜在的习惯,把自己的底线测试出来,然后调整目标,再拆解目标形成规律性的计划,最后把计划完成跟奖惩关联起来,并通过软硬件来跟自己进行提醒的互动,这注定是一个略显单调的过程,但这一定是一个越坚持越好玩的过程,等我们的习惯训练有了雏形的时候,我们才会真正启动持续成长这件事情。
训练稳定的思维路径
我们前面对自己有了更客观的认知,也培养了完成目标的习惯,这两个前提条件就成立了,还缺第三样东西,就是稳定的思维路径,最刻板也最简单的思维方式就是穷尽式的提问,也就是前面认清自己这里,我用列举问题的这种办法,来让自己不断的接近某一个真相,那么面对任何一个困局的时候,都可以用这种方法。实际上,当你把几十个问题都回答一遍的过程中,你可以继续写下更击中灵魂的问题,而这次问题写下去的时候,往往答案就自然浮出水面。
提问的套路可以更简单一些,就是 What Why How,这个问题是什么,当前的真相是什么,为什么发生,为什么走到这个地步,基于这些原因要如何解决,无论任何事情,都逼自己去捉摸它去思考它的前因后果,慢慢会发现自己会变成一个喜欢上思考和善于思考的人,再也不是之前的那个鲁莽的毛头小子,看问题只看负面看现象只看表面。
认识自己、习惯养成、思维训练这三个要成年累月持续的做,当这些都逐渐变成长在自己身体内的一种能力的时候,所以你面临的问题都不会让你像之前那样焦虑,在做完这么长铺垫后,我们再来看如何获得持续的技术成长。
工作内外的技术成长
我们大家如果把小册所有文章看完,一定会有很多的启发,但对于技术成长这件事,还是会觉得缺少了点什么,业务忙起来什么都够不上了,连续 2 个月可能就混混沌沌的过去了,1 年可能不知不觉的过去了,又或者自己对于技术的选型始终摇摆,一个月就摇摆过去了,又或者自己想做的事情推不动,东拉西扯的一个月就又过去了,相信我,所有的这些经历我都经历过,我也相信几乎所有的工程师都有这样的经历。
开始讨论前,我必须亮出我的核心观点:成长是经常不符合预期的,请记住,它大概率是不符合预期的,原因是自己的预期本身是非常主观不准确的,同时成长只是过程的积累并不是一个很直观的结果。
基于这样的背景,我们希望达成的共识是,无论成长是否预期,我都希望有持续的成长,同时盼望奇迹的发生 - 就是远超预期的成长会发生在我是身上。
工作内的成长主要来自项目
带着这样的期望,我们回到工作内工作外会发现,所有的成长最核心的过程指标就是项目经验,工作内天然就可以沉淀,那么如何沉淀或者挖掘成长点呢?
很多人在面试中会被问到一个问题「你做的项目有什么难点」。可能大家会把思维局限在我做的这个业务有什么难的地方,我用了什么牛逼的技术去解决了业务上的什么难题。我相信大部分人不会有这样的经历,由此会觉得这个问题很难答。那么这个问题其实就可以引申为我们如何在工作中、业务中发现问题并得到成长?
如何把业务实现在大部分情况下不会是一个难题,但是如何把业务中相关的组件、逻辑等等可以复用的东西抽象出来,这就是一个难题了。你可以通过学习比你厉害的同事的代码,也可以学习这方面业内顶尖的库是如何实现的,这就是在工作中学习及成长。
在实现业务的过程中,大家肯定会使用各种各样的库及框架。那么当我们熟练使用这个库的时候,就应该尽可能的去了解常用的库的实现原理。我们可以通过文章去了解,也可以通过阅读源码去了解,这也是在工作中学习及成长。
实际上大部分工作场景中的项目,对他深度的思考持续的思考都会带来较大的技术成长,但往往我们没有耐心和动力去做这件事情,因为会有雇佣心态,也就是你付我那点工资,凭什么我想破头皮去捉摸怎么优化它,这就等于是把自己拦到了池子之外,公司付薪水(无论多少)是购买了你的时间,而你的成长是基于这些时间如何在池子里学游泳技能,池子大小水温深浅甚至形状你都很难有控制权,但蛙泳仰泳自由泳甚至闭气潜水这些都是自己说了算,如果这些都玩溜了,去任意一个池子都能如鱼得水,不是么?
前文已经介绍了很多在业务中找技术突破点或者机会的案例,再来举两个更简单的案例让大家感知下 “工作环境中成长的机会无处不在” 这个观点:
如果你的团队每次发布都要上服务器动手,除了发布系统外,可不可以有邮件和钉钉提醒,来推送给相关人,那么这个推送功能有没有可能做成一个独立的消息提醒中台系统,任何发布无论前后端都可以接入这个平台,然后在这个平台上配置应用与应用相关人,任何发布都会触发这个消息提醒服务,又贴心又实用,开发这么个系统既有前端也有后端,如果全部是自己动手做,哪怕是在下班后加班做,也岂不乐哉,因为是为工作打造的贴心功能,也大概率不会遇到阻力,同时它还有价值,自己技术也可以有更多的尝试,这样就是双赢的结果。
如果觉得上面的距离业务有点远,那可以再贴近一层,从一个项目的开发、联调、测试、上线、监控全链路来看,一定能找到无数的流程串联环节目前团队是缺乏建设的,比如小菜从开始用 RN 写 APP 实际上在下图中每个环节都有问题,但直到使用 2 年多后,我们开始意识到并开始把它的全链路工具全部开发并且串联起来,才形成了一个 APP 端算是完整的研发流,参与研发的所有同学都获得极大的技术成长:
所以工作内,不仅靠耐心,还要有不怕吃亏的心态,更要有善于发现的双眼,无数机会都在你面前,都可以持续不断的带来成长,同时给自己团队和个人带来更多效率和体验的提升。
工作外的成长主要来自尝试与思考
工作外的成长更简单易操作一些,往往就是技术储备、技术尝鲜和总结思考,技术储备一部分是为了自己为了的职业考虑,比如学习 RN/Flutter/Go 等,另一方面也可以是为了自己公司业务未来的可能性领域,比如 NodeJS/Taro/MPVue 等等,所有感兴趣的方向都可以去学习储备。
另外就是自己的想法,可以把他变成现实,比如一个行程提醒小工具,一个萝莉妹子叫起床小工具,一个自动生成周末食谱的工具等等,任何一个生活痛点和创意想法,都可以动手把它实现出来,前后端可以一起做,技术栈可以激进,所有的这些尝鲜都会带来技术视野的扩张,也会带来技术深度的沉淀。
最值得尝试的就是思考和总结,把任何自己学习的框架,看过的书,做过的项目,甚至解决过的 Bug,都可以有序的整理起来,把这些整理变成文字和图表,来强化自己对于技术的记忆,所有的这些记忆重复训练的次数越多,对于他们的理解和运营就越娴熟,往往最慢的反而是最有效的。
小结
成长是一个永恒的话题,互联网几十年来,无数的新人问成长,也无数的新人变老人,有的混成一方大拿,有的混成螺丝工头,抛开经济环境、行业趋势和公司经营,更多时候取决于我们成长的是一些学习方法,更根本上依然是我们对于自己的理解、规划和持之以恒的执行,这里面无关运气更关乎实力,不是环境带来的成长去选择你,而是你选择在任何环境中都能成长,具备选择权后,剩下的无非是规划、执行与坚持,无它!
文章转载自 https://zhuanlan.zhihu.com/p/63474720
以上是关于学习方法:如何在工作内外获得持续的技术成长的主要内容,如果未能解决你的问题,请参考以下文章