回首我做软件这8年,如何集齐百项技术栈

时间走的真快,一转眼,我做软件开发就要满8年了。

8年的时间里,虽然从未停止过学习,但是奈何资质所限,至今仍然是菜鸟一个。

这8年的时间里,经历了太多的技术,也认识了很多的朋友,有喜乐,有愤慨,有兴奋,也有遗憾。

回首过去,展望未来,心中总会有丝丝的惶恐和担忧,也不知唯我如此,还是众生皆是。

第一年,2015

2015年,确切的说,应该是2014年,那是一个已经记不得是什么样天气的季节,我带着一身自以为天下无敌的技术初入江湖。

惶恐,兴奋,也充满了希望。

这些技术分别是javaspringspring mvcserverletstruts2jspmysqlmybatiscsshtmljavascripttomcatmyeclipse

理想很丰满,现实很骨感,真正开始做任务的时候,我才知道上边的这些技术自己完全没法灵活运用。

我知道这个技术,我也知道某些技术点怎么用,但是我不知道这些技术点应该在什么时候用。

尤其是在已经运行几年的、业务已经比较复杂的项目中,每每接收到一个新任务的时候,总是焦头烂额,没有半点思路。

所以这一年的进步确实是很大的,是迈出从理论到实战的第一步,渐渐的开始培养了自己的一些思考方式,一种有时候没法说明白的直觉。

除了从理论到实战的进步,在这个前后端分离的项目组中,我也确定了后端发展路线,一个接受上级安排的发展路线。

于是我的技术栈由原来的前后端都包括,变成了javaspringspring mvcserverletstruts2jspmysqlmybatistomcat

于此同时,也接触到了一些新的后端技术mongodbsvnmavennginxeclipse

不过,虽然是做后端,但是由于总是要和前端打交道,加上自己的兴趣,我还是自己业余学了一些前端的新的技术,如当时用的angular js,node js

在这个阶段,我几乎相当于从零出发,各方面都是绝对的成长和进步。

但是对我影响最大的技术应该是mongodb,刚开始的时候还是2.x的版本,在当时网上相关技术文档还很少的时候,我因为工作需要,开始研究副本集和数据库升级。

这个过程中有学习能力的锻炼,有思维方式的锻炼,也有技术上找回的自信。

这一年过去,我的技术杂货间由原来的14项变成了20项,也初步了分出了一些主次。

第二年,2016

转眼来到了2016年,这一年,我还在原公司。

不得不说的是,我很幸运,幸运的是在入行的时候遇到的领导和同事都非常友好和包容。

和我一起进公司的30人,到这一年结束只剩下了4个,大部分换了公司,小部分换了行业。

我不知道他们都经历了什么,有的是自己走的,有的是被劝退的。

但是对于我而言,如果不是当时领导和同事的友好及包容,或许我也会和他们一样,换公司或者换行。

因为我心里十分清楚,当时的我和他们在技术和能力上并没有太大的区别。

很多时候,好的结果可能并不是因为自己有多优秀,而是因为身边有优秀的领导和同事,是他们成就了自己,是他们造就了自己。

虽然还是那个公司,也还是那个项目组,但是不同的是我们项目组有了更多的项目。

技术永远是为业务服务的,所以不同业务的项目中,所用的技术自然也会有所不同。

于是乎,在这一年里,我的技术栈又有所变化,在原有的基础上又增加了linuxactivitipoismsrabbitmqmd5java emailweb servicespring schedulerediswordpresswordexcel

在这些新增的技术中,有的是由于工作所需,有的是由于业余爱好,有的是直接技术相关的,有的却是软技能。

在摸索实现activi自定义流程的过程中,和上一年学mongo极其相似,也是文档极少,很多时候不能不断自己思考和试错,培养了学习能力、思考能力,也锻炼了自己的耐心。

rabbitmqredis这两个中间件,也让我在除了mysql之外,打开了中间件技术中新的世界,也使我对于技术架构有了更多的理解。

同时,虽然我们是前后端分离,但是当时运维的界限却不是很明确,因此在多次的项目部署过程中,对于linux部分常用的一些操作,我已经到了相忘也忘不了的地步。

