《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 zhuanlan.zhihu.com/p/140536202 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

分享看到的一个故事,我是认真看完这个妹子的故事,故事有点长,但很真实。

一点一滴记录了一个「非科班半路转行」计算机的不容易。

有时候在一个公司呆久了,真的不清楚,外面其他公司的人,都在干嘛。

以下是正文。

前言

本人 Java 开发 6 年半不到 7 年的样子。

英语专业,临毕业跟着隔壁专业去培训了四个月 Java 。

跟他们一起来了北京找工作,一找就是 5 个多月,面试 100 多家公司。

最终还是隔壁专业的同学介绍到他们公司才就业了。

第一份工作

入职后同学就是我的领导,技术相对一般,我们做 Java 游戏后端的,时间很快,一眨眼,我就跟着混了四年,每天就看些博客,书籍,业务上也会做功能,但自觉做的比较蠢,没什么太大进步。

四年时间很快乐,跟着老板,同学,从一点不会,到能独立完成工作,能自主做一点小小设计。

但技术上说真的,差得太远。

随着心越来越慌,工资水平属实也太低 6K 多,于是四年这个节点,我跳槽了,工资翻倍。

这是一份非常苦的工作,曾经2个多月没放假,也曾经连续四天四夜没回家,工作到凌晨 3 点是司空见惯。

然而我只是个小兵,加班加了 10 个月,游戏上线两个月,人员就全部裁掉了。

由于 Java 一直感觉没有入门,框架方面掌握的也比较少,这个 MMO 的项目本是练手大好时机,连忙带懒就也这么过来了。

20K的工作

随后不知道算走运还是算倒霉,找到了上市公司的工作,20K。

其实我梦想中的工资是 25K,如果达到就打算不再跳槽了,为什么是25K?

因为游戏Java后端基本上 30K 算是一个封顶,哈,当时比较幼稚,以为就这么干着,早早晚晚也能混到最后,就算技术不行,吃透两套框架,在游戏圈就能立住脚。

说是走运,因为工作相对简单,我 1 个后端对 6 个前端,听起来挺唬人,但其实还是做业务,但因为只有我一个人接手这个项目,所以我也算是主程,当时我觉得我的人生的每一步真是走的太好了,缺什么来什么,想要架构,想要自己来就有机会了,这一年多感觉特别顺利,也觉得自己终于像是入了门,不再害怕工作上的需求了。

但说是倒霉呢 ,其实也就是因为这一切其实都是假象,我根本还是几年前的那个自己,只是因为业务熟练了,以为自己行了。

裁员

这公司也是裁员,我在这里做了一年半不到,临走给了 N+1,美美的拿着钱,找自己梦想中的 25K 去了。

并且决定不做游戏了,因为游戏公司有名的就那几家,没啥大发展,还是互联网好,差不到 40K 封顶,我以上所说的封顶都是指很普通的人啊,大佬就别跟我计较了。

就在裁员的第二天,我面试了京东一个物流创新部,好像是这个名字,那天我记得特别清楚,经过了一下午面试(面试的难度真是超级低,我在那里侃侃而谈,最难的问题也只是线程池那几个参数)。

然后,过了。

我真的感觉自己要一飞冲天,当时在想,在这里不能做太久,公司的文化太诡异,一切围绕着强东转,公司的人说话好像都在躲着什么东西,加班也是每天固定,然后大小周。

因为正赶上过年,面试的人说年后人事会联系我走流程,就能入职。

这一去就天差地别了,我在家等了一个半月,中间经过无数询问面试者,人事等,后来,流程跑着跑着就没了。

当时觉得京东真是让人开眼,还特么带这么玩的。

面试

这时候,我还是不知道愁~

然而,马上就要觉醒了。

我又去面试,还是25K,有时候你认真的要价真的比猥琐要好很多,我当时就是愣要,大部分人还真信。

记得收到的OFFER有必要商城,赢时胜等等,后来去了一家做语音的公司负责做云平台。

哈哈,这份工作只做了三天半。

从入职第一天就夜夜失眠,为毛?

因为看不懂代码,压力很大。

以前做游戏觉得大家都是吊丝,每天在一起呼呼哈哈,确实也快乐,有什么需求甚至直接在座位上喊着沟通这样。

但是这家公司就比较正规了,我以为互联网公司都是这个样子的,同事之间一天一句话都不说,主程也只给我简单说了说流程,就自己看代码吧。

我虽然技术渣,但有时候对自己要求还是挺高的,总想快速的上手代码,这代码这手上一天,两天,三天,连个皮毛都没看出来,就慌的不行。

当时就开始知道自己代码水平有点渣了,但以为自己是不适应,这次找工作其实也挺波折,醒悟是一个缓慢的过程。

