在程序员的“35岁危机”到来之前,你应该做好哪些职业技术规划?
前言
以前我们谈程序员的“35岁危机”,但现在程序员的门槛越来越低,对于大部分程序员来说,30岁就已经是的危机了。
很多人定义程序员混的好不好,就是30岁之前进没进过BAT,但国内几百万程序员能在BAT的少之又少。技术是一方面,更多的时候进BAT还需要一些运气。能进去固然很棒,但进不去也大可不必觉得人生没有了希望。很多中小公司的程序员过的未必比BAT差。当然,进BAT是很多程序员的执念,这个就另当别论了
仅靠我的分享,没办法让你直接进BAT,但如果你认真看完本文,至少可以让你在程序员这条路上走的更远,生活过的不会太差。
01
首先,你要认清自己,这是在规划自己职业路径的时候,首先要明确的事情。
程序员的职业生涯大概是从20岁开始。20岁我们都在干什么?也许在校园的象牙塔里挥洒青春,也许我们已经走出了校园进入了职场
如果你的学校不是很好,那就把实践(项目)放在第一位,同时调低你的期望值否则你会很焦虑,焦虑不是件好事儿。
“ 没有一个好的学历那就拿作品来说话 ”
作品是一个程序员最好的证明,比你那些花里胡哨的简历要实在很多。很多程序员说没有好的项目这是自欺欺人,无论是参与开源项目还是自己尽可能的模仿优秀的互联网项目这都是很好的做法。
这一条同样适用于现在工作不是太好想跳槽去BAT的同学。用能放的上台面的实力来弥补学历的不足是去大厂最好的方式。如果你有一个Star在2000+的项目其实去大厂很轻松。
02
关于语言学习方面,我推荐三种语言!
强烈建议你学习Java,这对培养编程思维非常有好处,因为Java是经典编程思维的代表,而很多经典编程思维动态语言是不强调或者说非常容易忽略的。
很多后端能够很轻松的成为全栈开发者正是因为他们是从Java开始编程之路的,从Java入手再学习别的语言会比较轻松,但反过来从动态语言入手再想学习Java、Go等语言就不是那么容易了。
其实Java、C#、C++ 三者任意一个都可,一定要选择这类经典的编程语言,考虑到实用性,目前还是Java最合适,Python和JS都不是最好的首选语言,但作为第二语言都是最合适的。
这是Java中的思维:
软件工程中的思维,不论是JS还是Python其实都有这样的需求,不会因为是动态语言就不需要,很多同学看不懂源码的不是自己太菜或语法不熟悉,而是“软件工程思想”不熟悉,不懂为什么好的框架代码都要写的很复杂。
掌握多种语言是好事,但:
追求多语言不是目的,能够灵活应用多种语言,才是真正的能力。
很多在前端同学看起来非常神奇的思维和机制其实在后端编程里是非常常见的,比如一些设计模式、IOC容器等概念。
很多人说算法是好程序员和普通程序员的分水岭,这句话放在过去是正确的。但现在对于软件这种高度封装的东西:
思想和设计模式才是真正的分水岭
同时很多同学经常问我:老师,我很迷茫我不知道怎么学,我也不知道到底要学到什么程度。这个问题在我看来,它本质是因为我们本末倒置了技术。技术是一个实践性很强的东西,做技术又不是应试教育那种学习模式。
技术要服务收益,要应用于实践!
有同学说,我就是不知道该怎么将技术应用于实践。这很简单,你完全可以参与一个开源项目或者自己给自己虚拟一个项目。
03
为什么我们说30岁就是程序员的危机呢?
30岁时如果再想着单纯靠技术吃饭,基本不太现实。比你便宜的年轻人有,你30岁要求的薪水不可能和20岁的人一样。你觉得你和20岁的人比你的优势是什么?经验?很抱歉,经验其实对于程序员这个行业来说没有那么大的鸿沟。因为:
软件已经模式化了,它不是高精尖的产业,你的经验可能一文不值
所以30岁要拼的是综合素质,包括沟通能力、领导能力、管理能力、分析问题的能力,你的经验只有结合这些能力才值钱,你之前的技术积累只有结合这些能力才能继续发光发热。
很多做技术的人,心里是瞧不起做管理的人的,我以前也是觉得技术是纯粹的,管理能干啥,但随着年岁渐长,我明白了一个道理:想有更高的回报,就需要提供给企业和社会更大的价值。一个人只做技术的价值是有限的,但管理不同,管理可以让一群人的价值最大化,这也是为什么管理的薪资,肯定是要比普通技术要高不少的原因。
那这些能力怎么培养?这些看似很虚却又很重要的能力,其实并没有一个像技术一样的学习路线。很多同学说我20岁,还年轻,我应该先学技术,等我技术学好了再考虑这些问题。大错特错!
你有没有想过为什么同样的两个人,在同一家企业,一个人的薪水可以比另一个高出1倍甚至好几倍,为什么每次加薪其他人的幅度都比你高?我带过不少团队,我心里很清楚是为什么技术,绝对不是主要的区别点。都到了一个篮子里了,大家耳濡目染,朝夕相处谁还比谁的技术能差多少?其实主要还是综合素质的差异:能把各种事情处理的井井有条,又有自己的原则,简单来说就是事儿做的漂亮。
举个我身边的实例,这个文档是我团队的一个人做的。完成这样的文档我其实只说了3句话:1.有一个sql join的文档。2.样式做好点。3.逻辑清晰点。
从两个角度来想,
一,你是leader你喜欢这样的员工吗
二,如果你来做你能做到这个程度吗
如果你有这样的能力不会愁未来,这就是综合素质的体现。其实各行各业都对综合素质要求很高,但往往程序员这个职业有点另类,大多数人不看重综合素质只是一味的猛学技术。
你可以仔细观察很多高薪的人,他们都有一个共同的特点,就是能把事做好。
其实技术这个事儿越到后面越不值钱是很正常的。其他很多职业是先付出才有收益,但技术不同,它只需要付出少量的精力突击学习就能找到一份还可以工作,这和其他需要前期投入很多成本的职业不同。这个行业门槛偏低享受了低门槛的优势就必定要在未来付出相应的代价。
那我们究竟该如何面对未来呢?
程序员在未来大抵有以下4个方向
1.技术一条路走到黑
2.半技术、半管理的复合人才
3.自主创业
4.直接转行
后面我会带这大家一条条分析。
第一条能在技术上一条路走到黑的少之又少。能走这条路的很大程度上是真需要一定的天赋的,大多数人走不到黑就爬不动了。
第二条是去兼具技术和管理
第三条这个不多说了,能自主创业成功的那是你的能力。如果你有这个能力我觉得基本不需要听其他人的意见,你必定有很强的自我选择和分析能力。
第四条也有很多人走但大多数是被迫无奈只能转行。
最实际的,也被大多数前辈证明确实可行的,只有第二条。有很多同学说做纯管理不是不可以,只是没有优势!你20岁-30岁都在为技术奋斗,这些积累需要物尽其用的利用起来,技术是你傍身的优势不能丢掉。只有兼具技术和管理才是你最大的优势。
这就是为什么前面我特别强调技术不是唯一,把事做好才是你的目标。我们很多同学体会不到是因为你从来都只站在一个执行者的角度去看待问题和完成任务,从来没有站在一个leader的角度去看待问题。你必须和你的leader保持同理心。时间长了你自然就具备了一定的管理和分析能力。
把事情做好的一个先决条件是你有一定的大局观和分析能力,这一点非常重要!这也是为什么很多人到了30岁后无法转技术管理的原因。你20多岁的时候只知道每天耕耘自己的一亩三分田,做前端的永远不学服务端,做服务端的永远不了解前端你,如何能有全局的分析能力和大局观?
前端这个称号其实是人家给你画的圈,不应该成为你自己的枷锁。其实在我心里从来就没有全栈,在过去本身就没有前后端之分,何来全栈之说?很多同学说过去不分前后端是因为没有那么多的框架要学习,这是本末倒置!还是抱着考试的态度在学习。
在我看来现在的前端比过去简单太多了,开发一个项目的成本比过去低太多了。jQuery时代是没有组件化也没有数据绑定的,想想只这两点能节约多少成本,以前你需要自己用原生的JS模拟类这个概念,因为那时候没有ES6,想想现在的ES标准。
不要给自己贴上前后端的标签 因为你扼杀了你自己的可能性
事实上现在技术的发展趋势也是模糊了前后端的界限这个就不用我再多说了。
走第二条路还有一点非常重要——注重细节。一个产品的细节才是灵魂,好的程序员和不好的程序员其实在技术本身上差异不大,但是好的程序员非常注重细节。如果你写代码的时候努力去做好细节,那么长期积累下来学习的效果是非常明显的,进步也会非常的快。如果你总是觉得差不多就行了,写出来的代码千疮百孔,那我建议趁早放弃编程。
最后强调一点,学习太多方法论不是一件好事,以解决问题为目标才是最好的方法论,没有之一。我们很多同学特别热爱去看方法论,方法论本身没错但问题是我们没有坚持下去的毅力,也没有这个执行力。方法论的前提是你能很好的执行它。所以我们需要有驱动,解决问题就是最好的驱动力。太多同学迷失在方法论的探索里,永远在找方法就是永远的停滞不前。
说了这么多,肯定有人在心里问,道理我知道了,怎么落地,怎么实操呢?
捷径就是向比你厉害的人学习,在实战项目中学习,突破“端”的界限去学!
最后
文章的经验分享虽然到这里就结束了,不过小编为大家准备了Java相关的实战文档作为文末的福利,希望可以给程序员朋友们提供到可以有所提升的帮助!均免费分享,大可不用担心。
获取方式:转发+关注后后台私信【实战文档】可免费领取!