我用了两年,做到了收入翻番(舒适区危机篇)

和2017年的税后收入相比,19年的税后收入预计能翻番,当然基数绝非是5万10万,毕竟17年的时候我已经达到了Java高级开发的职级。而且在这基础上,尚能做到生活工作平衡。

回想起来,作对了不少事,也走了不少弯路,所以打算用若干篇系列文记录这一过程,一方面也算个总结,另一方面也把走过的弯路写出来,希望各位朋友看了有所收获。

1  在外企舒适区,工资性价比高,但个人所掌握的技术太没竞争力

在2017年初的时候,我在外企也享受了一段比较舒适的时光,到什么程度呢?

1 早上应该是9点上班,但9点半办公室里会有一半的人,从9点45开始,一些老油子(也包括我),会陆续到达,一些混吃等死的人(不是我),会10点或者更晚后到。有些人可能会想,这不算什么,人家互联网公司有比这个时间更晚的,但外企前天的下班时间一般不会超过7点。

2 到了以后,先看下美国的邮件,如果没大事(一般不会有),早上慢慢回下邮件,到11点半吃饭,外面逛一圈,周五能逛两圈,1点15开始干活写代码。

3 下午,如果遇到可能会担责任的事,就拉上人开个会,大家定个方案,然后慢慢做,做到5点半,坐等下班,如果很忙,不会超过7点。

4 晚上和老外开电话会议,一般一周1次,晚上9点到10点。国内老板管人事,业务向美国方汇报,国外用的技术绝对没国内先进,所以大家懂的。

5 一年过两份假期,中国的之外,美国假期当天没邮件过来,所以次日一般也没事。比如7月4日是独立日假期,美国不上班,所以我们7月5号一般没邮件,也相当于没事。

说到这里,可能大家非常羡慕,其实天下没免费的午餐,我这样的工作经历过以后,技术落后到什么程度?

1 平时工作,java只需要JDBC,Spring都用不到,ORM就用类似hibernate的框架,由于没业务需求,组里还专门成立spring cloud学习小组,就学些基本的demo案例。

2 SQL就一般的增删改查,也就是个MySQL主从读写,没有LVS。

3 部署用Jenkins + Git + Sonar,这块勉强没落后,这是我难得的能带到新公司的技术。

4 Redis用单机版的,Nginx + lua,也就是个调研项目,Netty或kafa或Mycat等组件,没听说过,甚至dubbo都没机会用。

所以当时,只要是组内跳槽出去的,过三个月后技术就能超过我们。这还不算,最糟糕的是,当时我更不知道BAT等互联网公司究竟用什么技术,也就是说,我当时开始准备面试时,连该准备什么都不知道。

2  刚开始面试,撑不过半小时,只能硬着头皮不断学

我是什么时候打算要换工作的?看网上,一些工作年限远小于我的人,在互联网公司里工资比我高,而且奖金至少是4个月的,再结合自己成天技术没进步,就着急了。

刚开始的时候,由于不知道要学什么,只能一方面先看,另一方面先找些小公司去面试。回想起我当前面试的窘况程度,简直不堪回首。

1 面试官问,你分布式框架用过哪些?应该是Redis之类的,但我直接说,用过Spring MVC框架。

2  面试官问,你用过哪些缓存?我说,我用过HashMap里放内容,作为缓存。再深入就不知道了。

3 面试官问,你们数据库层面怎么做优化?我只能说到通过执行计划优化。分库分表,我都没听说过。

后来好些了,也看了诸如Netty和Redis之类的框架,也能撑过些基本问题,比如Redis有哪些数据结构,Netty如何设置编码器和解码器。但一些底层问题一问就倒。比如Redis如何搭建集群,Netty里读写索引的工作原理。

诸如此类,虽然一次次面试失败没回音的滋味不好受,但总算知道了前进的方向,一方面,赶紧根据面试问题,把相关知识点看熟悉,另一方面,会看面试被问到的底层代码。

到后来,我也看了不少文章,这段时间我遇到的问题是,其实到后来,一些组件我都掌握了,而且也看了一些架构方面的书,但一方面没实践经验,面试过程中没法说上细节,另一方面,缺乏架构技术和业务的整合,所以面试时,只要是个资深面试官,就能看出我的技术是看来的,而不是实践得到的。所以一些小的互联网公司我都进不去,更何况是BAT。

3  中间出了一本书,也在不断讲课,从中不断感受到自己和平均水平的差距

这段时间里,用屡败屡战来形容我也不为过,为了提升能力,我也开始在博客园写文章。为了提升自己的技能,我还到一家培训学校去讲课。对,是讲课挣钱,而不是去出钱听培训。当然,那时我Java基本功还是很扎实的,也写了Java Web轻量级开发面试教程Java核心技术及面试指南这两本书。

通过讲课,我一方面没误人子弟,另一方面在备课的时候,还加深了对Java核心和Web的理解。更重要的是,我结实了不少资深老师,在学生中,也不乏牛人,我也算脸皮比较厚,尚能虚心向人请教,所以那个时候,好歹也搞清楚了该看哪些方面的内容以及需要达到的程度。

