百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

一个普通二本程序员的15年职业生涯,即将更换赛道

suiw9 2025-03-02 18:55 18 浏览 0 评论

一个普通的二本大学毕业生,15年的程序员职业生涯,很大可能即将结束,在过完2025年春节后,借着deepseek火爆的势头被裁员了,回顾一下自己过往的职业生涯轨迹,感慨万千,遇到过一些贵人,也遇到过一些奇葩。

* 懵懂期(刚毕业前三年)

大四的下学期就和同学一起跑招聘会,结果没有一个同学的工作是在招聘会上找到的,都是通过网上投简历找到的,以前比较火的招聘网站还是前程无忧和智联招聘,还有个中华英才网比较少用,当然以前还没有招聘网的手机APP。

2009年刚毕业找工作就是白纸一张,什么都不懂,不知道什么是外包,也不知道什么是甲方、乙方,那会有华为、中兴、联想,感觉比较好的还是外企,隔壁班有个同学跑去了IBM,大家比较羡慕,也有同学去了深圳的一家freeborders。

自己也在网上开始投简历,印象比较深刻的是去了一个做建筑软件迷你公司面试,老板说要签约3年不能离职,每年涨500块,否则需要赔偿公司损失,当时没有听过,心里也没有什么概念,不同意。公司看起来只有一个房间,中间一道屏风隔断,里面是老板的工位,外面有3个员工的工位,均有台式电脑,有一个员工在工位上,大概瞄到了这位哥是在写c++的代码,另外两个工位应该还没有人坐,还有一台饮水机就组成了一间迷你公司了。

然后继续面试,当时对大公司、小公司或外包公司没有太多概念,反正看到招聘开发的就投简历了,应该是还经历过一些公司的面试的,没有太深刻的印象,最后入职了一家小公司,技术部才几个人,做网站业务的,工作比较轻松,不紧不慢,基本上到点下班,老板也租了个三室一厅给我们住,每天上午3小时、下午5小时,晚7点下班。

初入职场的第一段经历在9个月后就这样结束了,没有太多的挑战,似乎也没有太多的成长,当时的ssm框架算是每一次真正应用在cms上,但其实当时的php写的织梦这类cms也是非常好用。当时还用的是svn做版本管理,后来遇到的公司居然要求用txt文件指定更新哪些文件,真是天真得可笑,压根就没有理解svn的用法,换git再理解一下。

第二份工作是个稍大一点的小公司,技术团队有60多号人,是个驻场开发的工作,后面了解到不是按人月算的,是按中标的合同金额整个项目结算的,但是开发人员得在现场支持。从这时候开始使用JBPM和ireport这些工具,生产系统开始遇到OOM这些异常的情况,还有个比较奇葩的约定,是每周五快下班时要让甲方技术支持重启一下应用,不然经过一段时间后会被卡死,没有错误日志,控制台也看不到什么,使用的jdk还是1.6,在快离职的时候有高手解决了问题,分析得出结论是数据库连接没有设置超时时间,一直保持住了连接。

还有个印象深刻的问题是一个跑批的任务,数据量比较大得要好几个小时,最后发现是深度分页的问题,导致越到后面查询越慢,最后优化的过程是取消了分页,根据一个offset来处理。

这段工作经历中成长了比较多,接触了比较多老旧系统,还有和其他系统的对接,好像是用友的U8啥的,也见过到一些非常奇特,甚至说是奇葩的设计。比如上传一个文件到ftp,另外一个程序不断去扫描某个ftp目录有没有文件,有的话就读取,处理完后删除文件,如果文件较大就会导致读程序读的时候文件不完整,然后就设计了一个*.txt文本文件,文本文件中存了上传完整的文件名。太过啰嗦了,后面的工作经历中有更好的方法,上传的时候文件后缀名加个.tmp,上传成功后才改成正确的文件后缀名,读程序就只读特定的文件后缀名即可。

