首页 课程 师资 教程 报名

想往Java架构师发展,如何才能完成转变

  • 2019-08-12 11:35:56
  • 392次 动力节点

  从新手码农到高级架构师,要经过几步?要多努力,才能成为为人倚重的技术专家?本文将为你带来一张程序员发展路径图,但你需要知道的是,天下没有普适的道理,具体问题还需具体分析,实践才能出真知。


  架构师的“内功”


  我认为,架构师的内功主要包含三部分:判断力、执行力、创新力,简单解释如下:


  判断力:能够准确判断系统的复杂度在哪里,就像武侠高手一样,能准确地看出对手的破绽和弱点。


  执行力:能够使用合适的方案解决复杂度问题,就像武侠高手一样,能选择合适的招式或者方法打败对手。


  创新力:能够创造新的解决方案解决复杂度问题,就像武侠世界里,小一些的创新是创新招式,而武学宗师能够创立新的武学或者心法,例如张三丰创立太极拳一样。


  因此,要成为一个优秀的架构师,就需要不断地提升自己这几方面的内功,而这三方面的能力主要来源于经验、视野、思考。


  经验:设计过的系统越多、系统越复杂,架构师的内功也就越强,不管是成功的架构,还是失败的架构,不管是踩坑的经验,还是填坑的经验,都将成为架构师内功的一部分。


  视野:掌握的知识和技能越多、越深,架构师的内功也就越强,他山之石可以攻玉,站在巨人的肩膀上会看的更高更远。


  思考:经验和视野都是外部输入,类似于我们吃的食物,但光吃还不行,还要消化,将其变为我们自己的营养,这就是思考的作用。思考能够将经验和视野中的模式、判断、选择、技巧等提炼出来为我所用,思考也能促使我们产生新的创意和灵感。


  结合上面的分析,从程序员到架构师的成长之路,总的指导原则是:积累经验,拓宽视野,深度思考。按照这个总的原则为指导,接下来我们看看从程序员到架构师的成长过程中,具体如何实践。


