我这两年提高技术的经历和感觉(温馨区危机篇)

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

    回想起来,做对了很多事,也走了很多弯路,因此打算用若干篇系列文记录这一过程,一方面也算个总结,另外一方面也把走过的弯路写出来,但愿各位朋友看了有所收获。java

1  在外企温馨区,工资性价比高,但我的所掌握的技术太没竞争力

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

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

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

    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 尤为地,我是经过作项目和多问人,熟悉了很多分布式组件技术,从而在升级到架构师的路上不断进步。

相关文章
相关标签/搜索