wordexcel这两个办公软件的大量使用,使得我在这方面的熟练度,在之后很长一段时间里都比很多人具有优势。

一年12个月,我这一年的技术栈就新增了13项,我的技术杂货间也由原来的20项变成了33项,假如这是我财富的增长速度,那该多好。

软件之路学无止境,在这里初露锋芒。

第三年,2017

辗转间,来到了2017年,年中的时候我换了工作。

其实我是不想换的,从某种程度上说,我是一个有些偏安逸的人,有好的领导,有好的同事,有自我感觉良好的工资,我为什么要换呢。

但是没有办法,由于公司经营问题,不止是我,大家都只能选择离开。

不过在离开之前,领导安排预研了一些新技术,例如springcloudspringboot,很幸运的是,这两个技术现在越来越流行。

新的这家公司,和我第一家一样都是外包乙方,而且甲方都是同一个,所以技术方面多少有些重合,例如

javaspringspring mvcmysqlmybatismongodbsvnmaventomcatspring schedulerediseclipseword

之前的33项技术栈中,重合的大概13项,还有20项无奈的变成了库存。

至于这些库存到底是暂存还是会永久封存,此时此刻,难以预料。

能够确定的是,在这重合的大概13项外,新的公司中我的技术栈进一步扩容。

在这里,我又接触和学习了jmssybaseoraclejpasonarvisioactive mqjenkinsjmeter聚合支付和统一支付

新的这些技术中,大部分只是拓展,例如jmsactive mq是拓展了消息中间件的具体技术,之前已有rabbit mq

sybaseoracle都是关系型数据库,之前已有mysql

jpa是数据库框架,之前也有mybatis

所以这里收获更大的,则是jenkinssonarjmetervisio支付

支付从专有业务上拓宽了我的视野,visio则让我的软技能更上层楼,而另外三个,则让我对一些规范的软件项目流程有了更深入和全面的理解。

在此之前,我知道的部署就是直接手动打包上传,然后java -jar,压根儿没听过自动化部署和jenkins

而测试,自己也就只知道单纯的功能上的点点点,所谓的性能测试和jmeter,一概不知。

这可能也是由于上一家公司有专门测试团队做这事,而我也没有去了解过。

实际上,我记不得在这里是否有用过junit,或许有。

因为我记得我是在这里知道的sonar,一般sonar里可能会有junit覆盖率相关的内容,正是因为sonar,我才开始了解各种代码规范。

只是对于junit,我实在是没有太多的印象。

这一年,也可能是和下一年的上半年一起,我的技术杂货间由原来的33项增加到了45项,忍不住再次感叹,假如这是我财富的增长速度,那该多好。

在这45项中,有23项时不时会用一下,另外的22项,不论愿意或者不愿意,都只能暂时解甲归田。

第四年,2018

在技术更迭的长河中,不知岁月流逝,恍惚中又到了2018年。

或许是我命好,也或者是运气好吧,在这家公司中,我的领导和同事依然非常友好和包容,尤其是当时的领导,给了我很多的帮助和信任。

但是,在深圳呆了许久,总有思乡的念头,机缘巧合之下,在这一年年底我从深圳回到了武汉,工作自然也换了。

武汉的新公司,是第一家公司的同事推荐的,这个同事热情、乐观、幽默,犹记得在第一家公司他请我吃的饭,到如今我都还没有请回去。

在换工作之前的大半年,由于项目的升级,我用上了前一年前领导让我预研过的技术springbootspringcloud,使这两项技术也从理论进入到了实战阶段。

同时,有了四年经验了,总感觉需要高大尚一些,所以也开始了设计模式的学习,可惜的是,除了单例模式,其他的似乎一直都没怎么用到项目中来。

换工作后,由于是年底换的工作,这一年中剩下的一点时间基本就是适应环境。

再加上入职的第一个任务是做一个activiti工作流相关的项目,所以相当于是把2015年用的技术又重新从杂货间翻了出来。

不过,环境的改变必然带来认知的改变,所以技术栈中增加了禅道postman

于是,这一年结束,我的技术杂货间中从45项变成了48项,这也是我入行以来,增量最少的一年了。

第五年,2019

一路颠簸,时间的列车就开进了2019年。

这一年,大概是我在那之前的工作时间中,最有成就感的一年。

当时的团队在一片和谐中发展壮大,我想着可能能在那里干一辈子吧。

当时的业务是一汽红旗车联网,无论是从基于实体行业而言,还是从红旗品牌来说,我的心里都充满了自豪感。

那段时间,我觉得工作特别的有意义。

记不得多少次半夜十一二点还在乐此不疲的开会,也记不得多少次下班了自己在住的地方免费忙工作的事。

心甘情愿,不怨不悔。

在这一年里我参与了很多个项目,也就用到了很多技术,之前技术栈中的javamybatislinuxsvnmavennginxtomcatspring scheduleredisspringcloudspringbootjmssybasejpasonarvisioeclipsejenkinswordexcelmysql等等二三十项统统派上了用场。

不仅如此,技术栈中又增加了ideagitvueelement uiCAhttpskeyclockoauth2jwtkafkadocker车联网

我的技术杂货间又从48项暴增到了59项,如果这是财富增长的速度,那该多好啊。

遗憾的是,这代表的不是财富增长速度,而是我技术上欠的债,又变多了。

工作中的事接连不断,技术债也越来越多,晚上十一二点还一直在电脑旁的场景,已经变成了家常便饭。

但是我却很少觉得累,因为心中那份说不清道不明的成就感和自豪感。

只是,好景不长,世界并不会因为我的愿望和成就感而做出太多的改变。

大概是因为公司体制和类型的原因吧,说好的一期、二期、三期,结果一期才做完就内外失火,最终好好的团队分崩离析。

第六年,2020

伴随着上一年问题,新的一年来了,2020年继续人心惶惶。

同时,流言四起,要被开掉和背锅的说法此起彼伏,而我也被调到了另一个项目组,虽然也还是车联网,但是已经不再是一汽红旗。

突然间,犹如泄了气的皮球,虽然还没有失业,但是却似乎更甚失业,那是真的付出了心血的项目,这就没了,毫无办法。

我被调到的新项目组中,还有我过去一年多以来的直接领导,以及那个介绍我到这个公司的同事朋友,他们没做多久就离开了这个公司。

在新的项目组中,事情就没有之前那么多了,有一段时间我的工作量很不饱和,于是在新领导的安排下,学起了hadoophbasehdfsflink

这样算来,我似乎也是会大数据的,只是这些技术暂时都还没有在实际项目中用过,仅存在于我的demo以及博客中。

这一年,并不顺利,最终在年底,也就是在这个公司刚好做满了两年的情况下,我在一片惶恐中离职了,然后去了之前一个领导和别人合伙开的创业公司中。

在那个做了两年的公司中,留下了太多的记忆,领导和同事一如既往的友好和包容,不论是在一开始的项目中,还是在后来的项目中,领导和同事始终都对我不错。

虽然最终的结局不如人愿,但是公司上层的战略问题,也是我接触不到的级别,太多人无能为力。

离开那里之前,我的技术杂货间59项增长到了63项,技术债又变多了,但是更糟糕的事却不是技术债。

第七年,2021

2021年,我再也不是外包了,终于变成了自研。

新的公司比较小,一个公司的人还没有之前项目组的一半,可能是由于前领导合伙创业的原因吧,我看起来被委以重任,是后端开发,是技术组长,也是技术主管,还是架构师。

只是,可能是因为我并不具备创业思维吧,我看到的只是我有一个不能管的后端、一个不需要管的前端、然后就管我自己。

与此同时,在我入职之前,由于自己的粗心,我竟然没有谈工资。

然后在我上一家提出了离职之后才收到了offer,发现工资比之前还低了一些。

虽然最终经过协商,我的工资恢复到了税前和上家公司一样,但是需要试用期,试用期打折,也没有了公积金。

可能正是因为一开始就不顺利吧,所以我始终无法静下心来,于是又重新找了工作。

幸运的是,两个同事推荐,一个在武汉,一个在广州,两个都通过了。

起初,我是准备就在武汉的,所以去了武汉那个新公司上班。

但是令我至今愧疚的是,我去那个公司就只上了一天就跑路了,给当时介绍我的前同事朋友造成了不好的影响,也给那家公司人事同事造成了一些麻烦。

一直想着回武汉了请吃饭的,一年多来却一直没找到机会。

之所以干出了这样的事,一方面是广州这边给的工资确实多很多,另一方面,是因为广州这边的甲方领导多次联系我,表达了足够的诚意,即使我说我已经去入职了,他依旧希望我过来。

话说回来,在那家我一堆头衔的创业公司中,短短的三个月,虽然不是很愉快,但是我依然学到了一些新的东西。

小公司追求的就是快,所以在那里我知道了一些成型的快速开发工具,如jpressjboot若依以及nacos,还有网络穿透工具

我曾从南回到北,今又自北再归南,我的技术杂货间也从63项涨到68项左右。

新的公司挑战巨大,是个需要英语的外企,而我在读书阶段英语及格的次数也就一只手左右。

这对于我,是挑战,也是冒险,其实心里完全没谱。

新公司新项目,在我高达68项的技术栈中,匹配的有javamybatislinuxmavenspringcloudspringbootgitideajenkinsoraclemongodb11项。

在现有技术栈的基础上,新公司很多流程和工具及内部系统都需要学习,例如teamsservice nowzoomslackjabberqseatlinkupscwtimesheetonenote

这些工具和系统有的很简单,有的也还是需要花时间熟悉。

同时,这个项目中还需要用到其他的技术或对接系统,例如gsdcyberflowsjiraconfluencelambdajava streamwebfluxreact jscucumberspringcloud limitdevops流程junit等等。

这里需要说明的是,对于junit,其实我是很早就知道,也用过的,但是对于这里的junit来说,我觉得之前的那些根本不能算数。

截止这里,如果包括那些内部工具软件的话,我的技术杂货间再一次暴增,从68项直接涨到90项。

即使不算那些工具软件,也从68项增长到了80项。

当然了,一直以来,其实都还有一些没有算上,有的是过于简单,有的是我虽然知道,但是连demo都没有写过的,例如crtrobo 3tputtyxshellvscodewebstormxmindpahonavicatsql developrbacspringsecurity等等,如果这些都算上,就已经破百了。

英语问题,以及如此多新的东西需要熟悉,还有全新的业务领域,这一年其实很是焦头烂额。

幸运的是,我又遇到了好的领导和同事,我们小组最多时候七八个人,除了我,每一个英语都能流利交流。

他们特意把需要直接英语语音交流的任务分给了别人,尽量给我英语要求低一些的任务。

与此同时,面对我诸多小白一样的问题,他们每一个都不厌其烦的解释和指导。

想当初,我连正确的junit都不会写,也不知道他们当时是否有怀疑我是经验作假。

第八年,2022

忙碌的一年过去,来到了疫情不断地2022年。

经过前一年的努力,已经熟悉了大部分的流程和工具。

同时,背单词,看美剧,以及每周的印度经理会议,我的英语也有了一些进步,印度经理说的话也已经能勉强听懂可能有一半左右。

只是,我的英语之路艰难,能听懂的依旧太少,也还一直无法张嘴即时交流,还只能说一些提前准备过的内容,但愿在坚持学习中,今年能够有所突破。

今年快过去一半了,技术栈上增长不多,一是对于之前的内容不断还债,像jenkinsreactgitthreadsource code这些。

另外就是在java本身的技术上,由于开年的一个性能优化任务,使得在jvm调优方面算是有了一些小小的经验,也实际了解和使用了jmapjprofilerjstatjvisualvm等jvm调优工具。

同时,在业务上也在进一步针对性的学习,对于目前的工作以及我自身来说,这个可能比技术更加重要。

马上就满8年了,我的技术栈高达百项,同时也是技术债高达百项。

对于现在要用的技术来说,可能只是30项左右,而这30项左右,任意一个拿出来,我都没有信心说它有8年的水准。

或许,说5年我都心虚。

有人说量变产生质变,但是放在这里似乎并不适用。

路漫漫其修远兮,在还债的路上不断增加新债,也在还债的路上不断的寻找希望。

生命不息,奋斗不止,谋事在人,成事在天。

奋斗为了什么,为家人更富足、为亲朋更便利、为子孙更自由!

你可能感兴趣的