所以还是想着回游戏行业,毕竟自己历经三家公司,都没碰到什么难度,虽然寻路啊,地图啊,战斗啊这些自己都完全整不了,但是还是能完成普通工作的,此时的我还以为自己能搭框架呢,啊哈哈。

于是我就辞了,公司真的不错,14薪,要走还好顿要留我。

当时以为自己是不适应走的。

现在回头想想,其实怕暴露真实代码水平,不好意思才走的。

身体不骗人,我的脑子居然会骗自己。

还是25K

于是,我开始面游戏了,还是 25k。

但面着面着觉得不对劲,为何大部分面试我都答不上来个啥,三问两问就瘪了。

两周时间,居然 10 家只收到 1 个 OFFER,并且是小公司做主程。

我开始慌了,很慌,这 10 天里我慢慢认清自己的真实水平了,不敢细想,细想连面向对象都不怎么会,那些继承啊接口啊,从来也没写得好看过,都是照着别人已有的模块,拿来粘贴,还做得挺快。

多线程一想就蒙蔽,数据库就会点简单操作,Linux 也是一样就会个CP MV CAT top啥的,最常用的是 ps -aux|grep。

原来,原来我什么都不会啊。

但是上天还是眷顾我的,居然这十几家我最看好的那家公司,第 11 个面试。

过了,哈哈,当然这时薪资下来了一点,但是我管不了那么多,从上家裁员到现在,已经整整过了 2 个月零一周了,这些天过得真不怎么样,每天都特别焦虑。也瘦了七八斤。

就这样吧,入职好好干吧,我收到OFFER时,暗暗想着,我要为公司肝脑涂地,它在我危难之时,向我伸出了关爱之手,感谢公司。

于是更大的噩梦开始了~~入职到现在 2 个月了,我几乎毛也没做。每天都想逃避都想跑,心脏压得我天天疼,好堵啊,现在也还是如此。这 2 个月我彻底认清了自我,和入职半年的新生小手差不多的水平,一直用这水平干了这六年工作。

真汗颜,以前用的 SVN,到了新公司学 git,这 git 是真难啊,怎么都学不会,网上那堆教程跟屎一样,看着好像是会了,用着都特么不对,差得远呢,到现在还只会create a branch,写, pull develop ,切回来把develop 合过来,然后再把branch合回到develop,再push,基本上是在用svn的方法在用git。

而且 git我感觉很奇怪,好像没几个真的会用,不管是网上还是我的同事。

痛苦

光说痛苦了,说说自己为什么痛苦吧,我知道每个人都有自己的心酸事。

我只是想说说我的。

哎,主要说说新公司的事吧,这么多天了,我死去活来,难受的要命。

比如我从刚入行就不大懂开发的根本问题是什么,也许书本上的解释我也看得懂,但是真要理解这件事,应该不是只停留在字面理解,如果你有懂那一天,你应该立刻就知道,它会直接在头脑中告诉你—啊我入门了。

鉴于此,我一直都保存着前几家的源码,我想着,开发既然自己不能理解好,也没有举一返三的能力,也不会自主写出什么东西。

那就收集多多的代码,涉及到的哪一部分不懂,可能就能在其中找到例子,灵感。

这样就可以在框架层面也不至于什么都没有积累。

这次的工作,服务端也分了好几个进程,之前我都是用redis搞数据沟通,比如你要生成唯一ID,每个子服务里都有redis,incr就好。

新的框架也是这个主程用了好多年的了,不想加入新的东西,但是又要求我按他的思路去做,又说代码版权等问题,之前所有的源码都不能给我看,我想其实也是合理的,毕竟我是 P6,高级开发哎。

按理说,招我进来可以从 0 开始搭建架构的。我的能力也就是 curd 了,甚至可能 curd 还做不太好,也就说不上怎么能硬气的跟他说明。

比如上面 id 的问题,那我可能就要每个服启动时,去 mysql 查一批id存放在每个子服务上面,设一个警戒值,不够了再取。

但是这样吧,对我来说就很难,这就要考虑到警戒值不够用了怎么办,各服务启动时要把id拿到才能对外服务,还有 id 如果实在没有了,可能要进行同步阻塞去查询,但是同步怎么写?

不会写同步~~另外再举例子,如果是加好友功能,这种单用mysql,而且还弄出一个 dbserver 的服务,什么都要写个异步的协议过去,那加好友原来是:

addFriend {
各种条件判断,不合条件返回个tips
执行加好友
}

现在可能变成这样了:

addFriend {
异步去查数据库了
}

gameserver -> dbserver ,当dbserver->gameserver返回时,又是另一个协议,handler什么的又得另写,执行判断,再返回,等等。