之前我是通过面试和看文档,了解外面普遍用到的技术,讲课后,随着接触到更多的牛人,我能清晰地看到自己和平均水平的差距,甚至一度产生了继续在舒适区混的想法。不过幸好,后来面试成功了两家公司,也算增加了我一些自信心,而且我也算危机感比较强,于是终于也坚持下来了。

4  面成了一家互联网金融公司,但没敢去

面成的第一家公司是以外派的身份去一家比较大的互联网,钱不少,但想想是外派,当时我的外企名称毕竟也能唬人,而且好歹还是正式员工,还算稳定,所以就没去。

另外一家是P2P金融公司,也应聘成了架构师,记得当时面试分4块。

第一是Java核心和Web的基本功,比如集合多线程Spring MVC,我这个秒过。

第二是数据库,我好歹看了一些关于执行计划的调优,也了解了一些MySQL的集群,也过了。

第三是大数据,是Hadoop,我一些理论过了,也能证明自己在项目里用过,但被面试官看出,只用过基本的技能,一些集群和高级知识点没用过。

第四块是我最担心的分布式集群,不过当时就问了Dubbo和Zookeeper整合,以及Redis集群的基本问题,没怎么细问,结论也是用过,但没深入了解过。

结果我就通过了面试,但看下来这是家P2P金融公司,风险太大,就没去。后来果然,18年6月份,这家公司倒了。再回想一下,可能当时能力比较强的人已经不怎么愿意去这家P2P公司了,所以招聘要求有所降低。

总之我也是幸运,否则17年年中进去,18年年中公司倒闭我出来,再怎么解释总会有污点,后来再要进好公司就难了。

后来当我进了一家互联网公司后,就见到不少3年左右经验的程序员进入一些P2P金融公司,然后公司踩雷倒了,随后他们就在一些小公司之间辗转,每家公司也干不长,这类人很可惜,其中不乏能力强的,但因为每家公司干不长(虽然不是个人原因),但再要进好公司,可能就得先在一家公司干个至少3年证明自己稳定性不差后再做打算了。

5  终于面成了一家规模比较大的互联网公司,换公司前非常忐忑

如果干一类事情的成功率只有10%,那么干多少次,至少成功一次的概率能达60%?

干一次失败的概率是90%,连续8次都失败的概率是43%,也就是至少成功一次的概率已经接近60%。而且那个时间点,至少面试了10家,按这个算下来,成功一次的概率到66%了,更何况每次面试结束后,我会不断总结提升,所以终于在17年的年底,我面成了一家互联网公司,虽然不是BAT,但规模不小,国内也非常知名。

由于我那个时候已经成为面霸了,面试时表现也算不错(不过进去以后领导估计就后悔了)。

1 第一轮技术面试是我将要进组的组员,介绍项目经验时,我直接抛出线程池内存模型,再通过volatile和final讲述了ConcurrentHashMap内部细节,面试官没细问就让过了。

2 第二轮技术是组长,我介绍了一通JVM虚拟机优化和SQL优化,也让过了。说实在话,前两轮技术面试都是以我为主,面试官没怎么问。

3 第三轮技术面试是部门经理,本来,我还想挑战一下架构师的工资水平,但部门经理火眼金睛,虽然我竭力说了一通,结论还是:我基本功还行,架构方面也有实践经验(真实情况是我的经验都是看资料得来的),但架构方面没达到架构师的水平。于是和我明说,我可以干架构师的活,但工资只能给到高级开发的水平,如果愿意就继续。

我在面试之前,已经知道这家公司加班不算少,所以在内心也定了一个公司标准,说实在的,当时在工资方面其实没达到我的预期,但一方面我也面了那么多了,也知道自己的真实水平,更知道要找家能提供架构师方面实践经验的公司很难。相反,如果继续在外企呆着,时间不等人,估计再这样下去我的技术就更加落后于平均水平了,所以我就咬咬牙进去了。

6  后文预告

在原来外企办离职的时候,不少人理解我,但也有人说我从外企到互联网公司会很苦,其实我已经做好了准备。

技术上,我就继续看相关资料,态度上,当时我还在外企,就不再继续松松垮垮,比如上班不再看手机,多看技术资料,也尽量在下班后再多干点活,以适应加班的节奏(事实上在外企我根本想象不到互联网公司的加班)。

不过心态上我还算放松,毕竟自己基本功不错,而且人也算上进,肯多问,而且我也做好了进互联网公司被别人鄙视的准备。办好外企的离职手续后,我就与18年的年初去后面要详细介绍的互联网公司。

在下文里我将详细介绍:

1 外企的技术与互联网技术的差距以及我是怎么适应过来的。

2  外企有工作节奏比较慢,所以人际关系不复杂,而互联网公司推崇狼性文化,我是怎么一点点通过加班和改变工作模式等的方式适应过来的。

3 尤其地,我是通过做项目和多问人,熟悉了不少分布式组件技术,从而在升级到架构师的路上不断进步。

原文地址:https://www.cnblogs.com/JavaArchitect/p/10706813.html

时间: 2024-10-16 12:54:28

