小公司工作 7 年,后面这样走!
共 5738字,需浏览 12分钟
·
2023-04-11 12:19
作者:沉默王二
Java 程序员进阶之路:https://tobebetterjavaer.com
大家好,我是二哥呀。
对于大多数打工人来说,可能并没有高大上的工作(大厂、高并发高可用、高薪水😁),有的只是 CRUD(小公司、修修 bug、日常维护、养家糊口),但我们的内心依然有一颗“不甘咸鱼”的心!
今天这篇算是之前小公司工作 7 年,后面怎么走的续集,当时球友洋洋洒洒写了 6000 多字,考虑到大家的阅读体验,我就把内容分开了,上篇是球友的故事,这篇是二哥针对球友提问的回复。
再来回顾一下故事的主题:二哥编程星球里的一位球友,他在小公司工作七年了,平凡而不甘平庸。他 16 年毕业,参加过安卓的培训,被骗去过外包。后来经过自己的努力去了一家做支付的自研公司,一直工作到现在,目前薪资 20k+,技术上不能说多牛,但能独当一面。
下面👇🏻是球友当时提出的问题。
球友提问
最后说一下我求助于二哥你的问题吧:
1.我该如何去改变目前的状态?我现在就像是迷雾里的航船,感觉怎么走都不对,怎么做都是错的,想请二哥你帮忙指引一下方向,哪怕是一个模糊不清的方向都好呀;
2.最近公司已经出台了严厉的绩效考核,我估计跨境业务再坏下去,估计有被优化的风险,想问一下二哥,我是应该寄希望于考公(今年已过,最快也是今年年底才考,明年才面试,上岸是明年中期的事情了)?还是说要准备面试?如果是后者,该如何开始?
最后感谢二哥百忙之中看完我啰啰嗦嗦的这些话,祝二哥身体健康,工作顺利!
二哥回复
球友好。
恭喜你,你是个不可多得的人才!
你知道你写了多少字吗?(6000+),你知道我在阅读的过程中有多愉快吗?仿佛就是一个真实的人在我面前,敲代码、Google,上班迟到、愧疚,领导认真讲给他听,他左耳听进去了,右耳又出来了。
非常真实。
其实对于绝大多数的普通人来说,这就是最真实的样子。
平凡而又不甘平庸。
先来回答你的两个问题。
1、如何改变?
鉴于你经常反复的症状,但又确实能出活的事实,我的回答可能会改变你,但也可能只是投到海里的一块石子,连个水花都看不到。
不妨说说我的一个朋友吧,他对技术,不能说是热忱,但也不能说厌倦,他只是知道,假如他不搞这个,也没有其他更好的选择了。
家庭背景一般,人长得帅,但也没到可以傍富婆的地步;人聪明,但也不见得就能想出来改变世界的新创意;人踏实,但也偶尔偷偷懒、打打游戏、刷刷视频,堕落会。
只是,他一直有一个底线,如果在某一个圈子,一定要做到 TOP 级别,不做就算了,做就做到自己的极限。
在公司,他不是最拼命的那个,但项目上遇到什么技术难题,到他这,不管是通过谷歌也好,通过钻源码也好,总是能找到解决办法,让领导放心。
他不是最会哄领导开心的那个,但知道和领导关系处好了,绩效就会多出来一些。
如果用三体的观点来看,他就是一个非常平凡的人,但在另外一个维度,他又十分的重要,老婆在乎他,女儿在乎他,父母在乎他,妹妹在乎他,领导在乎他,同事在乎他。
他表面上谦虚,但骨子里有股狠劲,他接受有人比他优秀的事实,但绝不允许自甘堕落,差距拉得太大。
最重要的是,他善于挖掘自己的优势,并且把这个优势无限地放大;而他身上的弱点,不怕暴露,但也知道尽量不去拿短处和别人比。
我这个朋友,笔名叫沉默王二(😂)。
我不知道你平常写不写文字,但就这篇而言,是个掏心掏肺但又能引人阅读下去的好文章。
技术上,估计我们属于同一类人了,走不了技术专家的路线,但又不怎么喜欢管理、业务、产品。
如果有可能,我希望你走一走写作分享这条路,这条路难走,需要运气,可一旦步入正轨,它会逼迫你成为更好的自己,让你的人生步入一个新的高度。
同时,又能兼顾工作,相得益彰,收入又还不错。
2、要不要考公?还是换个工作?
我其实也不喜欢考试,虽然我也羡慕公务员的清闲,铁饭碗,世界的尽头是编制,但说实话,我每次考试,也都是裸考,因为我不喜欢考试。
换个工作?我觉得你目前的领导对你挺好的,技术上你也能用自己的方法解决问题,成为开发主力,对于大多数普通人来说,这样的工作环境,很难得了。
不建议你换。
如果说,你并不喜欢写作,不打算走我这条路。
那就需要你再挖掘一下,自己身上还有什么亮点,可以无限放大的那种。
这种不好找,但互联网的世界,充满着不确定性,也就充满着机遇,你能来星球,其实就是一种改变。
你可以看看我以前写的文字(公众号翻到 2017 年左右吧),感受一下我身上的变化,寻找一些可以借鉴的点。
我非常期待,我们能成为同路人。但如果你想准备面试,换个工作,不妨参考之前我给一位球友准备的学习内容。
3、如何准备面试?
我在一家要求 4-5 年的工作岗位上看到这样的招聘要求,基本上罗列出了一位 Java 后端高级工程师应该具备的素质。
- 有 NIO 开发经验
- 在产品交付的各个周期都能有所贡献,比如说需求沟通、系统设计、文档撰写、功能研发、线上测试、系统监控
- 熟悉常用的数据结构与算法
- 熟悉分布式系统,熟悉消息队列
- 熟悉 Zookeeper /MongoDB / Redis / Kafka 等技术
- 熟悉线程池/异步/锁等技术
- 有 MySQL 调优经验,熟悉索引、事务
- 熟悉常用的设计模式
- 有良好的编码习惯
- 熟悉 Git
- 熟悉 JVM,遇到性能问题能快速修复和调优
- 熟悉 Spring 全家桶
- 能在 Linux 上独立排查/解决问题
- 熟悉持续集成/容器相关技术,比如说 Jenkins,Docker,k8s
- 具备良好的技术写作能力
- 有自己项目或者技术博客的优先
有了目标,学习就有的放矢了!
一个一个来攻克。
1)NIO,Java 程序员进阶之路上有这个系列:
https://tobebetterjavaer.com/nio/rumen.html
如果想更进一步,需要把 Netty 学好:
https://tobebetterjavaer.com/netty/rumen.html
2)产品交付能力。需求沟通,这个基本上都能搞定;系统设计,最近技术派的教程里,二哥的合伙人楼仔添加了一些文档,可以去看看;
文档撰写,说实话,不少开发者比较抗拒写文档,包括产品方案、技术方案、接口文档、测试报告、需求文档等等,我个人感觉挺重要的,需要平常自己多写写;功能研发,对于我们开发来说,就是敲代码写注释;
线上测试,平常多写写单元测试,提交代码之前要做集成测试,尤其是修复 bug 的时候注意不要引入新的 bug,一般团队都有专业的测试,但自己负责开发的部分,最好不要留给测试,有的部门会考核 bug 数,自己早点测出来早解决。
系统监控,像 ELK(Elasticsearch、Logstash 和 Kibana 组成的一套完整的日志管理系统),一般项目都会上一套;像 SkyWalking,主要用来跟踪分布式系统中的服务调用链。
3)数据结构与算法,对于 Java 党来说,就需要吃透字符串、数组、集合框架中的 ArrayList、LinkedList、HashMap、二叉树、二分查找法等等。
Java 针对大多数常见的数据结构和算法都做了封装,自己注意多去研究一下源码(比如说自动扩容、拉链法),对编程能力的提高也会有较大帮助。你可以到知识星球的百度网盘里看一下:
https://t.zsxq.com/0brEo9Pdu
4)分布式系统,《我在 B站上大学之 Java 后端篇》中推荐了不少视频可供学习。
https://t.zsxq.com/0b961HekU
在星球的网盘里也有几套成熟的分布式系统视频可供学习。
5)消息队列,主要就是 kafka,RocketMQ,RabbitMQ 这三个,挑一个学习一下就可以,比如说你之前项目用的 kafka,那你就只用学 kafka,别的不用学。《我在 B站上大学之 Java 后端篇》中也有推荐。
6)Zookeeper,Java 程序员进阶之路上有总结:
https://tobebetterjavaer.com/zookeeper/jibenjieshao.html
7)MongoDB,星球里有推荐:https://t.zsxq.com/08CqgjaXR
8)Redis,前几天刚分享过学习路线。
https://tobebetterjavaer.com/xuexiluxian/redis.html
9)线程池/异步/锁,可以看 Java 程序员进阶之路《并发编程》:
https://tobebetterjavaer.com/xuexiluxian/java/thread.html
10)MySQL,学习路线在这里:
https://tobebetterjavaer.com/xuexiluxian/mysql.html
11)设计模式,看星球专栏《Java 面试指南》中「技术提升篇」的两篇设计模式:
https://t.zsxq.com/6iuzn6I
系统学习的话,可以看小傅哥的重学 Java 设计模式:
https://tobebetterjavaer.com/pdf/shejimoshi.html
12)良好的编码习惯,这个可以看看阿里巴巴开发手册:
https://tobebetterjavaer.com/pdf/ali-java-shouce.html
13)Git,我把精华都放在了 Java 程序员进阶之路上:
https://tobebetterjavaer.com/git/git-qiyuan.html
14)JVM,要学习的重点看这里:
https://tobebetterjavaer.com/xuexiluxian/java/jvm.html
15)Spring 全家桶,这个主要就是实战了,这个要学的东西也比较多,首先是 Spring Boot,然后是 Spring Cloud,推荐的资料都在
https://t.zsxq.com/0b961HekU
实战项目就刷技术派,配套的教程也会跟上:
https://github.com/itwanger/paicoding
16)Linux,可以刷韩顺平的视频
17)Jenkins,可以刷尚硅谷的:
https://www.bilibili.com/video/BV1bS4y1471A
18)Docker,星球里有推荐:
https://t.zsxq.com/080tGlFYy
19)k8s,星球上有推荐:
https://t.zsxq.com/08x1I1XAd
20)技术影响力,这个就是靠平常的写作积累了,看个人爱好。我目前最看重的就是《Java 程序员进阶之路》和《技术派》了,一个是开源的知识库学习文档,一个是开源的实战项目。
乍一看,Java 要学的内容比较多,但都有成熟公开的学习资料,只要自己肯去学习,金九银十我觉得还是值得去期待的,时间规划上,你也可以看看星球「知识图谱」里的学习规划。
以上,希望帮助到你。
ending
一个人可以走得很快,但一群人才能走得更远。二哥的编程星球已经有 2100 多名 球友加入了,如果你也需要一个良好的学习环境,戳链接 🔗加入我们吧。这是一个编程学习指南 + Java项目实战 + LeetCode刷题的私密圈子,你可以阅读星球专栏、向二哥提问、帮你制定学习计划、和球友一起打卡成长。
星球的知识图谱里已经沉淀了非常多优质的内容,相信能帮助你走的更快、更稳、更远。
最后,把二哥的座右铭送给大家:没有什么使我停留——除了目的,纵然岸旁有玫瑰、有绿荫、有宁静的港湾,我是不系之舟。共勉 💪。
欢迎点击左下角阅读原文了解二哥的编程星球详情,这可能是你学习求职路上最有含金量的一次点击。