回首我做软件这8年,如何集齐百项技术栈
Posted 程序员涂小哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回首我做软件这8年,如何集齐百项技术栈相关的知识,希望对你有一定的参考价值。
时间走的真快,一转眼,我做软件开发就要满8年了。
8年的时间里,虽然从未停止过学习,但是奈何资质所限,至今仍然是菜鸟一个。
这8年的时间里,经历了太多的技术,也认识了很多的朋友,有喜乐,有愤慨,有兴奋,也有遗憾。
回首过去,展望未来,心中总会有丝丝的惶恐和担忧,也不知唯我如此,还是众生皆是。
第一年,2015
2015年,确切的说,应该是2014年,那是一个已经记不得是什么样天气的季节,我带着一身自以为天下无敌的技术初入江湖。
惶恐,兴奋,也充满了希望。
这些技术分别是java
、spring
、spring mvc
、serverlet
、struts2
、jsp
、mysql
、mybatis
、css
、html
、javascript
、tomcat
、myeclipse
。
理想很丰满,现实很骨感,真正开始做任务的时候,我才知道上边的这些技术自己完全没法灵活运用。
我知道这个技术,我也知道某些技术点怎么用,但是我不知道这些技术点应该在什么时候用。
尤其是在已经运行几年的、业务已经比较复杂的项目中,每每接收到一个新任务的时候,总是焦头烂额,没有半点思路。
所以这一年的进步确实是很大的,是迈出从理论到实战的第一步,渐渐的开始培养了自己的一些思考方式,一种有时候没法说明白的直觉。
除了从理论到实战的进步,在这个前后端分离的项目组中,我也确定了后端发展路线,一个接受上级安排的发展路线。
于是我的技术栈由原来的前后端都包括,变成了java
、spring
、spring mvc
、serverlet
、struts2
、jsp
、mysql
、mybatis
、tomcat
。
于此同时,也接触到了一些新的后端技术mongodb
、svn
、maven
、nginx
、eclipse
。
不过,虽然是做后端,但是由于总是要和前端打交道,加上自己的兴趣,我还是自己业余学了一些前端的新的技术,如当时用的angular js
,node js
。
在这个阶段,我几乎相当于从零出发,各方面都是绝对的成长和进步。
但是对我影响最大的技术应该是mongodb
,刚开始的时候还是2.x的版本,在当时网上相关技术文档还很少的时候,我因为工作需要,开始研究副本集和数据库升级。
这个过程中有学习能力的锻炼,有思维方式的锻炼,也有技术上找回的自信。
这一年过去,我的技术杂货间
由原来的14
项变成了20
项,也初步了分出了一些主次。
第二年,2016
转眼来到了2016年,这一年,我还在原公司。
不得不说的是,我很幸运,幸运的是在入行的时候遇到的领导和同事都非常友好和包容。
和我一起进公司的30人,到这一年结束只剩下了4个,大部分换了公司,小部分换了行业。
我不知道他们都经历了什么,有的是自己走的,有的是被劝退的。
但是对于我而言,如果不是当时领导和同事的友好及包容,或许我也会和他们一样,换公司或者换行。
因为我心里十分清楚,当时的我和他们在技术和能力上并没有太大的区别。
很多时候,好的结果可能并不是因为自己有多优秀,而是因为身边有优秀的领导和同事,是他们成就了自己,是他们造就了自己。
虽然还是那个公司,也还是那个项目组,但是不同的是我们项目组有了更多的项目。
技术永远是为业务服务的,所以不同业务的项目中,所用的技术自然也会有所不同。
于是乎,在这一年里,我的技术栈又有所变化,在原有的基础上又增加了linux
、activiti
、poi
、sms
、rabbitmq
、md5
、java email
、web service
、spring schedule
、redis
、wordpress
、word
、excel
。
在这些新增的技术中,有的是由于工作所需,有的是由于业余爱好,有的是直接技术相关的,有的却是软技能。
在摸索实现activi
自定义流程的过程中,和上一年学mongo
极其相似,也是文档极少,很多时候不能不断自己思考和试错,培养了学习能力、思考能力,也锻炼了自己的耐心。
而rabbitmq
、redis
这两个中间件,也让我在除了mysql
之外,打开了中间件技术中新的世界,也使我对于技术架构有了更多的理解。
同时,虽然我们是前后端分离,但是当时运维的界限却不是很明确,因此在多次的项目部署过程中,对于linux
部分常用的一些操作,我已经到了相忘也忘不了的地步。
而word
和excel
这两个办公软件的大量使用,使得我在这方面的熟练度,在之后很长一段时间里都比很多人具有优势。
一年12个月,我这一年的技术栈就新增了13项,我的技术杂货间
也由原来的20
项变成了33
项,假如这是我财富的增长速度,那该多好。
软件之路学无止境,在这里初露锋芒。
第三年,2017
辗转间,来到了2017年,年中的时候我换了工作。
其实我是不想换的,从某种程度上说,我是一个有些偏安逸的人,有好的领导,有好的同事,有自我感觉良好的工资,我为什么要换呢。
但是没有办法,由于公司经营问题,不止是我,大家都只能选择离开。
不过在离开之前,领导安排预研了一些新技术,例如springcloud
、springboot
,很幸运的是,这两个技术现在越来越流行。
新的这家公司,和我第一家一样都是外包乙方,而且甲方都是同一个,所以技术方面多少有些重合,例如
java
、spring
、spring mvc
、mysql
、mybatis
、mongodb
、svn
、maven
、tomcat
、spring schedule
、redis
、eclipse
、word
。
之前的33项技术栈中,重合的大概13项,还有20项无奈的变成了库存。
至于这些库存到底是暂存还是会永久封存,此时此刻,难以预料。
能够确定的是,在这重合的大概13项外,新的公司中我的技术栈进一步扩容。
在这里,我又接触和学习了jms
、sybase
、oracle
、jpa
、sonar
、visio
、active mq
、jenkins
、jmeter
、聚合支付和统一支付
。
新的这些技术中,大部分只是拓展,例如jms
和active mq
是拓展了消息中间件的具体技术,之前已有rabbit mq
。
sybase
和oracle
都是关系型数据库,之前已有mysql
。
jpa
是数据库框架,之前也有mybatis
。
所以这里收获更大的,则是jenkins
、sonar
、jmeter
、visio
和支付
。
支付
从专有业务上拓宽了我的视野,visio
则让我的软技能更上层楼,而另外三个,则让我对一些规范的软件项目流程有了更深入和全面的理解。
在此之前,我知道的部署就是直接手动打包上传,然后java -jar
,压根儿没听过自动化部署和jenkins
。
而测试,自己也就只知道单纯的功能上的点点点,所谓的性能测试和jmeter
,一概不知。
这可能也是由于上一家公司有专门测试团队做这事,而我也没有去了解过。
实际上,我记不得在这里是否有用过junit
,或许有。
因为我记得我是在这里知道的sonar
,一般sonar
里可能会有junit
覆盖率相关的内容,正是因为sonar
,我才开始了解各种代码规范。
只是对于junit
,我实在是没有太多的印象。
这一年,也可能是和下一年的上半年一起,我的技术杂货间
由原来的33
项增加到了45
项,忍不住再次感叹,假如这是我财富的增长速度,那该多好。
在这45
项中,有23
项时不时会用一下,另外的22
项,不论愿意或者不愿意,都只能暂时解甲归田。
第四年,2018
在技术更迭的长河中,不知岁月流逝,恍惚中又到了2018年。
或许是我命好,也或者是运气好吧,在这家公司中,我的领导和同事依然非常友好和包容,尤其是当时的领导,给了我很多的帮助和信任。
但是,在深圳呆了许久,总有思乡的念头,机缘巧合之下,在这一年年底我从深圳回到了武汉,工作自然也换了。
武汉的新公司,是第一家公司的同事推荐的,这个同事热情、乐观、幽默,犹记得在第一家公司他请我吃的饭,到如今我都还没有请回去。
在换工作之前的大半年,由于项目的升级,我用上了前一年前领导让我预研过的技术springboot
和springcloud
,使这两项技术也从理论进入到了实战阶段。
同时,有了四年经验了,总感觉需要高大尚一些,所以也开始了设计模式
的学习,可惜的是,除了单例模式,其他的似乎一直都没怎么用到项目中来。
换工作后,由于是年底换的工作,这一年中剩下的一点时间基本就是适应环境。
再加上入职的第一个任务是做一个activiti
工作流相关的项目,所以相当于是把2015年用的技术又重新从杂货间
翻了出来。
不过,环境的改变必然带来认知的改变,所以技术栈中增加了禅道
、postman
于是,这一年结束,我的技术杂货间
中从45项
变成了48
项,这也是我入行以来,增量最少的一年了。
第五年,2019
一路颠簸,时间的列车就开进了2019年。
这一年,大概是我在那之前的工作时间中,最有成就感的一年。
当时的团队在一片和谐中发展壮大,我想着可能能在那里干一辈子吧。
当时的业务是一汽红旗车联网,无论是从基于实体行业而言,还是从红旗品牌来说,我的心里都充满了自豪感。
那段时间,我觉得工作特别的有意义。
记不得多少次半夜十一二点还在乐此不疲的开会,也记不得多少次下班了自己在住的地方免费忙工作的事。
心甘情愿,不怨不悔。
在这一年里我参与了很多个项目,也就用到了很多技术,之前技术栈中的java
、mybatis
、linux
、svn
、maven
、nginx
、tomcat
、spring schedule
、redis
、springcloud
、springboot
、jms
、sybase
、jpa
、sonar
、visio
、eclipse
、jenkins
、word
、excel
、mysql
等等二三十项统统派上了用场。
不仅如此,技术栈中又增加了idea
、git
、vue
、element ui
、CA
、https
、keyclock
、oauth2
、jwt
、kafka
、docker
、车联网
。
我的技术杂货间
又从48
项暴增到了59
项,如果这是财富增长的速度,那该多好啊。
遗憾的是,这代表的不是财富增长速度,而是我技术上欠的债,又变多了。
工作中的事接连不断,技术债也越来越多,晚上十一二点还一直在电脑旁的场景,已经变成了家常便饭。
但是我却很少觉得累,因为心中那份说不清道不明的成就感和自豪感。
只是,好景不长,世界并不会因为我的愿望和成就感而做出太多的改变。
大概是因为公司体制和类型的原因吧,说好的一期、二期、三期,结果一期才做完就内外失火,最终好好的团队分崩离析。
第六年,2020
伴随着上一年问题,新的一年来了,2020年继续人心惶惶。
同时,流言四起,要被开掉和背锅的说法此起彼伏,而我也被调到了另一个项目组,虽然也还是车联网,但是已经不再是一汽红旗。
突然间,犹如泄了气的皮球,虽然还没有失业,但是却似乎更甚失业,那是真的付出了心血的项目,这就没了,毫无办法。
我被调到的新项目组中,还有我过去一年多以来的直接领导,以及那个介绍我到这个公司的同事朋友,他们没做多久就离开了这个公司。
在新的项目组中,事情就没有之前那么多了,有一段时间我的工作量很不饱和,于是在新领导的安排下,学起了hadoop
、hbase
、hdfs
、flink
。
这样算来,我似乎也是会大数据的,只是这些技术暂时都还没有在实际项目中用过,仅存在于我的demo以及博客中。
这一年,并不顺利,最终在年底,也就是在这个公司刚好做满了两年的情况下,我在一片惶恐中离职了,然后去了之前一个领导和别人合伙开的创业公司中。
在那个做了两年的公司中,留下了太多的记忆,领导和同事一如既往的友好和包容,不论是在一开始的项目中,还是在后来的项目中,领导和同事始终都对我不错。
虽然最终的结局不如人愿,但是公司上层的战略问题,也是我接触不到的级别,太多人无能为力。
离开那里之前,我的技术杂货间
从59
项增长到了63
项,技术债又变多了,但是更糟糕的事却不是技术债。
第七年,2021
2021年,我再也不是外包了,终于变成了自研。
新的公司比较小,一个公司的人还没有之前项目组的一半,可能是由于前领导合伙创业的原因吧,我看起来被委以重任,是后端开发,是技术组长,也是技术主管,还是架构师。
只是,可能是因为我并不具备创业思维吧,我看到的只是我有一个不能管的后端、一个不需要管的前端、然后就管我自己。
与此同时,在我入职之前,由于自己的粗心,我竟然没有谈工资。
然后在我上一家提出了离职之后才收到了offer,发现工资比之前还低了一些。
虽然最终经过协商,我的工资恢复到了税前和上家公司一样,但是需要试用期,试用期打折,也没有了公积金。
可能正是因为一开始就不顺利吧,所以我始终无法静下心来,于是又重新找了工作。
幸运的是,两个同事推荐,一个在武汉,一个在广州,两个都通过了。
起初,我是准备就在武汉的,所以去了武汉那个新公司上班。
但是令我至今愧疚的是,我去那个公司就只上了一天就跑路了,给当时介绍我的前同事朋友造成了不好的影响,也给那家公司人事同事造成了一些麻烦。
一直想着回武汉了请吃饭的,一年多来却一直没找到机会。
之所以干出了这样的事,一方面是广州这边给的工资确实多很多,另一方面,是因为广州这边的甲方领导多次联系我,表达了足够的诚意,即使我说我已经去入职了,他依旧希望我过来。
话说回来,在那家我一堆头衔的创业公司中,短短的三个月,虽然不是很愉快,但是我依然学到了一些新的东西。
小公司追求的就是快,所以在那里我知道了一些成型的快速开发工具,如jpress
、jboot
、若依
以及nacos
,还有网络穿透工具
。
我曾从南回到北,今又自北再归南,我的技术杂货间
也从63
项涨到68
项左右。
新的公司挑战巨大,是个需要英语的外企,而我在读书阶段英语及格的次数也就一只手左右。
这对于我,是挑战,也是冒险,其实心里完全没谱。
新公司新项目,在我高达68
项的技术栈中,匹配的有java
、mybatis
、linux
、maven
、springcloud
、springboot
、git
、idea
、jenkins
、oracle
、mongodb
这11
项。
在现有技术栈的基础上,新公司很多流程和工具及内部系统都需要学习,例如teams
、service now
、zoom
、slack
、jabber
、qseat
、linkup
、scw
、timesheet
、onenote
。
这些工具和系统有的很简单,有的也还是需要花时间熟悉。
同时,这个项目中还需要用到其他的技术或对接系统,例如gsd
、cyberflows
、jira
、confluence
、lambda
、java stream
、webflux
、react js
、cucumber
、springcloud limit
、devops流程
、junit
等等。
这里需要说明的是,对于junit
,其实我是很早就知道,也用过的,但是对于这里的junit
来说,我觉得之前的那些根本不能算数。
截止这里,如果包括那些内部工具软件的话,我的技术杂货间
再一次暴增,从68
项直接涨到90
项。
即使不算那些工具软件,也从68
项增长到了80
项。
当然了,一直以来,其实都还有一些没有算上,有的是过于简单,有的是我虽然知道,但是连demo都没有写过的,例如crt
、robo 3t
、putty
、xshell
、vscode
、webstorm
、xmind
、paho
、navicat
、sql develop
、rbac
、springsecurity
等等,如果这些都算上,就已经破百了。
英语问题,以及如此多新的东西需要熟悉,还有全新的业务领域,这一年其实很是焦头烂额。
幸运的是,我又遇到了好的领导和同事,我们小组最多时候七八个人,除了我,每一个英语都能流利交流。
他们特意把需要直接英语语音交流的任务分给了别人,尽量给我英语要求低一些的任务。
与此同时,面对我诸多小白一样的问题,他们每一个都不厌其烦的解释和指导。
想当初,我连正确的junit
都不会写,也不知道他们当时是否有怀疑我是经验作假。
第八年,2022
忙碌的一年过去,来到了疫情不断地2022年。
经过前一年的努力,已经熟悉了大部分的流程和工具。
同时,背单词,看美剧,以及每周的印度经理会议,我的英语也有了一些进步,印度经理说的话也已经能勉强听懂可能有一半左右。
只是,我的英语之路艰难,能听懂的依旧太少,也还一直无法张嘴即时交流,还只能说一些提前准备过的内容,但愿在坚持学习中,今年能够有所突破。
今年快过去一半了,技术栈上增长不多,一是对于之前的内容不断还债,像jenkins
、react
、git
、thread
、source code
这些。
另外就是在java
本身的技术上,由于开年的一个性能优化任务,使得在jvm
调优方面算是有了一些小小的经验,也实际了解和使用了jmap
、jprofiler
、jstat
、jvisualvm
等jvm调优工具。
同时,在业务上也在进一步针对性的学习,对于目前的工作以及我自身来说,这个可能比技术更加重要。
马上就满8年了,我的技术栈高达百项,同时也是技术债高达百项。
对于现在要用的技术来说,可能只是30项左右,而这30项左右,任意一个拿出来,我都没有信心说它有8年的水准。
或许,说5年我都心虚。
有人说量变产生质变,但是放在这里似乎并不适用。
路漫漫其修远兮,在还债的路上不断增加新债,也在还债的路上不断的寻找希望。
生命不息,奋斗不止,谋事在人,成事在天。
奋斗为了什么,为家人更富足、为亲朋更便利、为子孙更自由!
以上是关于回首我做软件这8年,如何集齐百项技术栈的主要内容,如果未能解决你的问题,请参考以下文章