当然写得好的人,这些问题都不存在,而我只会直肠子写Java,就会个 List.add if else for循环。

这基本上是我的全部本领了。

就在这框架里有很多难处。

还有个问题是怎么写gate与game的玩家session对应,想了N久才想出个办法,包装了个protobuf二层协议,哦问题多了去了。

应该都是开发者该在工作中解决的基本问题,而我一步一个坎。

压抑

再者公司的氛围也是头疼的紧,一整天也没人说话,除了要甩锅的时候,根本没人会沟通。

交待任务啥的,给我压力也特别大,比如主程今天说,docker了解一样。

然后明天让我搭 dokcer 自动化部署流程了。

今天说git flow了解一下,明天就要严格执行 git 工作流了。

还是那句话,可能这是一个 P6 真正要掌握的本领,就是有个关键词,然后就能自己看外文文档,然后就能搭建出一个看上去很像样的工程化产品。

好吧,这样来看我离真实的 P6 的实力,至少得差 5 个档次。

自己特别的低迷,心脏堵的难受,每天早上一醒来就感觉自己活不起了。

有天晚上梦中,看见一堆代码,却怎么看都不懂,又醒不了,难过,懊丧了一整夜,连睡觉的时间都不放过我,自己的痛苦多了就经常跟朋友家人说,到后来反倒让我认清了,什么狗朋友,哪有朋友,没人会care你一丁点,各自有自己的烦心事不说吧,没有共同经历的也难为互相理解。

总之,在朋友对我的反应上,基本就是:

  • 你想多了;
  • 你不干得挺好的吗;
  • 程序员一个拿那么多钱你还瞎苦恼个什么;
  • 不光你,谁没困难;
  • 其中特别好的一个也差不多最多宽慰两句,你行,你可以挺过去之类的。

之后就再无信息。

当时也是苦恼了好一阵,认识你们有个什么用,你说我最想听什么,我联系你们的目的是什么,哈哈,算了算了,都是故事,你们并没有那么好。

但回头吧,仔细想想不禁就明了了这件事。

30多岁了,这是关乎你自己生存的问题,这个问题不是靠什么运气和神迹才能改善的,它积累在你多年生活的每一天里,你的理解是什么,你对工作的态度如何,你怎么利用你的时间的。

这一切的一切都是你自己该解决该思考的问题,别人帮不上任何忙。

然而这些年我都是养生过来的,一直都没学会如何去思考,这应该是与有所成就的人最大的区别了。

有人说做职业规划,而我脑中也只有这四个字的浅层意思。

也许有的人对这个就比较上心,有着深刻理解也说不定。

也就是说别人怎么决定你的人生,别人怎么决定你的想法,都得自己去选择,自己去承担,指望着别人给你的,只能是「放松心情了解一下努力了解一下」这样看似没用实际也没用的东西。

今天先写到这吧,写得乱糟糟。

无论怎么写也写不出你真的在痛苦时那种无助与万念俱焚,你很难再去回想,你是怎么失眠一个月的,你很难想你在公司楼下对着镜子,颤抖着害怕着不敢回办公桌时的心情。

然而这一切都没意义,生活不会因为你痛苦就突然变好了,别人不会因为你痛苦就能放过你了,这些对任何人都没意义。

我还将继续下去,这家干不了了,还要找下家,还要每天学习「虽然效果不怎么样」。

然后等待着,这些迟早该发生的事。

你再想想,今天虽然这么痛苦,是不是可能是你接下来生活的最好的一天了。

毕竟你就坐在那里十几个小时,就有人几百上千的送给你。

然后我干不下去这行了去做什么,销售?开个麻辣烫店?去工地真正的搬砖?

hi,哈哈哈哈哈,外人看叫矫情,自己看属实是活不起。

有后续吗?

其实这个文章写到这里的时候就已经算是结束了,我觉得作者写的虽然有点乱,属于流水账记录,但是她写的很真实啊。

我们大家其实都是这样的:一路走来,一路成长。一路走来,一路失去。

于是我去搜索了一番,想要知道这个 30 多岁的妹子,最后到底怎么样了。

是真的干不下去了,还是逃离北京了?

亦或者是走过瓶颈,走向顺境了?

你还别说,我好像还真的给找到了后续。

而且对于她写的文章的四处传播,还吐槽了一番。

下面虽然有部分观点上有点不一致,但是我还是决定原封不动的把她的话挪过来。

哈哈哈,妹子是真性情了。

后续

经过这么狠的一番折腾,去了半条命,但是说因祸得福也好,凤凰涅槃(这词捅得有点大哈)也罢。

下半年换了一家公司,制度轻松,人也和气,我害怕职业生涯的结束,疯狂的补了自己的短板,不到三个月,回血显著。

