阿里P7架构师的成长之路

  前言

      系统架构师是近几年来在国内外迅速成长并发展良好的一个职位,它的重要性及给互联网行业所带来的影响是不言而喻的。很多程序员把成为一名优秀的架构师作为自己职业生涯奋斗的目标,但很多人努力却用不对地方,前段时间我与在阿里的P7架构师谈到了这个问题,并且整理出来,希望对在迷茫期的程序员有所帮助。

1、问:阿里的技术专家P7从招聘层面上来说,比如工作年限、项目经历、技术能力等需要达到什么样的要求?

答:工作年限是5-10年,在技术上有扎实的基础能力,有技术亮点,用过的框架要知道其技术原理,具备分布式系统的开发经验,能独立解决各种技术问题,比较强的实战能力。

阿里的P5要求能独立负责一个模块,P6要求能独立负责一个系统,P7要求能架构和负责多个系统,并规划系统的未来能力,在某个领域达到专家水平,可以是某个业务领域,也可以是某个技术领域。


2、问:工作中,产品方案设计的时候,经常会存在多方分歧,有分歧就会存在妥协,如何合理地坚持自己的观点,如何合理地做出妥协?

答:方案没有对错,每个方案都有它的优点和缺点,要分析别人方案的优缺点,先肯定对方方案的优点,再针对缺点提出如何解决这个问题,还是说不解决这个缺点。一起讨论出最合适的方案,而不是要争论谁对谁错。


3、问:我就是在业务团队,偏技术,框架听起来很酷但遥远,能否分享几个知识点?

答:在业务团队也可以做很多框架,比如可配置化支持业务的框架、自动生成添加删除修改页面的框架、业务数据校验的框架,只要多思考如何快速支持业务,就能找到合适的业务框架。可以从几个点出发:配置化支持业务、页面自动生成、流程标准化等。


4、问:最近在学习Spring源码,看了几本书,可以跟着作者的思路看源码,但是看完不久就忘了,其实是没有太多的应用场景,对于看源码,有什么好的方法吗?

答:可以用这个思路,比如让你来设计一个Spring框架你会如何来设计,Spring Core最重要的就是IOC和AOP。自己可以尝试实现下简单的IOC和AOP功能,然后再去对比看下Spring是如何实现的,这样即使忘记了Spring的代码,但是仍然能基础其实现原理。


5、问:对于三十岁的程度员,如果还想再深入做技术,有什么建议?

答:技术人员一定要有危机感,无论多大年纪仍然要持续地学习,我也已经三十多了,每周会花点时间学习点技术。但是年纪大了,其实时间不会那么多,所以要提高学习的效率,掌握一些学习方法,并且要静下心来学习。

学技术什么时间都不晚,因为总有新技术冒出来,但是一些永远不变的技术可以优先学习,比如各种协议(TCP,HTTP,一致性hash协议)、实现原理、算法等。


6、问:自己也实现过IOC和AOP的一些小案例,但是实现比较简单,IOC是基于一个Map来实现的,AOP使用CgLib实现,但是再看Spring Core的源码时,还是感觉很吃力,嵌套层次太多,Debug多次,还是比较吃力,怎么办?

答:技术人员一定要有个特质就是死磕,有的技术人员可能花2个星期解决一个技术BUG,就是对着源码一点点看,要能入定,带着问题去看源码会更轻松。

另一方面,要给自己制定学习计划,比如要学习哪些技术、每天学习什么、达到什么程度。工作中用一些方法减少杂乱无难度的工作内容,比如白天不答疑,或只在固定的时间答疑,写FAQ减少答疑,少参与一些会议,不实时去回即时通讯软件。


7、问:你觉得成为一个架构师应该具备什么样的技能?

答:我结合自己多年的项目经验总结出来的技能体系,希望能帮助迷茫的程序员,找到正确的学习路线,学习方向大概有七点。


构成架构师的技能体系


一、源码知识点

      源码分析对于很多人来说很枯燥,生涩难懂,下图详细介绍了源码中所用到的经典设计思想及常用设计模式,帮助大家找到分析源码的切入点,了解大牛是如何写代码的。