Java编程培训多少钱.jpg


  工程师


  阶段描述


  成为一个合格的工程师需要1~3年时间,其典型特征是“在别人的指导下完成开发”,这里的“别人”主要是“高级工程师”或者“技术专家”,通常情况下,高级工程师或者技术专家负责需求分析和讨论、方案设计,工程师负责编码实现,高级工程师或者技术专家会指导工程师进行编码实现。


  成长指导


  工程师阶段是最原始的“基础技能积累阶段”,主要积累基础知识,包括编程语言、编程工具、各类系统的基本使用。以Java后端工程师为例,工程师阶段需要积累的经验和技能有:


  Java的语法、基本数据结构的使用。


  Eclipse、IDEA、Maven、Linux命令行等各种工具。


  数据库CRUD操作、缓存的基本使用等。


  业务系统的基本流程。


  工程师阶段最好的学习方法就是找经典的书籍系统地学习,而不要遇到一个问题到网上搜搜然后就解决了事。以Java为例,《Java编程思想》《Java核心技术》《TCP/IP协议》这类大部头,一定要完整地看一遍,即使里面很多内容当前工作暂时用不上。


  高级工程师


  阶段描述


  成长为高级工程师需要2~5年时间,其典型特征是“独立完成开发”,包括需求分析、方案设计、编码实现,其中需求分析和方案设计已经包含了“判断”和“选择”,只是范围相对来说小一些,更多是在已有架构下进行设计。以Java后端工程师为例,高级工程师需要完成的工作包括:


  MySQL数据库表如何设计,是设计成两个表还是三个表?


  是否要用缓存,缓存的Key和Value如何设计,缓存的更新策略是什么?


  产品提出的需求是否合理?是否有更好的方式来满足?


  成长指导


  从普通工程师成长为高级工程师,主要需要“积累方案设计经验”,简单来说就是业务当前用到的相关技术的设计经验。以Java后端高级工程师为例,包括:表设计经验、缓存设计经验、业务流程设计经验、接口设计经验等。当接到一个业务需求的时候,高级工程师能够组合这些设计经验,最终完成业务需求。


  高级工程师阶段相比工程师阶段,有两个典型的差异:


  深度:如果说工程师是要求知道How,那高级工程师就要求知道Why了。例如Java的各种数据结构的实现原理,因为只有深入掌握了这些实现原理,才能对其优缺点和使用场景有深刻理解,这样在做具体方案设计的时候才能选择合适的数据结构。


  理论:理论就是前人总结出来的成熟的设计经验,例如数据库表设计的3个范式、面向对象的设计模式、SOLID设计原则、缓存设计理论(缓存穿透、缓存雪崩、缓存热点)等。


  针对技术深度,我的建议还是系统地学习,包括看书和研究源码。例如,研究Java虚拟机可以看《深入理解Java虚拟机》、研究MySQL可以看《MySQL技术内幕:InnoDB存储引擎》、研究Memcache可以去看其源码。


  针对设计理论,由于涉及的点很多,没有一本书能够涵盖这么多的设计点,因此更多的是依靠自己去网上搜索资料学习。那我们怎么知道哪些地方会有设计理论呢?简单来说,就是假设每个设计环节都有设计理论,然后带着这种假设去搜索验证看看是否真的有很熟的设计理念。


  技术专家


  阶段描述


  成长为技术专家需要4~8年时间,其典型的特征是“某个领域的专家”,通俗地讲,只要是这个领域的问题,技术专家都可以解决。例如:Java开发专家、PHP开发专家、Android开发专家、iOS开发专家、前端开发专家等。通常情况下,“领域”的范围不能太小,例如我们可以说“Java开发专家”,但不会说“Java多线程专家”或“JavaJDBC专家”。


  技术专家与高级工程师的一个典型区别就是,高级工程师主要是在已有的架构框架下完成设计,而技术专家会根据需要修改、扩展、优化架构。例如,同样是Java开发,高级工程师关注的是如何优化MySQL的查询性能,而技术专家可能就会考虑引入Elasticsearch来完成搜索。


  成长指导


  从高级工程师成长为技术专家,主要需要“拓展技术宽度”,因为一个“领域”必然会涉及众多的技术面。以Java后端开发为例,要成为一个Java开发专家,需要掌握Java多线程、JDBC、Java虚拟机、面向对象、设计模式、Netty、Elasticsearch、Memcache、Redis、MySQL等众多技术。常见的拓展技术宽度的方法有:


  学习业界成熟的开源方案,例如,Java开发可以去学习Redis、Memcache、Netty等,Android开发可以去研究Retrofit、Fresco、OkHttp等。


  研究业界的经验分享,例如BAT、FANG等大公司的经验,可以通过参加技术大会等方式去近距离了解。


  需要注意的是,拓展技术宽度并不意味着仅仅只是知道一个技术名词,而是要深入去理解每个技术的原理、优缺点、应用场景,否则就会成为传说中的“PPT技术专家”。例如,以Java开发为例,知道Netty是个高性能网络库是远远不够的,还需要学习Netty的原理,以及具体如何使用Netty来开发高性能系统。


  架构师


  阶段描述


  成长为架构师需要5~10年时间,其典型特征就是能够“独立完成一个系统的架构设计”,可以是从0到1设计一个新系统,也可以是将架构从1.0重构到2.0。初级架构师负责的系统复杂度相对来说不高,例如后台管理系统、某个业务下的子系统、100万PV量级的网站等。


  架构师和技术专家的典型区别是:架构师是基于完善的架构设计方法论的指导来进行架构设计,而技术专家更多的是基于经验进行架构设计。简单来说,即使是同样一个方案,架构师能够清晰地阐述架构设计的理由和原因,而技术专家可能就是因为自己曾经这样做过,或者看到别人这样做过而选择设计方案。


  事实上很多技术专家其实就承担了初级架构师的角色,因为在系统复杂度相对不高的情况下,架构设计的难度不高,用不同的备选方案最终都能够较好地完成系统设计。例如,设计一个日PV100万的网站,MySQL+Memcache+SpringBoot可以很好地完成,MongoDB+Redis+Nginx+php-fpm也可以很好地完成,备选方案设计和选择并不太难,更多的是看团队熟悉哪个技术。


  成长指导


  从技术专家成长为架构师,最主要的是形成自己的“架构设计方法论”,我的架构设计专栏其实就是讲述完整的架构设计方法论,包括架构设计目的、架构设计原则、架构设计步骤、架构设计模式等,类似的架构设计方法论还有《恰如其分的软件架构:风险驱动的设计方法》和《领域驱动设计》等。


  要形成自己的架构设计方法论,主要的手段有:


  系统学习架构设计方法论,包括订阅专栏或者阅读书籍等。


  深入研究成熟开源系统的架构设计,这个手段在技术专家阶段也会用到,但关注点不一样,同样是研究开源系统,技术专家阶段聚焦于如何更好地应用开源项目;架构师阶段聚焦于学习其架构设计原理和思想,例如Kafka的文档中就有关于消息队列架构设计的分析和取舍。


  结合架构设计方法论,分析和总结自己团队甚至公司的各种系统的架构设计优缺点,尝试思考架构重构方案。如果在这个基础上真的能够推动架构重构,那就更好了,既能够实践自己的架构设计方法论,同时积累经验,又能够展现自己的技术实力,拿到结果。


  架构师所需要掌握的知识体系


  而对于2-8年的Java程序员我这里有整理出最新的学习路线规划,有需要的朋友可以自行下载。


  提升竞争优势,扬长避短:


  明确了自己为何工作之后,就可以着重提升一下自己的竞争优势,下面推荐大家这套架构的内容脑图涵盖了当下主流技术:

image.png

  2、架构筑基专题


  深入内核、直击故障、拒绝懵圈。

image.png

  3、微服务架构专题


  你还不知道微服务,怎么涨薪。

image.png

  4、高性能架构专题


  成为互联网架构师,你要的都在这里。

image.png

  5、团队协作开发专题


  让你团队开发效率提高十倍。

image.png

  6、B2C商城项目实战


  撸起袖子干实事,项目经验那点事。

image.png


  有了路线解析图,有没有免费资料?有没有志同道合的小伙伴共同进步?资源获取登录动力节点IT培训【视频课程】专栏,下载学习。


image.png

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值998元实验班免费学
姓名
手机
提交