现在快半年了,已经不惧怕任何技术上的困难了。

之前那种总是揭不开技术的面纱的感觉也淡了很多。

回想起那段痛苦的时间,实在感觉到人钻到死胡同的可怕,希望不再有更多的人真的放弃自我,再坚持一下,再坚持那么一下,也许真的就能突破。

没这么一遭,像我这种人可能真的没办法成长,相信苦难,相信自我。

就再坚持一下吧(当时如果有个靠谱的机会,真的可能转行了,现在又是另外一种体验了吧)。

描述下现状:又开始飘飘然了,下半年几乎全是好事,一通百通,浑身通畅,技术上想啥有啥,生活中顺利的不像话。

家庭和睦,工作顺意,意志上由于这次打击,加固了许多。

认识上也提升了不少,看待事物也没之前那么执着了。

有帮助的意见:

看到很多公 众号,知乎,cdsn什么的,都很自觉的转发了我的文章—–大部分用来分享。。

特来补充—我不是学那些课拯救的自我。

说下在我学习上的一点经验吧。

1.github必须要掌握,可以根据具体代码关键字搜到你想参考的内容,比如输入关键字,搜索,选Code,选Java这样基本上,在第三方出现不会用的类、方法,都可以找到具体的例子。

2。点进去,不管是代码、源码、报错什么的,大胆的点下去,看不看得懂一点都不重要,重要的是你敢硬着头皮看 ,看懂5% ,10%都不要怕,终有一天,你会知道—这么干,管用。

3.掘金,必须下载关注,每天推的东西,看见关键词就去搜一下,没兴趣也大概知道它是干啥的—- 一定会有一天,在别人没方案时,你突然灵光一闪,多了许多思路。开源中国 必须关注,每天把软件更新资讯看喽, 一天一共也没几个,看看这些个第三方都是干嘛的,知道别人都在干啥。你积累的越多,你就越知道,也没什么神秘的事,大家都是这么学的。

4.选一个系统,自己熟悉的,但是没有完整的构架过的,去大胆的构架,别管什么新技术旧技术,一齐用到这个系统上, 把它跑起来。—–这点目前对我是最重要的。我可以用最新的框架,搭建出一个还算能用的系统,在搭建过程中,了解了无数的关键词,注意事项。你会发现,一个大而全的系统,几乎能覆盖市面上80%的概念。等你搭出来了,你就知道,什么是泥潭中抓住一颗救命稻草, 什么是半夜跑通了的极致的欢喜。

5.跟4有关,学习的时候不要浪费时间,时间很宝贵,比如现在技术这么多,你一定挑自己熟悉的领域去学习, 搭系统框架时,无关的东西就不要看,什么 区域链,AI,大数据什么的,你看一时半会也没什么概念,等到学得 差不多了, 需要另一层突破时再去关注。现在不是浪费时间的时候。

6.一定要用 idea,扔掉eclipse,别管谁跟你说什么,你都要接受idea,不管有多大困难,多么坚持不住,一定要换成idea, 不管有多少人跟你犟,你就是要换成idea, 如果有人问idea把什么问题解决得比eclipse好了,别理他,坚持下去, 我也不知道它哪好,你就坚持就行了,你会懂,什么叫做自由。

7.要会翻墙,花钱也翻,你会需要用到英文的东西。

8.控制自己的挫败感,就中文那些个教程,你弄不出来,跑不通,是非常正常的事,那不是你的问题,是他们是傻碧, 自己什么都不懂就敢做分享,一搜千篇一律的一个小demo,任何研究都不做,就往出放往出贴,毫无责任感。

9.认识事物都是需要过程,多看,多想,多动手,比如RPC,看了许多文章你也不懂它是什么意思,不要着急, 多找源码对比着看,多找英文网站去看,慢慢去理解,为什么是这样,为什么写成这样,这样解决了什么问题, 自己在动动手,有一天你理解了的时候你会诧异,为什么当时不理解,自己是不是傻,哈哈。

总结一下,上面都是老生常谈,别人也都这么说,我自己理解的。

最重要的,其实就是大胆、别怂、就是看,就是勇敢的点下去。

就是碰到新技术,第一个冲上去,看见不认识的词,直接点翻译,看见没见过的关键字,直接就百度,谷歌。

我们的宗旨是,不懂不要紧,但是要去看,哪怕只是知道了另外几个你不懂的概念,把它们记下来,只记关键词。

文章目录
  1. 1. 前言
  2. 2. 第一份工作
  3. 3. 20K的工作
  4. 4. 裁员
  5. 5. 面试
  6. 6. 还是25K
  7. 7. 痛苦
  8. 8. 压抑
  9. 9. 有后续吗?
  10. 10. 后续