大家简单做一做,主要crud写一下功能,最多现在spring cloud流行了,上一下拆成微服务的就够了。
然后这套系统就稳定支撑你公司的业务了,那你接触不到很大的技术挑战,所以技术进入停滞状态,不是很正常么?
或者你做一些传统的软件开发,比如说建筑类软件,办公自动化软件,类似这种的。总共就几十个人用一个系统,或者几百人用,那你就更是如此了。
可能都不需要spring cloud,直接单块系统,单机部署,就是在里面填充业务代码就好了。
所以根本原因,就是很多同学平时的工作环境,他没有什么技术挑战,所以只要把系统技术做的简单一些,低成本就可以支撑公司业务了,那既然这样,当然技术就进展很缓慢了。
然后可能你工作了八年十年,技术广度还可以,对流行的技术自己都看过一些书,简单用过,玩过demo。
你的项目经验积累了不少,但是都是一些各个传统领域的系统业务理解较为深刻,没有极高技术挑战的项目经验。
有的人工作时间长,可能就是带过一些人,有过一些带团队的经验,能管人。
大概就是如此了,每次换工作,还是只能换类似的公司,干类似的技术,依然没有进步,依然是类似的项目经验。
所以大伙儿先梳理清楚,迷茫的根源究竟在哪里。
(3)追求卓越,自己设立技术挑战
====================
通常来说,我个人站在公司角度是很反对架构的过度设计的,因为平白浪费很多时间,而且很多架构过度复杂没有必要。
但是如果是站在个人的职业发展角度而言,那么你的leader必须要有对技术追求卓越的思维。或者你是leader的话,就得有对你的团队技术追求卓越的品质。
什么叫追求卓越呢?
举个例子,现在你开发了一款办公自动化系统,服务了某个公司,几百人在用,那么技术一般,就是一个单块系统,直接Spring MVC + Spring + MyBatis就搞定了。大家都做着没意思。
好,现在leader为了大家的幸福和未来,咬咬牙说:
几个月后,大家研发了一套系统,完成了测试,系统集成了缓存集群、MQ集群、分库分表技术,还有很多其他的一些东西。
这个时候领导就想办法了,能不能跟老板建议一下,咱们就把产品做成SaaS云的模式呢?然后是不是可以就把这套系统给部署到生产环境里去?
到此为止,就通过一个例子,给大家阐述了一下,自己在公司里,如何通过想办法不断的追求系统的卓越,提高研发效率,支撑也许可能会存在的更高的并发量,更多的数据量,尽可能把系统做的更好一些。
多想想为了解决自己设想的一些技术挑战,如何尽可能把一些业界常用的技术都学习一下,比如缓存、消息、分布式、微服务、大数据,等等。
然后都尽可能进行相关的实践,积累相关的项目经验。
实际每个人在落地的这个过程的时候,方式肯定是不一样的:有的人也许人微言轻,只能对自己负责的模块设想一些技术挑战,然后只能自己在本地拉一个公司代码分支,尝试对这些分支加入一些技术,自己练习思考。
还有的人,可能是个小leader,无法左右公司产品发展方向,但是可以尽可能跟上级沟通,阐述自己对系统架构追求卓越的一些构想。
然后,争取到一些时间,尽可能把系统多融入一些技术,给做的好一些。
每个人都有每个人的方式,但是归根到底一句话:如果你本身工作没有技术挑战,那么尽可能多给自己设立一些挑战,多学一些技术,多做一些尝试和实践。
这总是可以尽可能帮助你在一定程度上提高技术,扩展技术知识的。
在这个阶段,我见过最多的人犯的最大的一个错误就是:觉得自己这样倒腾一些技术是没用的,没有实际的真正的经验。
然后他们着急忙慌,心浮气躁,自怨自艾,总想着必须得先进一个好的公司,才能锻炼技术。
实际上,这是一种很浮躁的想法,你要进好的公司锻炼,你必须先打磨一下自己的技术,然后才能有资本去一家更好的公司。
(4)幻想一步登天?那只是你的黄粱美梦
=======================
很多人多学了一些技术,有了一些经验,很容易开始有点膨胀,老是想着一步登天,一下子就进入BAT。
关于这个,其实是有类似的一些成功经历,比如有的人是大专学历,通过自己的努力学习,加上一些机缘巧合,直接一下子就从中小公司跳入了BAT。
但是就现实情况来看,不是每个人都一定可以一步登天,复制这个经历的。
在你学习了一些技术,同时自己多做了一些尝试,积累了一定的经验之后,此时应该做的是:做最坏的打算,抱最好的希望。
你完全可以去试试BAT的面试,TMD的面试,尽可能去争取机会,但是如果没面上也无所谓。
你可以降低期望,人只要跟自己比就好了。
比如说你现在在某小型的传统外包软件公司,那么接下来如果你能面进一家小型创业互联网公司,有个几百万用户量,日活用户有几十万,比之前的公司技术挑战多一些,用的技术也更多一些,那么你就可以去了。
只要你每一步跳槽,都比之前好,都让自己有进步,那么整体的大方向就是没错的。
也许你先进一个创业型互联网公司,然后下一家就可以进入一个市值几十亿美金的上市互联网公司,再下一步就可以进入BAT。
在这个阶段我见过很多人犯的最大的错误就是:老是觉得自己刚学了一点东西,就必须立马进大公司。
这些同学往往心态着急的不行,而忽略了自己的学历、背景、经验导致了起点较低。能立马进BAT当然很好,但是有时候机缘巧合缘分没到,进不去也正常。
在这个阶段最需要做的,就是跟自己比,别跟别人比,只要每一次跳槽都比上一次好,公司更大,薪资更高,职位更高,技术挑战更大,就可以了。
(5)不断提升自己,最后进入BAT
=====================
一旦你开始做到跳槽进入一家比之前更好的公司,有更高的技术挑战,那么公司本身的技术挑战就会促使你快速成长,还是举个例子吧。
比如说你本来就在做传统软件的开发,用的都是单块系统涉及的一些技术,就是简单的spring mvc、spring、mybatis等技术做CRUD的业务开发。
但是呢,你通过追求卓越,自己业余不停的学习技术,然后对自己负责的一些模块多设立了一些技术挑战,自己构思了很多更高挑战的场景下,可以给自己的模块加入哪些更高阶的技术。
接着你带着自己学习的一些技术,还有积累的一些实践经验和思考,进入了一家创业型互联网公司。
这家公司的好处就在于,互联网公司技术氛围更好,比如zookeeper、redis、rocketmq、sharding-jdbc,等各种技术,在公司生产环境的系统里,都有落地和使用。
那么你此时是不是就不用停留于一些技术挑战的构思,可以开始真正做一些有点技术挑战的工作了。
但是,此时你还是需要继续不停的学习技术,学习更多的架构上需要的技术,深入的学习技术,同时积累实践经验。
然后带着这份工作经历,同时加上你不断加强的技术学习,你进入了一家比如30亿美金估值的独角兽公司。
这家公司有2000万用户,日活用户达到百万级,高峰并发量可以过万,每天数据库里日增数据量达到了数十万。
此时你开始真正接触一些所谓的:高并发、高可用、高性能、海量数据的实际处理。
基于你开发的业务系统,你开始更多的实践,同时你还对各种涉及到的技术有了更加深入的研究,比如对一些核心中间件系统进行了源码级别的阅读和研究。
最后你终于等到一个机会,BAT里某家公司让你去面试,经历了四五轮面试之后,对方给了你一个offer,是年薪40万的高级Java工程师的职位。
然后你进去之后,可以在最顶尖的互联网公司里学习开发流程、规范、架构,接触到最大规模的用户量,每天都有解决不完的技术挑战,在这个过程中,你又可以继续成长。
最后可能你再次跳槽,就可以进入TMD中某一家,拿下技术专家的offer,在大公司里拿下技术专家的职位,带一个团队,达到人生第一个巅峰。
接着你再跳槽,可能一些创业公司就开始挖你去做一些技术管理层。
读者福利
分享一份自己整理好的Java面试手册,还有一些面试题pdf
不要停下自己学习的脚步
最后可能你再次跳槽,就可以进入TMD中某一家,拿下技术专家的offer,在大公司里拿下技术专家的职位,带一个团队,达到人生第一个巅峰。
接着你再跳槽,可能一些创业公司就开始挖你去做一些技术管理层。
读者福利
分享一份自己整理好的Java面试手册,还有一些面试题pdf
不要停下自己学习的脚步
[外链图片转存中…(img-IWynQRs4-1714554198251)]
[外链图片转存中…(img-FEy9M8oz-1714554198252)]