我用了两年,做到了收入翻番(舒适区危机篇)的相关文章

流量主第一篇:001_如何提高微信公众号流量主收入

在公众号运营交流群里,一些人经常在晒流量主收入,最近由于流量主的单次点击单价下降,好多人叫苦不迭,但从大家晒收入的过程中,我发现了一个问题,为什么同样5W活粉的号,有的流量主月收入只能维持3000~4000,有的却能稳定在10000甚至更高呢?众所周知,流量主的收入来源于推文文章的展示,因此阅读数越高基本上流量主的收入也会越高,一个正常运营的公众号,UV基本上是维持在15%~20%之间, 而阅读的大头的来源是朋友圈,是UV的2倍甚至更高,也就是说粉丝将文章分享到朋友圈获得的阅读是占据了公众号阅读

裸辞两个月,海投一个月,从Android转战Web前端的求职之路

前言 看到这个标题的童鞋,可能会产生两种想法: 想法一:这篇文章是标题党 想法二:Android开发越来越不景气了吗?前端越来越火了吗? 我一向不喜欢标题党,标题中的内容是我的亲身经历.我是2016年6月份毕业,第一份工作是做Android开发.2018年1月初,我辞掉了工作,从零开始,在家自学了两个月的Web前端开发,3月份开始找Web前端的工作,3月底找到工作. Android开发并非不景气,我加入了刘欣老师的知识星球「码农翻身」,他在里面说过: 如今,手机人手一部,肯定是需要APP开发,但

华为 1.static有什么用途?(请至少说明两种)

1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问.它是一个本地的全局变量. 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用.那就是,这个函数被限制在声明它的模块的本地范围内使用 以上是c的内容,对于c++请看以下三个示例之后的部分!!! 1)示例: static的第一个作用是保持变量内容的持久.存

从万维钢老师的两种技能增长曲线-回顾和总结自己当下技能成长道路

技能水平的成长,其实有两种不同的类型:对数增长和指数增长            1.对数增长 [技能特点]初期进步速度非常快,后期则越来越慢,最后几乎是一个平台期,哪怕你付出极大的努力,也只能获得一点小小的突破 [实例]体育运动.减肥.学习外语 [解决办法]想要从对数增长的诅咒里突破出来,你必须学会主动脱离自己的舒适区 [危险]因为这种增长回报太容易了,导致有些人一辈子都在回忆中学时代的成就,无法自拔 [注]增长曲线是客观存在的 2.指数增长 [技能特点]从你开始做这件事情,一直到很长很长时间内

路由器与三层交换机实验演示 -- 充当两个vlan的网关

路由器与三层交换机实验演示 -- 充当两个vlan的网关 --百家菜  背景:我们到知道路由器有路由功能,那么你知道怎么在一个路由器接口上配置两个网关(比如两个vlan的网关)?注意是在一个接口上而不是两个:我们在有些时候会将三层交换机拿来当路由器使用,那么这个时候我们应该如何配置三层交换机呢?我们以单臂路由为例子来演示一下. 在这里我不多说,直接给大家演示在Packet Tracer6.0上的操作. 环境:windows操作系统,packet  tracer 6.0  实验一:直连路由 单臂路

vs2010 和vs2012的区别 副标题--Loaded事件走两次

我上一遍博文没有通过首页显示!这边就简短的描述一下问题,希望大拿们有遇到类似问题或者知道原因的回答一下下!!! 最终的问题是Loaded事件走两次,具体可以看我上一篇对问题的描述. 在目标框架同样都是在.net framework 4.0的情况下,用vs2010和用vs2012或者vs2013的结果不同: 用vs2010,在之前没有安装vs2012的情况下,Loaded事件走两次.安装完vs2012后Loaded事件走一次. 个人理解.net framework 4.0有多个版本,至少vs201

JavaScript中的两个“0”(翻译)

本文翻译自JavaScript’s two zeros JavaScript has two zeros: −0 and +0. This post explains why that is and where it matters in practice. JavaScript 中有两个“0”: -0 和 +0 .这篇文章解释了为什么,并且指出实际生产中会造成什么影响 1.The signed zero 1.“-0” Numbers always need to be encoded to b

JavaScript中的两个“0” -0和+0

JavaScript中的两个"0"(翻译) 本文翻译自JavaScript's two zeros JavaScript has two zeros: ?0 and +0. This post explains why that is and where it matters in practice. JavaScript 中有两个"0": -0 和 +0 .这篇文章解释了为什么,并且指出实际生产中会造成什么影响 1.The signed zero 1."

链圈的朋友们值得收藏!腾讯首席架构师教你两种区块链设计思路

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由敖萌发表于云+社区专栏 区块链发展到了现在,产生了很多不同形式的区块链技术.随着技术的发展,目前比较公认的看法是区块链已经走进了2.0时代.区块链1.0是以比特币为代表的去中心化数字货币区块链系统,而2.0则是引入了智能合约的区块链系统. 在支持智能合约的区块链系统中,Linux基金会所属的Hyperledger Fabric(由IBM贡献)和Vitalik Buterin所领导的以太坊基金会所创造并管理的Ethereum(以太坊