这个技术团队中,项目团队的组成基本上是一个项目经理带着1~3个开发人员,当然也有强的单兵作战的,然后开发人员逐渐成长为项目经理。30、35岁危机所谓“转管理”就是这么来的吧,互联网企业比较少听见“转管理”。

也是在这个时候开始自我膨胀,对所接触的系统非常熟悉,虽然系统的问题也多,但很快就可以定位到问题,甲方AS400的生产系统都能够摸两把。在比较舒适的环境中开始萌生去意,工资待遇涨了一丁点,工作中也成为了“老油条”,也没有什么别的新东西能接触到了,离职时领导还关切地问问要不要换别的项目组锻炼一下。

* 成长期

从上一家公司离职后,接着入职一家比较大的公司,第一次接触到CMMI5,公司的流程,职能部门都很成熟,给人一种很规范的感觉。在公司呆了几个月,期间被安排学习某些系统的代码,但没有实际参与开发,天天看工程的代码,进步很慢,收获也很少,没有进具体项目组的日子倒是非常舒服,天天准点下班,也不用写日报、周报,还可以积极报名参加公司的羽毛球活动,名曰“破冰球赛”,多认识一些同事。

大概第四个月被安排进了项目组,甲方是按人月算的,原本的项目组,已经有5个人,一个项目经理还有四个开发,开发都是老油条了,项目经理是一个非常强势的人,压得住甲方伙伴,也唬得住场面。和几位一同入职的小伙伴一起跟着老油条同事学习,顺便打下手。主要还是理解业务为主,职场老油条这个词,我觉得并没有太多贬义,更中性一些,自己也是从老油条又转换了新兵的角色。

工作非常轻松,甲方单位工作人员准时上下班,所以我们也基本上不加班,从入职到离职在项目团队中加班的次数仍为个位数,其中两次还是在附近聚餐后回去打卡。这个打卡又得提一下了,也是在这里知道原来指模也是可以伪造出来的,一个人可以带着几个指模套帮另外几位同事打卡,甲方的伙伴其实也知道一些,只是事不关己了,事情不是太大就无所谓了,所以遇到有什么检查的时候会多了一些生面孔的同事坐在旁边一起工作。

也是在这个阶段知道了签字费这回事,就是将竞争对手的一个团队挖过来,大概就是承诺给一笔签字费,然后提供当前工资流水给30%左右的涨幅,虽然后来听说挖过来的团队事情没有最终干成,或者说没有真正派上用场,团队里的人也逐个离开了,或拆散派去其他项目团队中,但某些方面来说还是有价值的。

所在项目的项目经理也是足够油滑,也非常强势,工作量那是为我们减少了很多,想象一下,一个驻场的开发团队跟着甲方朝9晚5是什么样的一种舒服的场景,本身甲方的效率也不高,需要邮件来来回回确认,层层领导审批。在项目团队沉淀了一段时间后,工作量可以说是非常少,因为上面还有老油条同事罩着,礼貌地称为导师吧,大部分事情是一些杂七杂八的小事,比如写个接口、写个单元测试用例、按照以前的文档模板补一下新功能文档或者造一些跑批的数据之类的。能说得上比较有存在感的时候就是导师请假回老家结婚,然后又去旅游,这时候出现了问题自己能够hold住,在团队中才稍微算得上有点贡献,大部分时间都感觉自己是隐形存在的。

这个时期的技术成长更缓慢,流行的所谓的J2EE应用,数据库都是商业数据库,还有重量级中间件Tuxedo。平时比较多自己的时间,所以就开始喜欢摸索一些别的东西,像php写的一些开源商城、BBS或者一些博客。在这种环境下非常容易让人产生惰性,不积极不主动,过一天是一天。

然后有个非常短暂的工作,算是一个小插曲,就是参与了另外一个项目的突击POC,甲方需要参与投标的几家供应商在短时间内完成某些功能的设计开发,然后会当场提一些要求,为什么会派我们这几个新兵小罗罗去呢,因为已经知道是陪标,好像也会给一定的费用。然后在现场还有不太和谐的声音,大概是另外一家供应商没有提前和开发人员沟通好,被蒙在鼓里,情绪激动说为什么拿到的POC的需求是不一样的,需求上没有说要什么什么功能点,其他人为什么知道要这个功能之类。

