其他分享
首页 > 其他分享> > 非科班出身的屌丝,奋斗了七年成为阿里资深架构师,现年薪百万

非科班出身的屌丝,奋斗了七年成为阿里资深架构师,现年薪百万

作者:互联网

农村出身,当过保安、进过工厂,大专生文凭的他,如何凭借自己的努力在毕业7年做到年薪百万呢?作为芸芸码农中普通的一员,他是如何一步步逆袭入BAT拿高薪的

因为对软件开发感兴趣,所以找工作的时候就一直投IT行业的职位。刚踏入这个行业时,以为突击一下东拼西凑的面试材料,就能有个很好的收获。结果却是,别说大公司了,就是很多看不上的小公司的笔试题都过不去。

焦躁阶段

后来我去了本地的一个小公司去做服务端的开发。虽然叫服务端开发,但其实就是做系统指标监控功能,从DB中读取一些指标数据,通过图表的形式展现在浏览器中,所用的技术无非就是Spring MVC那一套。这种CRUD的工作内容做时间长了,就纯粹是体力劳动了,技术视野没办法打开。

即使写这么简单的功能代码,却还总是被leader批评,说我写的代码质量太差,配不上这几千块的工资。人总是要脸面的,为了改变这种状况,就开始想着如何在平凡的工作中把事情做到极致,开始关注代码质量,开始真正的啃起了《Java编程思想》、《effective java》、《设计模式》这些书。

同时强迫自己在代码开发前,多画一些架构图、数据流程图,写代码的时候也强迫自己代码分层,经过半年的磨炼,渐渐的也能写出一些松耦合高内聚的代码,也改变了满屏if-else乱飞的现象。leader也不再说我代码差了,还给我涨了几百块钱(知识就是金钱)!

 

 

当时我以为这就是优秀程序员的核心能力,就鼓足勇气去投了一些大公司的职位,却没收到一个面试邀请函。后来投了几个小公司的面试,收到了面试却没收到offer,因为有的面试题我根本没有概念,比如:

相比关系型数据库,NoSQL的优势在哪里,你们在什么场景下会用到?分析日志里存的都是账号登陆信息,一天100G左右,找某一时间段内登陆次数最多的一个账号你们的并发量有多大,对于雪崩现象是如何规避的?

这些问题让我意识到:语法与设计模式只是程序员基本技能而已,要想进一步发展,必须在数据结构、高并发、分布式技术等方面提高。最开始学习的时候是很艰难的,基础弱,加上工作中又没有这些技术的使用场景,所以只能在论坛、博客等看零碎的文章,进步比较慢。

要想系统的学习,图书和网络课程是比较好的选择。我买了诸如《java并发编程实践》、《大型分布式网站架构设计与时间》、《Spring Cloud与微服务构建》等书,来来回回看了好几遍。然后在网上看了些视频,有免费的,也有收费的。我还花了一年左右的时间系统性地学习了一套课程,学完之后对Java相关的技能有了更为体系化的了解。同时,对于非科班出身或基础知识不够扎实的工程师来说,也可以有效起到查漏补缺的作用。

之后我就试着在工作中利用这些技术,当时的状态就是“拿着锤子后,看到哪里都是钉子”,学到一个新技术后,就想强行用在任何项目上,leader有时候说我疯了,可我觉得也不必鄙视这种经历,凡事都有一个认知过程,这也是一种积累。

1、性能调优

不管是应付前端面试还是改进产品体验,性能优化都是躲不开的话题。

优化的目的是让用户有“快”的感受,那如何让用户感受到快呢?

加载速度真的很快,用户打开输入网址按下回车立即看到了页面

加载速度并没有变快,但用户感觉你的网站很快

性能优化取决于多个因素,包括垃圾收集、虚拟机和底层操作系统(OS)设置。有多个工具可供开发人员进行分析和优化时使用,你可以通过阅读 Java Tools for Source Code Optimization and Analysis 来学习和使用它们。

必须要明白的是,没有两个应用程序可以使用相同的优化方式,也没有完美的优化 java 应用程序的参考路径。使用最佳实践并且坚持采用适当的方式处理性能优化。想要达到真正最高的性能优化,你作为一个 Java 开发人员,需要对 Java 虚拟机(JVM)和底层操作系统有正确的理解。

以下五大知识体系是我从业多年总结出来的经验,都是当前最主流的技术。想要详细了解、深入学习的可以一键三连(点赞+收藏+关注)后直接添加微信:mxh5261 即可免费获取学习资料,分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、并发编程这些成为架构师必备的知识体系。

下图是我总结性能优化应该学习理解的几大知识体系:

 

2、源码解读

源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂。

源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。

我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,基本上就是这几个层次(很偏激哦):

1.只关注项目本身,不懂就baidu一下。

2.除了做好项目,还会阅读和项目有关的技术书籍,看wikipedia。

3.除了阅读和项目相关的书外,还会阅读IT行业的书,比如学Java时,还会去了解函数语言,如LISP。