二、分布式架构

      分布式系统的任务是把多台机器有机地组合、连接起来,让其协同完成一件任务,可以是计算任务,也可以是存储任务。

      从分布式架构原理,到分布式架构策略、分布式架构中间件,最后在加上分布式架构实战,让程序员可以在技术深度和技术广度上得到飞跃的提升。但分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看几本书是不能完全覆盖其所有内容的。

三、微服务架构技能

      当今微服务架构非常流行,其核心思想是服务拆分与解耦,降低复杂性。微服务强调将功能合理拆解,尽可能保证每个服务的功能单一, 根据各个服务自身资源需求,单独布署,单独作横向扩展,将各个服务做到灵活、可复用。

      微服务架构解决了传统单体式架构的弊端,但其实施的本身面临很多陷阱和挑战,涉及到设计、开发、测试、部署、运行和运维等各个方面,一旦使用不当,则会导致整个微服务架构改造的效果大打折扣,甚至失败。对于这些问题,我总结出微服务需要学习的知识点,如下图所示:

 四、并发编程

      并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习大纲,我搜集了很多资料总结出一个较全面的学习大纲:

五、性能优化

      大家都知道,性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,如果想成为一名优秀的架构师,性能优化就是你必须思考的问题。

      必须要明白的是:没有两个应用程序可以使用相同的优化方式,也没有完美的优化 java 应用程序的参考路径,,坚持采用适当的方式处理性能优化。想要达到最高的性能优化,作为一个 Java 开发人员,需要对 Java 虚拟机(JVM)和底层操作系统有正确的理解。而在此之前要理解性能优化的知识体系,如下图所示:

六、实践一个双十一电商项目

      电商项目目的是把所学的分布式、微服务、性能调优等知识运用起来,只有在项目中你才能巩固知识,提升自己。实践电商项目会利用云服务器搭建真实的开发和部署环境,让你从零到项目实战,体验真实的企业级项目开发过程,让你具备独立开发和搭建分布架构系统的能力。

七、Java开发必知工具

古语云:工欲善其事必先利其器,不管是小白,还是资深开发,都需要先选择好的工具。特别是一名优秀的架构师必须有适合自己的工具,工程化专题的学习能帮助你和团队提升开发效率,让自己有更多时间来思考。

Git:可以更好地管理你和你团队的代码。

Maven:可以更好地管理jar包和项目的构建等。

Jenkins:可以更好地持续编译,集成,发布你的项目。

Sonar:一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题(提升代码的质量,更加高效地提升开发效率)。


如何学习才能快速入门并精通呢?

当真正开始学习时难免不知从何入手,从而导致效率低下影响继续学习的信心。

但最重要的是不知道需要重点掌握哪些技术,学习时频繁踩坑,最终浪费大量时间。

为了让学习变得轻松高效, 现在给大家提供一个学习平台,让你在实践中积累经验掌握原理。主要方向是JAVA架构师,在这里你可以学习Java工程化、高性能及分布式、深入浅出、性能调优、Spring,MyBatis,Netty源码分析和大数据等知识点。可以加入Java后端技术群:819940388群里有阿里大牛直播讲解技术,或是关注微信公众号:Java资讯库,回复“架构”,免费的大型互联网Java技术视频分享给大家。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,723评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,485评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,998评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,323评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,355评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,079评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,389评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,019评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,519评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,971评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,100评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,738评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,293评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,289评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,517评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,547评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,834评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,600评论 18 139
  • 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 De...
    Java架构阅读 8,646评论 2 144
  • 本周临摹:西瓜耗时:一小时 一、 铅笔勾勒出基本线条 二、 浅绿色彩铅给西瓜上色 三、 深绿色彩铅画上西瓜条纹 四...
    云云不语阅读 278评论 0 4
  • 头发碎碎地洒在阳光下, 像是拘留在岁月里的剪影, 连绵的阴雨, 包裹桂花香的雨水, 让我过分的依赖起温暖的光, 就...
    陆分之壹阅读 296评论 9 7
  • 喜欢你一月余。 我开始越来越少地提到你的大满贯,你的445,越来越多地看到别的东西。 看到你的肩伤,看到你的腰伤,...
    糖罐子糖阅读 152评论 0 0