回到项目组,好景不长,项目因为某些原因,三期给别的供应商中标了,人员要分派去其他甲方的项目团队中,然后进到了一个似乎暗无天日的工作环境,早上要早起,晚上要加班,晚9点后才可以打车回家。后来逐渐了解到,同事说在这个项目团队里一年半居然说是老员工了,吓了一跳,完全适应不过来,整天过得狗一样的生活,大概坚持了几个月后决心离开。后一份工作再不要这种乙方工作了,也是在这时候真正体会甲方、乙方的真正意义了,之前是完全没有什么概念。

* 成熟期

接下来找工作比较看重工作单位性质了,也拒绝掉了不少称不是外包,做公司自己项目的公司。最后选择了一家国企入职,工作倒也是非常轻松,朝9晚6的生活又开始了,这时候也已经结婚了,大把时间陪家人,领导都是5:50分准备关机,超过这个时间的消息一概得要下个工作日才有得答复,然后洗茶杯准备打卡下班,虽是国企,上下班打卡还是必须有的,这么多年的职业生涯,大概就是在国企的打卡机前会经常遇到排长龙的情况了。

工作的进展更缓慢,和其他合作单位做接口联调,或者是拉个专线vpn联调网络,得要好几天,往往都是今天一个联调报错的问题邮件发过去,第二天才有回音,然后我们再补充一个问题的场景又得第三天才有回复。进度极其缓慢,因为其他合作单位可能又得去协调其他的供应商,看到领导的周报上汇报都是一条“跟进xxx事项”写了好几周。在这个极度舒适的环境中又开始迷失了,公司组织的活动倒是参加了很多,感觉起来就是大家都不怎么忙,有很多空闲时间去打球、跑步。

领导也非常清楚底下几个小伙伴工作严重不饱和,天天闲得蛋疼,公司每周两次的羽毛球活动从不缺席,然后就说你们可去考一下PMP或者软考的高级充实一下。大四时考过了中级软件设计师后,工作了两年又参加考了一次高级的系统分析师,论文没有通过。也想重新梳理一下自己的知识体系,工作了这么多年了去考个证也好,在某些单位这个证书可能有用,大部分都没有用,领导说你们拿到证再说。然后就开始买书,买试题,加考试QQ群,当年可还是用QQ的,看历年考过的试题,通过了系统分析师考试,第二年拿了PMP,其实用处都不大。

因为每周都参加打球,也就是在打球的过程中认识了一位在同一个球场打球的做旅游行业大哥,做机票、酒店、旅游线路的,一来二去聊熟悉之后,大概熟悉了这位大哥的性格、为人处事的方式,感觉是一个比较实在、靠谱的人。后面就自然聊到了工作,聊到了当前我在国企的工作情况,薪资情况,问我有没有兴趣做旅游行业。这算不算遇到一个贵人。

接着在一系列的巧合中加入了这位大哥所在的公司,原来是一个事业部的技术负责人,我加入自然就成为了嫡系,回过头来看诸多巧合条件,最重要的无疑就是涨薪幅度有30%多,其他都是次要的,还有就是相对此前较传统的国企来说这家上市公司薪资水平要高了不少。也就是在这个阶段买了房,买了车位,车位现在看来是错误的选择。

入职新公司后成为了中坚力量,负责了一块订单业务。也是在这里遇到了职场的奇葩,遇到了外包的要挟事件,外包公司接手的业务大概是前面的负责人维系的,也有多年的合作,觉得除了他们的人之外就没人能维护这块复杂的业务了,所以在新负责人上来后仍然有一股牛逼哄哄的底气,可能觉得你这个新负责人能不能安全落地还不一定,我们手上又有核心的业务系统,牛逼上天了,第一次见识到这种。然后是前负责人的旧部,也采取不沟通,不配合的一种恶劣的态度,当然也有一些人是比较容易沟通的,就是不站队只专注事情。

