前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享我这8年,是如何一步一步走向架构师的

分享我这8年,是如何一步一步走向架构师的

原创
作者头像
Java知音
修改2018-11-16 11:02:45
1K0
修改2018-11-16 11:02:45
举报
文章被收录于专栏:Java职业技术分享

摘要:心血经验分享,架构师更多的是一个不断学习,不断积累的过程,希望可以帮到同行业的朋友们

前言

成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。

这几种能力之间的关系大概如下图。编程能力、调试能力和编译部署能力属于最基础的能力。不能精通掌握这三种能力,很难在性能优化能力和业务架构能力方面有所成就。具备了一定的性能优化能力和业务架构能力之后,才能在线运维能力和项目管理能力方面表现优越。团队管理能力是最高能力,它对项目管理能力的依赖度更大。

下面分享Java程序员的学习线路图。对于想要提升自己,对自己未来迷茫的Java工程师们,如需要这些架构路线图,以及我们整理的一些架构师精讲资料,可以加群程序员交流群:702895049获取哦,涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。

基本知识

1.学会分析源码

程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这种怪状,真要追究起来,怪不得程序员这个群体本身 --它是两个原因造成的:

我们所有的教育和培训都在强调怎么写代码,并没有教大家如何读代码

大多数工作场景都是一个萝卜一个坑,我们只需要了解一个系统的局部便能开展工作,读不相干的代码,似乎没用

读源码三问:“为什么要有这样的架构”,“他是什么样子的”,“他是怎么工作的”。

那么阿里程序员是如何去读代码的呢?

2.分布式架构特点及设计理念

首先需要说明的是,分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能都是不能完全覆盖其所有内容的。介于这篇文章是引导初学者入门,所以我个人觉得为初学者介绍一下当前分布式系统领域的全貌,也许比直接推荐论文和课程更有帮助。当初学者对这个领域建立起一个大的 Picture之后,可以根据自己的兴趣,有选择性的深入不同领域进行进一步的学习。

3.为什么微服务会这么火?

接下来我们总结下微服务的优点。

易于开发与维护

微服务相对小,易于理解

启动时间短,开发效率高

独立部署

一个微服务的修改不需要协调其它服务

伸缩性强

每个服务都可以在横向和纵向上扩展

每个服务都可按硬件资源的需求进行独立扩容

与组织结构相匹配

微服务架构可以更好将架构和组织相匹配

每个团队独立负责某些服务,获得更高的生产力

技术异构性

使用最适合该服务的技术

降低尝试新技术的成本

下面就送上学习架构图吧

分享适合开发2——5年的Java程序员的学习线路图。对于想要提升自己,对自己未来迷茫的Java工程师们,如需要这些架构路线图,以及我们整理的一些架构师精讲资料,可以转发关注我,然后私信‘架构’即可获取哦,涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。

4.程序员到底要不要学习JVM

总有人问这个东西好像用不上,于是要不要学这样的问题。

然后又总有人担心一直搬砖成天做些重复没提升的东西。

如果你这辈子只甘心做一个平庸的Java码农,那么你完全没有必要去学习JVM相关的知识,学习JVM对于一个Java程序员的好处大概可以概括为下几点:

1.你能够明白为什么Java最早期被称为解释型语言,而后来为什么又被大家叫做解释与编译并存的语言(了解JVM中解释器以及即时编译器就可以回答这个问题);

2.你能够理解动态编译与静态编译的区别,以及动态编译相对于静态编译到底有什么好处(JVM JIT);

3.你能够利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以辅助你观察Java应用在运行时堆的布局情况,由此你可以通过调整JVM相关参数提高Java应用的性能;

4.可以清楚知道Java程序是如何执行的;

5.可以明白为什么Java等高级语言具有可移植性强的特性。

其实这个问题相当于“为什么C/C++程序员需要学体系结构与编译原理?”

话不多说,附上学习体系图

5.被我们忽略掉的工程化专题

在IT产业中,寡头化出现代表着创业公司减少--没人再去用声势浩大的发布会讲故事、没人再去宣传自己拿了多少融资。

这一代中国人自小的教育不比欧美的STEAM,而是重学术、轻手艺。我们往往会为工科和产能过剩画上等号。强大的资本和技术门槛为这些产业蒙上了一层神秘的面纱,让普通人很难真正了解到其中技术和工艺的复杂程度,也就更难明白其中的价值。可正是因为中国的工程化能力,才让我们有机会走到AI时代的第一梯队,而不仅仅是靠学术研究能力。

附上思维脑图

6.没有高并发经验,想进大公司该怎么办?

假如没有靠谱的公司,接触不到高并发的业务场景怎么办?你永远解决的是小问题,工作10年技术也未必提升多少。

很多程序员也经常找我说,没有经验就没有靠谱的公司收,没有靠谱的公司也就没有经验,我看了无数的书,自己做了无数的实验拼命想找个靠谱公司去深入,但是感觉好难,简直是个死循环

读者群的朋友大家都比较关注高并发,原因很简单,想去BAT这样的大公司,你必须要有高并发的经验。今天普及下高并发的知识,希望大家对高并发有一个正确的认识。

下面分享Java程序员的学习线路图。对于想要提升自己,对自己未来迷茫的Java工程师们,如需要这些架构路线图,以及我们整理的一些架构师精讲资料,可以加群程序员交流群:702895049获取哦,涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。

7.学习千遍,不如项目实战成功一次

一次完整的开发,是最好的学习。它能让你对整个开发流程有完整的认识,对知识也会有极大的巩固。更重要的是,你将学会将理论知识用到实际开发中的方法。

所以无论项目大小,一定要动手去进行开发学习。

项目实战相信很多程序员都多少会有的,可是我们这个还要学习什么呢?

那就要看你想不想成为一个架构师了,为什么98%的程序员工作10年,一辈子还只是一个开发者。程序员们都要想一想这个问题,我是不是需要提升了。

我认为,学习项目实战最重要的还是学习项目管理,作为程序员,都应该学点项目管理。

凡事皆为“项目”

项目的两类属性(复杂的逻辑,庞大的信息量)

人脑擅长的是思考,而不是记忆

成为一个“独当一面”的人

独当一面是一个很性感的词。是否拥有它,对应的职场价值,有着天壤之别的。

这就是我们学习“项目实战”的终极意义。

或许作为程序员的你想提升自己,却找不到突破口,公司没人带。又或许你已经工作6年了,却还是很迷茫,很多知识都还是不懂,也没有达到自己期望的一个职位,薪资。

到这里,你可能认为文章已经完了,学完这些就可以去BAT大公司做一个架构师,年薪50W+吗?

不,你错了,这些都知识最基本的知识,想要成为一个架构师必须是一个累积的过程,也是这么多程序员终其一生也只是一个开发,到年龄就会被公司辞退。

编程能力

编译部署能力

性能优化能力

调试能力

在线运维能力

业务架构能力

市场在变,团队在变,规划也不应该一成不变。

客户至上的是项目规划的出发点。

就人员规划而言,规划需要考量团队成员的能力、绩效、成长等多方面的因素。

下面分享Java程序员的学习线路图。对于想要提升自己,对自己未来迷茫的Java工程师们,如需要这些架构路线图,以及我们整理的一些架构师精讲资料,可以加群程序员交流群:702895049获取哦,涉及的知识点(Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.学会分析源码
  • 3.为什么微服务会这么火?
  • 4.程序员到底要不要学习JVM
  • 5.被我们忽略掉的工程化专题
  • 6.没有高并发经验,想进大公司该怎么办?
  • 7.学习千遍,不如项目实战成功一次
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档