今天我们来聊聊技术广度和深度的问题
很多小伙伴会纠结自己的技术是往广度发展还是深度发展,今天我们就来说说取舍问题
有人认为程序员应该对自己的技术始终保持忠诚,有人认为集百家武学于一身才是正道,如何权衡技术深度与广度?这是大多数程序员都会面临和思考的问题。比如说做前端的,HTML、CSS、JS会了,再加上Vue和React等一些常用的东西已经足够应对目前的工作了,那么是该往前端的其他技术深入发展,还是往后端横向学习整个web开发?再比如说学习ios的,是否要学习Android呢,都是热门移动端.这个话题我一直有在思考了很久,从我做程序员的两三年后就开始思考并实践自己的想法,回过头来看,自己这些年来所坚持的学习多多少少是有一定帮助的,现在的目标是在35岁之后有自己的一番事业,起码要攒足了在家养老的资本。
一、前期以深度优先
对于深度与广度的抉择,我建议分成三个阶段来看待这个事情,也就是技术生涯的前期和中期,甚至还会出现技术生涯的末期,起码我是这样规划的。
前期也就是刚开始工作的三五年内,刚从学校出来,身上所掌握的东西还没有完全能跟得上整个行业的脚步,这个时候必然是以深度优先,用自己的技术把岗位的职责做到游刃有余。尤其是学历不佳的小伙伴,更是要对自己的技术单点只是稳扎稳打,举个例子,做Android或者ios,首先要在UI实现效果上做到无压力,这个是求职的敲门砖,其次,对于性能优化,常用的框架应该了如指掌.
我举个简单的例子吧,就拿移动端来说,一个大的项目一般都会开发3-5个月,一般是一个高级开发者带着两个中级的,同时培养一个初级开发者,工作3年内的,我们一般都是定义为初级开发者,招人的时候对于初级开发者我们就比较看重基础知识,往往会问到的是自定义UI,mvvm结构之类的.3到5年经验的,我们定义为中级开发者,就比较注重深度以及整个项目结构类的东西.所以介于初级和中级阶段的时候,我们一定要注重自己的深度,不要给自己留太多的短板.
二、中期优先考虑公司业务
虽然每个行业都需要一直钻研技术深度的人,但那样的人太少了,对于大多数程序员来说,如果你一直在某一门技术上死磕,你可能哪天失业了都还后知后觉。换家公司了,你死磕的技术可能就无用武之地了.我经常面试到一些大公司出来的大牛,在某一方面确实是很厉害,但是除了这方面好像就很普通了,跟其原因,被上家公司当成螺丝钉了,只能适配一种型号.
到了中期我建议以公司业务优先,原因有2个。
第一,30岁左右的个人情况,已经不再像早几年那样“一人吃饱全家不饿”,身上背负了更多的东西,我们看待问题也不再是那么对立,在这个年纪频繁换工作已然不适合,该考虑如何在一个地方打下汗马功劳,为现有公司创造更大的价值,提升自己在公司的地位。但是也要考虑的是,在资本面前只要看不到利润就可能随时下岗,所以要储备好其他业务需要的技术
第二,负责人的技术储备。公司盈利少,团队也过的煎熬,技术部门往往首先要做出让公司盈利的产品,而不是一开始就追求技术极致为目的,所以作为公司的老员工或者负责人,奋战在一线是必不可少的,对于技术的把控也是检验你的知识储备,你的决定代表着整个技术部门的方向,这个时候你更需要横向去学习更多的东西,你老板不一定懂技术,你拍板的事情就意味着这个项目能走多远,你更得为公司为大局着想。
所以此时,以公司业务优先,你觉得目前的业务缺少什么,你就去往那方面学习是没有错的,而且大多数努力都会给你带来正向反馈。
比如我自己在工作了第五年的时候,因为带团队的原因,我一直没有停下自己的技术学习,只是学习的方向改了,我自己本身是做Android出身的,我当时的Android技术算很不错的了,再深入进去也不是不行,虽然也能写java后端,但实际上能对工作产生的效益是有限的,于是我开始学习ios,因为当时公司里面的ios是最盈利的,再后来我又去学习了python后端,后端是整个项目的发动机,加上当时的python火的一塌糊涂。经过各方面的配合和努力,最终做出来的产品整个部门都挺满意.
于是从那之后,我想明白了,这个时期的我需要横向地去学习了,得以公司为中心点去提升自己的技术,看看自己手底下的团队缺什么,最好能自己去往那方面去涉足,因为我想对全局做更好的把控。后面又陆续学了Linux和Docker等等技术,我深知连渗透测试都自己去学,因为公司当时就没这个经费请那么一个人来,特殊时期只能理解,所以就自己上了,慢慢地,每次技术会议的风向标几乎都在我这里,也是从那时候开始,我的思维发生了很大改变,遇到合适的业务,带着目的性去学习,这时候你就会发现,只要用到的技术,就可以很快学会,融会贯通之后,折腾个半年就比那些工作两三年的单点技术还要精通了。
三、技术末期结合市场趋势
对于自己技术生涯末期其实是没有方向了的,因为这个时候我们怎么学都不能像二十多岁那样好找工作,我们必须看市场需要什么.人不可能一辈子打工的,就算你愿意,资本家也不会给你这个机会,你不可能一直便宜好用.这时候你要自己去考虑什么是市场趋势了.你可以为自己在某个领域的技术优势而自豪,但是自豪感不会给你带来太多的rmb,你要去考虑怎么才能创造更多的价值.你可以凭借自己的技术拿到年薪50w,我相信这个数目是少有的,但是别人一场直播,可能就赚到了你整个技术职业生涯都赚不到的钱.一个小店来一次双十一就可以5年不打工.可能这时小伙伴就会问,那我一开始就去做这个不是更好,都不用吃技术的苦了.但是各位发现了吗,很多电商插件,收费工具都是出自某大神工作室,一样商品爆火的背后可能是自己不经意开发的刷单软件.我有一个做金融系统的朋友,82年的,算老一辈码农了,我不知道他以前主攻的是哪门子技术,但是他好像啥都懂一点,做项目不是很快,现在是自己接新加坡或者日本的单子,收入大概在150w一年这样.一次饭局上我跟他聊天,他为了做这样的系统,他积累了好多年技术和人脉.
我前期因为面试某易的一句话,自己还学习了c和c++,但是几年都用不到一次,因为互联网主要还是围绕业务来驱动技术,学是学会了,但有什么用呢?我不能靠这个产生任何一点利润.所以说盲目地去横向扩展也是不可取的,要结合市场趋势去拓宽自己的技术栈。
总结一下
行业里面经常听到一句话,什么都会,等于什么都不会,但是只精通一样,只能在某个公司做螺丝钉,直到滑牙那一天.我建议先深后广,循序渐进,逐步提高自己的技术能力,避免前期杂而不精,后期精而不广.