在这里开始关注ToC的场景,比如订个机票、酒店,你的系统发布得要考虑好让用户无感,不能影响购买、支付。最早看到的场景是通过nginx的reload切换到不同的机器,所以就要考虑产线的平滑更新了,也是在这家公司开始微服务的实践,早前的还是thrift,后面新建起来的系统就统一使用spring-cloud这一套了,但旧系统仍然占比很重,技术债务也越积越多。有PHP开发的,有好几页的数据库存储过程的,用现在的话来说就是有非常高的技术壁垒,按我们当时的玩笑话来说就是“谁接谁扑街”。技术负责人确定了大方向,旧系统不再投人力维护,新业务均搭建新服务来实现。

试想一下,如果是其他合作的外包公司,会是怎么样的结果,换作是我那就甭管甲方的负责人能不能安全落地,只要他在职的一天,那就是金主啊,就得要服务好啊。

在这家公司开始算是真正的主力、核心,以前的公司存在感都不太高,大大小小的系统几年间遍地开花一样,逐步渗透、覆盖原来的旧系统,旧系统也越来越被边缘化。这个时期,整个行业是上升期,业务增长越来越快。这时候的分库、分表,缓存、异步、限流防刷针对日均10w+的订单场景来说就相对重要了。以订单业务为切入口,负责面越来越广,会员、积分、机票预订等等。当年甚至还有P2P的业务,还火了一段时间,不过没有具体负责。从工作内容看就知道这家公司不是朝9晚5的,一周至少有2天超过8点,但是感觉比较充实,职位也比较好,属于嫡系部队,做事情比较容易。

“一朝君子一朝臣”在这个公司就体现的淋漓尽致了,由于高层换人,接着技术负责人也被换了,接着就是带进来新技术负责人的旧部,逐步散到每个团队,我属于原嫡系自然也在被替换之列,有时候不是你想不想站队的问题,而是新空降的人一来你已经在队伍中了。当然这个过程并不是在一两个星期或者一两个月完成的,大概持续了一年半。作为一名领导在新空降的地方如何能够快速做出成绩,能够软着陆,这种做法倒也是可以理解。所以我既是受益者,也是受害者。

接着前技术负责人进了一家创业公司,团队又比较小了,创业公司原团队老板觉得技术能力不行,所以换了负责人,也是旅游行业,其中有一块机票业务算是步上正轨了。可能是问题比较多,系统经常出问题导致老板失去耐心。

过了几个月,基本上算是站稳了,又找到我,很自然的我又跳过去了,薪资有小的涨幅,给了一点期权。我在原有的团队中也逐渐被边缘化,也能够清楚的认识到“没有什么是不可替代的”,所以也早有走的想法。上两份工作都是比较平滑切换,在周五离职下周一入职新公司,所以也没有太受到什么影响。

在这家创业公司,大部分工作内容也是从0-1,但均没有适量的用户试运行过,就是没有经过考验的。因为老板质疑旧团队技术不行,所以我们就跟风最新的spring-cloud这一套微服务基础,业务没有做起来,微服务好几十个。这个团队中只有几个原来的老员工,大部分人都离开了。然后就是像我这样跟着带进来的,团队比较小,关系也比较融洽,很快熟悉起来。

在这个团队中没有太大的压力,有压力也是自己给的,主要是配合运营做各种业务场景的试错。整个任职期间都比较平庸,业务没有做起来,接着就像很多创业公司一样倒闭欠薪了,行业不景气,又遭遇了新冠肺炎。年底的时候也曾提示过我可以去看看外面的机会,但没有真正在意,年后开始就欠薪了,最终也被迫离开。

离开后开始投简历,大概一周后接到另一同事电话,说这个技术负责人入职了教育行业,是k12教育,问我要不要推荐过去,这位同事也已经面试过了且入职了。思考再三没有再过去了,不是过去入职,是推荐过去面试,委婉地拒绝了。