4.找一些开源项目看看,大量试用第三方框架,还会写写demo。

5.阅读基础框架、J2EE规范、Debug服务器内核。

大多数程序都是第1种,到第5种不光需要浓厚的兴趣,还需要勇气:我能读懂吗?其实,你能够读懂的。

耐心,真的很重要。因为你极少看到阅读源码的指导性文章或书籍,也没有人要求或建议你读。你读的过程中经常会卡住,而一卡主可能就陷进了迷宫。这时,你需要做的,可能是暂时中断一下,再从外围看看它:如API结构、框架的设计图。

下图是我总结出目前最应该学习的源码知识点:

 

3、分布式

分布式系统是一个古老而宽泛的话题,而近几年因为 “大数据” 概念的兴起,又焕发出了新的青春与活力。除此之外,分布式系统也是一门理论模型与工程技法并重的学科内容。相比于机器学习这样的研究方向,学习分布式系统的同学往往会感觉:“入门容易,深入难”。的确,学习分布式系统几乎不需要太多数学知识。

分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的。

总的来说,分布式系统要做的任务就是把多台机器有机的组合、连接起来,让其协同完成一件任务,可以是计算任务,也可以是存储任务。如果一定要给近些年的分布式系统研究做一个分类的话,我个人认为大概可以包括三大部分:

  1. 分布式存储系统

  2. 分布式计算系统

  3. 分布式管理系统

下图是我总结近几年目前分布式最主流的技术:

 

 

 

4、微服务

当前微服务很热,大家都号称在使用微服务架构,但究竟什么是微服务架构?微服务架构是不是发展趋势?对于这些问题,我们都缺乏清楚的认识。

为解决单体架构下的各种问题,微服务架构应运而生。与其构建一个臃肿庞大、难以驯服的怪兽,还不如及早将服务拆分。微服务的核心思想便是服务拆分与解耦,降低复杂性。微服务强调将功能合理拆解,尽可能保证每个服务的功能单一,按照单一责任原则(Single Responsibility Principle)明确角色。 将各个服务做轻,从而做到灵活、可复用,亦可根据各个服务自身资源需求,单独布署,单独作横向扩展。

下图是我总结出微服务需要学习的知识点:

 

5、工程化

工欲善其事,必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。提升开发效率何团队协作效率。让自己有更多时间来思考。

 

 

由于篇幅限制,就不一一展示了,需要文中资料的小伙伴一键三连(点赞+收藏+关注)后直接添加微信:mxh5261 即可免费获取

 

目标想法

为什么我会一直执念于要去BAT之类的大型互联网公司工作?除了因为薪水诱人,更是因为能有大规模分布式的技术可以挑战。

回首几年年来的升级打怪之路,从最初毕业于普通的二本学校,到成为顶尖互联网公司的资深Java开发工程师,不免感慨良多。如果说让我给大家分享几点心得,那以下的3点应该是我近两年来最大的感触:

跳出舒适圈,找到目标是前进的起点。如果你在自己当下的工作中无法接触太多的新技术,可以尝试多去外面公司面试,这能在一定程度上帮助自己找到学习的目标;

跳槽要趁早,杜绝成为温水里的青蛙。对于想跳槽到大公司的同学来说,一定要趁早。因为同样的水平情况下,大公司更会看中「潜力」—— 年龄越大,潜力越小;

始终保持你的学习欲。对于工程师来说,学习永无止境。但埋头苦学是不够的,你要注意自己的学习一定要有系统性,除了手头的项目和身边“大牛”的指导外,看书和网络课程是最有效的方法,用少量的金钱换取宝贵的时间,是非常值得的。

关于工作心态

处处为公司着想,我上班的时候,我不会为了自己的完成任务而敷衍,善于经常跟领导沟通,给出最优的解决方案给领导。

要敢于表现自己,领导提问都是第一个举手回答问题,不怕丢人,也不怕说错,自己哪里不足就补哪里,不因为挫折而恐惧。

今天躺在床上的舒坦到明天都是要付出代价的,任何事情都是要有长期的打算,谁敢说过完了今天或者今年,后面就不过了呢。要居安思危,自己的岗位再怎么好,应该都是要珍惜和怀有感恩之心。

有句话是这样说的,当下的才是最好的,得不到的东西只能用“未必好”三个字来形容,工作中都是寂寞难耐的,但是繁华也是会有的。

“出身不好,勤奋来补。”此外现在的不勇敢,没人会替自己描绘美好的明天!

一套个人学习的架构视频资料免费分享给大家,希望对你有帮助!

由于篇幅限制,就不一一展示了,需要文中资料的小伙伴一键三连(点赞+收藏+关注)后直接添加微信:mxh5261 即可百分百免费获取

标签:服务,科班出身,学习,Java,源码,分布式系统,架构师,屌丝,分布式
来源: https://blog.csdn.net/javassb/article/details/117029465