前言

系统架构师是近几年来在国内外迅速成长并发展良好的一个职位,它的重要性及给互联网行业所带来的影响是不言而喻的。很多程序员把成为一名优秀的架构师作为自己职业生涯奋斗的目标,但很多人努力却用不对地方,前段时间我与在阿里的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源码分析和大数据等知识点。可以加QQ:3136292260,或是关注微信公众号:Java资讯库,发送“架构”,免费的大型互联网Java技术视频分享给大家。

阿里P7架构师的成长之路相关推荐

  1. 阿里P6架构师的成长之路,我只用了5个月.....

    有人说JAVA工资高.待遇好这事是一个谣言,其实这并不是谣言,事实就是如此! 令我惊讶的是,相比于Python.C++这类语言,有些人觉得编程是一件很枯燥的事情,只把他当做工作.但是你却不得不接受它. ...

  2. 阿里P7架构师谈:MySQL慢查询优化、索引优化、以及表等优化总结

    MySQL优化概述 MySQL数据库常见的两个瓶颈是:CPU和I/O的瓶颈. CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候. 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应 ...

  3. 阿里P7架构师要求:Web核心+开源框架+大型网站架构!含面试题目!

    阿里P7技能(一):数据结构和算法: 常用数据结构:链表.堆与栈.哈希表等,常用的排序等. 掌握:精通 阿里P7技能(二):java高级 java相关的高级特性:JVM.多线程高并发.网络等. 掌握: ...

  4. [架构之路-4]:架构师 - 架构师的四大架构价值等级与架构师全面成长之路

    目录 第1章 架构师的四大架构价值等级 第一等级L1: 一知半解型(入门架构师)-- 辅助价值 第二等级L2: 拆解还原型(初级架构师)-- 表层价值.协调价值 第三等级L3: 革新型(中级架构师)- ...

  5. Netstars CTO陈斌:架构师的成长之路

    中生代技术 链接技术大咖,分享技术干货 接力技术,链接价值 架构与架构师 Architect,即架构一词可以溯源到希腊语ἀρχιτέκτων , 指的是建筑的规划,设计和建造过程和结果.现在也用于指系 ...

  6. 阿里P7架构师到底有多难?

    搜索"架构师"三个字,会自动出现几个高频问题: 1.架构师是做什么的? 2.架构师需要掌握哪些知识? 3.架构师和程序员的区别是什么? 江湖上对于架构师有着各种各样的传说,但架构师 ...

  7. 阿里架构师的成长之路,Java开发者的技术梦要如何实现

    写在开篇: 不管是开发.测试.运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己. 然而&quo ...

  8. 阿里P7架构师,带你点亮程序员蜕变之路

    前言: Java是现阶段中国互联网公司中,覆盖度最广的研发语言. 掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地. 有不少朋友问,成为Java架构师除了 ...

  9. 分享Android资深架构师的成长之路,建议收藏

    背景 经常有网友在知乎问答提两个问题:"现在学习移动开发还有前景吗?""开发还有什么可以研究的?".网友回复:"现在还学移动开发?如同49年加入国军! ...

最新文章

  1. 卡片式设计的最佳实践分享
  2. SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考
  3. springmvc工作流程详解_软装设计师工作流程详解
  4. ‘FactorAnalyzer‘ object has no attribute ‘analyze‘和fa.loadings改成fa.loadings报错解决
  5. MPEG4 (ISO/IEC 14496) 文档内容 简介
  6. 判断是否大于_电动车是否属于机动车的辩论要点
  7. 贪吃蛇博弈算法python_算法应用实践:如何用Python写一个贪吃蛇AI
  8. XML简介和使用AFNetworking解析XML案例
  9. leetcode 423 从英文中重建数字
  10. [翻译]用表单字段加亮的方式为用户提供友好的界面
  11. Windows系统文件浏览标签窗口工具
  12. 阳光动力2号太阳能飞机的基本工作原理
  13. 第十章 VLAN间路由
  14. C/C++——字符串拼接
  15. threeJS鼠标单击模型边缘高亮
  16. 9款好用的SSH客户端软件推荐
  17. 离散数学复习:二元关系
  18. 木瓜蛋白酶和胃蛋白酶对免疫球蛋白Ig处理的不同
  19. finall,finally,finalize
  20. 计算机专业留学法国哪个学校,法国留学读计算机专业去哪些学校?

热门文章

  1. 远程处理Remoting
  2. 又一个强大的PHP5.3依赖注入容器
  3. C#从数据库导出数据[excel]
  4. 一种新的攻击方式:使用Outlook 表单进行横向渗透和常驻
  5. [na]pc加入域认证细节
  6. js获取当前页面的URL信息
  7. c++各种数据类型表示范围
  8. struts2上传图片的全过程
  9. iOS progressive Web App (PWA) 技术
  10. 使用 xcworkspace 管理 iOS 工程