到此感觉已经到了职业生涯的暮年了。

* 沉淀期(工作10年+)

在经历过一段时间的找工作后,入职了一家中小型的电商公司。

开始参与招聘面试,总结了大概的候选人筛选方向,比如1-3年经验的候选人,一般看潜力,看学习能力怎么样,比如领导说的直观的就看看英语6级,还有思维是不是够活跃,抛出一些问题有没有正确的思路,3-8年的是团队的中坚力量,看技术能力、责任心,知识面的广度和深度,招进来应该能够独挡一面。8年以上就得看综合能力了,沟通协调能力、解决问题的能力、带团队的能力。有比较深刻的理解就是作为技术面试其实是候选人和面试官的一次知识碰撞,你问的问题我刚好遇到过,而且深究过其背后的原理。比如举个简单的例子,遇到clickhouse合并速度小于写入速度情况要怎么定位?需要考虑的就是硬件资源是不是到达瓶颈了,比如cpu是不是满了,磁盘IO是不是满了,合并的线程数配置了多少,怎么来确定这个线程数是否合适,或者是不是写任务过于密集,并发写入过高等等。针对的这些场景要怎么来一一应对,解决了一个问题会不会带来另外一个问题。

比如我们遇到过因为某些异常刚好挡住了外部流量,但在修复故障后却导致下游的订单应用扛不住崩溃了。

团队里面有些同事的学习欲望就比较强,比如每次线上出现故障都会问一下是什么原因。比如前段时间log4j的漏洞有几个人去模拟过。好奇心强的人就会关注一下线上问题是怎么发生的,又是怎么解决的,有没有同类问题要解决、会不会引发其他问题,后面要怎么避免这种情况发生。

在这家电商公司大部分的基础组件都是直接采购云厂商的了,数据库、缓存、短信、k8s集群等,公司属于轻资产运营。也是流行的微服务部署,极小部分功能还用了golang实现,可能是前期用于实验golang,但熟悉的人不多,实现了相对简单的功能,没有再继续迭代功能。整个电商系统中核心接口接入了限流,核心业务使用了分布式锁等等常规处理逻辑。人员配备也较合理,高、中、初级开发人员有阶梯层次。在这个团队中时间更多被其他事情分割了,业务需求、技术方案、团队管理种种,就比较少时间真正参与开发工作了。

看了一下团队历史登记的故障,较为突出的就是数据库的for update使用不当导致服务不可用, redis 的 keys *和members导致服务不可用,自动续费功能扣款未加锁因为2个实例运行,导致用户被扣了两次款遭到用户投诉,正则表达式使用不当导致回溯引发性能问题。

加入相对较成熟的团队后,不是在重构就是在重构的路上,在此路上发现一个最大的问题是在不熟悉业务的情况下开始重构,重构出来的系统也是个残次品,往往会因为漏了某些特殊场景没有处理又疯狂开始打补丁,结果重构完成后一看有惊人的补丁数量。并不比重构前好多少,从成本角度考虑的话是不值得的一次重构。

公司的CTO对新技术也不太感冒,大概坚持的是可用、足够用就可以了,稳定压倒一切。比如我们说使用golang来实现,CTO就经常让我们自问一句,有比php、.net、java有绝对优势吗?以我们现在的业务量已经到达语言级别的差异都需要考虑进来了吗?入职几年唯一算执行比较到位就是将低代码平台在团队中应用开了。

经济下行,避开了好几次裁员危机,最终也是因为合同到期了公司不再续签,被迫结束了这段工作经历,中年的职场可能就是这么残酷。

* 整体回顾

回顾15年间的职场轨迹,在超过5家公司任职过,形形色色的人都见过,有埋头苦干很少看路的,有油腔滑调没什么本事耍嘴皮子的,也有一些一板一眼的不太灵活的,还有一些非常优秀,把事情做得井井有条的。体验过朝9晚5的清闲,也经历过早9晚8的疲倦。最近和以前的老同事聊起才说起:你没有经历过996的残暴那你的职业生涯都不够完美。

15年间也在所在城市买了房安了家,结婚然后有了小孩,没有再买二套房也没有继续生二胎,早两年把房贷也提前还了,感觉才没有那么大的压力压在身上。

* 失业方向

申请失业金被驳回,先休息一段时间认真思考一下未来的方向,或考虑转型、轻资产创业,协商N+1赔偿要下个月10号发工资日才到账,希望不要这么快用到这块资金,未来不至于过得战战兢兢。

相关推荐

10款超实用JavaScript音频库(js播放音频代码)

HTML5提供了一种新的音频标签实现和规范用一个简单的HTML对象而无需音频插件来控制音频。这只是一个简单的整合这些新的HTML5音频特征及使用JavaScript来创建各种播放控制。下面将介绍10款...

Howler.js,一款神奇的 JavaScript 开源网络音频工具库

o...

PROFINET转Modbus网关——工业协议融合的智能枢纽

三格电子SG-PNh750-MOD-221,无缝连接Profinet与Modbus,赋能工业物联产品概述...

简单实用的Modbus类库,支持从站和DTU

一、简介...

[西门子PLC] S7-200 SMART PROFINET :通过GSD组态PLC设备

从S7-200SMARTV2.5版本开始,S7-200SMART开始支持做PROFINETIO通信的智能设备。从而,两个S7-200SMART之间可以进行PROFINETI...

Modbus(RTU / TCP)有什么异同(modbus tcp和tcp)

Modbus是一种广泛使用的工业自动化通信协议,它支持设备之间的数据交换。Modbus协议有两个主要的变体:ModbusRTU(二进制模式)和ModbusTCP(基于TCP/IP网络的模式)。尽管...

Modbus通信调试步骤详解(modbus调试工具怎么用)

Modbus通信调试步骤详解  Modbus通信分为串口和以太网,无论是串口还是以太网,只要是标准Modbus,就可以用Modbus模拟器进行调试。按以下几步进行调试。...

理解Intel手册汇编指令(intel 汇编指令手册)

指令格式...

「西门子PLC」S7-200 SMART的Modbus RTU通讯

S7-200SMART集成的RS485端口(端口0)以及SBCM01RS485/232信号板(端口1)两个通信端口可以同时做MODBUSRTU主站,或者一个做MODBUSRTU主站一个做MO...

InfiniBand网络运维全指南:从驱动安装到故障排查

一、InfiniBand网络概述InfiniBand(直译为“无限带宽”技术,缩写为IB)是一种用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。它...

一加回归 OPPO,背后的秘密不可告人

有这样一个手机品牌,它诞生于互联网品牌。在大众群体看来,它的身世似乎模糊不清,许多人以为它是国外品牌。它的产品定位是极客群体,深受国内发烧友,甚至国外极客玩家喜爱。...

[西门子PLC] S7-200SMART快速高效的完成Modbus通信程序的设计

一、导读Modbus通信是一种被广泛应用的通信协议,在变频器、智能仪表还有其他一些智能设备上都能见到它的身影。本文呢,就把S7-200SMART系列PLC当作Modbus主站,把...

狂肝10个月手搓GPU,他们在我的世界中玩起我的世界,梦想成真

梦晨衡宇萧箫发自凹非寺量子位|公众号QbitAI自从有人在《我的世界》里用红石电路造出CPU,就流传着一个梗:...

[西门子PLC] 博途TIA portal SCL编程基础入门:1-点动与自锁

一、S7-SCL编程语言简介...

工作原理系列之:Modbus(modbus工作过程)

MODBUS是一种在自动化工业中广泛应用的高速串行通信协议。该协议是由Modion公司(现在由施耐德电气公司获得)于1979年为自己的可编程逻辑控制器开发的。该协议充当了PLCS和智能自动化设备之间的...

取消回复欢迎 发表评论: