一名普通java程序员如何成为一名高级架构师?

月下0郁金香


架构师是互联网行业中的高薪、高阶岗位,公司技术团队的核心人物,在以技服人的软件领域,成为架构师,是大多数程序员的共同梦想。


高级架构师具备能力


一名优秀的架构师,除了能撸一手高质量代码,至少精通1-2门技术,还要具备足够的技术广度,从软件到硬件、开发到测试、运维到安全等等,都要面面俱到去了解掌握。当然了,人的精力是有限的,我们不可能做到每个领域都去深入,但至少需要知道其概念、运行原理、如何运用等。


高级架构师必知必会的技术清单


说了那么多,进阶成为高级架构师,技术广度包括了哪些内容?要学习掌握哪些技术呢?


我梳理了一份高级Java架构师所具备的技能知识点,其中囊括了BAT等一线互联网公司当下使用的主流技术,希望能够为大家的学习之路厘清思路、指明方向。


1、数据结构和算法

算法思想、排序算法、查找算法、高级算法、大数据算法、数据结构等。


2、编程基础和高级

Java语言基础、面向对象高级特性、反射泛型、多线程、JVM、网络编程、开源产品和技术等。


3、Java高级特性

面向对象高级、异常处理、多线程、IO和注解、反射泛型、网络编程、高级特性原理、JVM原理等。


4、开发核心

H5、JS、Java web、模板引擎等。


5、数据库开发

设计原理、事务、数据库造型(Mysql、Nosql、Memcached)、性能调优、分表分库等。


6、框架与构建

开发框架、Web服务器、缓存消息队列、构建工具、工作流与工具、搜索引擎等。


7、架构设计

Java设计模式、JAVA与UML建模、SOA/SCA/ESB/OSG、微服务架构、面向资源架构、高性能和负载均衡、大型网站架构(集群、架构设计、容灾)等。


8、分布式架构设计

缓存搭建、CDN基站搭建、消息队列搭建、数据库拆分、工程代码拆分、SOA微服务、分布式文件、搜索引擎、Sql和Nosql混搭、运维系统、监控系统、机房容灾等。

以上,只是列举了梗概。由于涉及到的知识面非常多,Mike在这里也只能抛砖引玉,受限篇幅,不可能一一描述清楚,我之前分享过的一套完整架构师技术学习知识图谱及BAT架构技术专题,感兴趣的童鞋,关注并私信回复【架构师进阶】领取。


总结


想要成为高级架构师,除了掌握一定的技术广度与技术深度,还要文武兼具、内外兼修。

  • 撸一手高质量代码,画得了原型,能输出技术文档;

  • 能够立足于技术和业务之间寻求平衡点,挑选适合的性价比高的技术架构和技术方案;

  • 具备技术领导力,擅识人用人育人、沟通流畅、能扛事。


一名普通程序员通往高级架构师的路很长,需要持之以恒的学习积累,工作之外的时间,方向明确、有计划地补充相关理论知识。工作之内的时间,除了本岗工作完成出色,还要主动争取参加更多重要项目的实践机会,因为没有经历实际的业务场景演练,不可能成为一个高级架构师。


再牛逼的梦想也抵不住傻逼似的坚持,送给自己,也送给在路上的同伴们!



优知学院


可能很多开发朋友不了解,很多大公司其实是有架构师,高级架构师,首席架构师之分的,而在我观察来看,架构师写代码的时间大概占了60%,高级架构师占了%40,其他的时间要么是在开会,要么是在开会的路上。

一个能写好代码的开发工程师有可能成为架构师,而一个只能写好代码的工程师肯定做不了架构师!


架构师需要有这些能力:

1,写代码溜溜溜:架构师更加关注新技术,新语言特性的发展,往往能用最新的技术写代码,而且设计模式张手即来,开发原则一一满足!

2,设计能力强:架构师往往能迅速的把业务需求抽象为数据库,对象,方法,搭建起整个系统的架构流程,能支持业务扩展所带来的变化!


3,语言水平高:可以说一个互联网公司跟产品经理,BA,老板打交道最多的就是架构师了,不仅需要设计实现产品经理提出的需求,还要不断完善优化,老板还随时更改需求。。

4,涉猎广泛:我就以JAVA架构师为例,不仅仅是jvm,微服务框架,消息,缓存,分库分表这些东西,还要会自动化运维,持续集成开发,分布式系统技术,大数据等等!

我总结架构师就是:“上得厅堂,下得厨房”!

而要成为一名架构师,其实既简单又困难,持续的学习与分享新技术,优化自己的知识储备,提高深度,扩展广度,学会与业务打交道,学会与老板打交道!

我也在成为架构师的路上,而且不会很远了,还不快来关注我???


此生唯一


普通的码农成长为高级架构师,需要修炼内功,假以时日,才能升级为架构师,再到高级架构师。所以需要看下一个架构师的日常职责是什么。

懂业务

不懂业务,何谈架构?所以首先要弄明白用户需求,用户到底想要的是什么?通过和产品经理或者需求方讨论确认,条件允许,穿透到用户层面也是有可能的。一个目的,就是要搞明白用户需求。

系统规划

搞明白业务后,转换为软件需求,进行系统规划,比如系统整体架构、如何分解为各个子系统、各个子系统之间的逻辑关联、调用关系等。

只有规划好这些系统逻辑,后面的落地开发就会变得水到渠成。

技术栈

需要选择开发中所涉及的技术框架了,这就看架构师的技术能力了。比如前端框架用什么,后端框架用什么,数据库用什么,消息中间件用什么,线上节点需要部署多少等等。

规范

开发者水平不一,所以需要指定统一的规范让开发团队去执行,这对开发的整个流程以及以后的线上运维都有好处。

前沿技术布道

一个合格的架构师不仅仅局限于本公司所用的技术体系,需要熟悉前沿技术,在适当的时候引进来。


成为大牛,非一日可达,加油吧。


残缺的孤独君


现在普通的java程序员多如牛毛,但真正站在金字塔顶端的程序员少的可怜,可以称之为可遇不可求,要成为一个高级架构师需要很多因素,除了自身因素之外还要需要外界环境激发,一个架构师首先是一个优秀的程序员,从事十几年始终自我定位也不是一个什么优秀的程序员,但有幸的在技术生涯持续过程中遇到几位真正的技术高手,在这尝试总结归纳下编程的习惯。

1.对编程极度热爱,没有丝毫的厌倦

每个人都对编程充满无线的兴趣,无论做什么项目都是精神饱满,如果不是内心极度的热爱很难就这么高的工作热情,骨子里的东西有时候是装不出来的,兴趣是第一老师在他们身上有着非常明显的体现。

记得有一次回老家休年假在老家做了一套升级程序给公司产品来用,根本不是在休假分明是在工作,因为没有人强迫他去工作或者开发软件产品,一次在一起吃饭讨论这个话题,说到这些细节他说除了写代码真不知道还能做点什么,只要在电脑旁边就想着琢磨点什么东西,而且有时候在电脑旁边一呆就是几个小时,还不会觉得很疲惫,而且有时候还觉得不过瘾,所以有时候加班到很晚,有一次光顾他家发现他们的家的投影仪给改装了,还从淘宝买了很多器件去组装,连硬件也一块给弄了。

2.不停歇对新技术的更进,并且勇于做出一些尝试,对自身代码要求都是非常苛刻

曾经共事一个架构师,从做了五年的网络通讯,觉得研究的差不多了就开始转行到杀毒行业一呆就是十几年,然后切入到互联网行业对浏览器内核进行研究,一路走来不断给自己设置新的目标,不断挑战自我,编程语言在他的眼里就是工具,主要工作是在搭建框架,招聘以及疑难杂症的解决,每次遇到大家解决不了的问题都会选择交给他,每次为了彻底解决问题都会选择杀入到汇编里面,然后经过一系列的场景还原讲解为什么会出现这种问题,最后落实到代码规范上面。

很难见他们满足于已经掌握了多少技能,基本上每天都会在开源社区里面找到需要吸取的营养,记得有次周末下班看到架构师同事打印了一堆C语言标准,随便问了一句你这水准还用继续看这些基础东西,好久不看了准备再次研究一遍,反正在家闲的也没事干,特别容易和自己写的代码较真,见到有更好的实现方式就会不停尝试,直到自己满意为主。

对于java来讲,主要两个层面的学习:(1)基本功学习;(2).编程思想。对于java基本功需要不停的修炼,编程思想是一个长期慢慢养成的过程,思考多了就形成了一种习惯,当然在基本功以及编程行为都非常优秀的情况下,还需要有机会让你去做成为一个架构师,毕竟任何一个架构都需要实践检验,不是什么公司都能给你提供这种机会的,很多机会都不是送上来的,都是有机会硬顶着头皮上最后拿下来了,所以一个优秀程序员还有需要具备抗压能力,很多程序员都在抱怨项目经理或者产品经理需求不好弄,任何职业都需要在压力下提升自我,需要自我激励拿出最佳的状态出来。

先努力成为一个优秀的程序员,然后是慢慢培养自己的编程素养,抓住机会抓住平台让自己磨练出来。


大学生编程指南


架构师是程序员发展的重要方向之一,对于Java程序员来说,要想成长为一名架构师不仅需要扎实的研发基础,还需要具备一定的技术广度和视野(行业)。

如果未来想成长为一名高级架构师,那么需要做好以下几个方面的事情:

第一:扎实的研发基础。对于大部分从程序员成长起来的架构师来说,技术积累是非常重要的,架构师的技术积累需要具备三方面的内容,分别是框架设计能力、性能优化能力和技术攻关能力。Java项目的框架设计核心在于模块化,性能优化的能力取决于算法设计和实现(包括容器的选择),而技术攻关能力则取决于对Java语言底层实现机制的掌握程度。

第二:紧跟技术发展趋势。对于一名架构师来说,不仅要具备扎实的研发基础,同时要了解目前技术发展的趋势,对于新技术一定要及时了解,尤其是平台型产品。比如在大数据时代背景下,作为一名架构师如果不了解Hadoop、Spark、Docker等知识是无法想象的事情。

第三:具备一定的行业视野。行业视野是基于已有的知识结构对行业发展趋势做出的预判,往往掌握的资源越多,预判就越容易。视野往往能够决定一款软件产品是否能在推出的时候得到市场的认可,能否具备足够的竞争力,以及是否具备足够的成长空间,所以视野对于架构师来说是非常重要的。从这个角度来说,技术架构师与产品经理在产品发展的角度上来看是具备一定共性的。产品经理注重的是产品功能的设计和定位,而架构师注重的是技术竞争力。

对于Java程序员来说,应该给自己定义一个明确的发展路线,最好再制定一下阶段性目标,不同阶段做不同阶段的事情,一步一步向架构师方向推进。要想成长为高级架构师一定要结合岗位提升和自主学习两个方面,另外还要注重交流的重要性。

作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。

欢迎关注作者,欢迎咨询计算机相关问题。


IT人刘俊明


概括滴讲:

慢慢修炼,终有一日,你将成为Java高级架构师,而又高于架构师!

粗犷滴讲:

先掌握Java核心基础,诸如语法、流程、Oop、算法、集合、线程、反射、注解、JDBC与数据库Java Web等等;

然后,业界框架(SSM&SSH),各种应用服务器中间件以及NoSql等等。

最后,就是分布式和集群,大数据和人工智能等,有兴趣再搞个新型数据库区块链玩玩。

仔细滴讲有:

这是问答,不适合这种讲~😛


牛旦教育IT课堂


单纯的面向对象程序员是成不了架构师的,java程序员在架构上开发,并不了解架构设计与实现,就好比司机会开或修理,但不懂汽车的设计与实现。不识庐山真面目,只缘身在此山中,就是这个理。只有c与c++一类的程序员积累足够的知识后可以登顶架构。


装唾独醒


不管是程序员还是其他领域,要想有所发展都是要持续的学习学习再学习。

对于架构师来说,在技术上要深入了解和学习,更要在业务上深入的学习和了解。技术是基础,业务才是主要的,深入了解了业务需求,使用者的需求,业务所有者的需求之后,你才能使用技术实现业务。

架构师是一个需要知识广度的职业,所以,学习吧,让你学到的东西都能成为自己工具箱里的工具,为以后的发展打好基础。


LeoTian


在Java程序员行业中,有不少Java开发人员的理想是成为一名优秀的Java架构师,Java架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个Java架构师工作的好坏决定了整个软件开发项目的成败。那么Java架构师需要掌握哪些知识点呢?

1、框架源码分析

设计模式:Singleton单例模式,Factory工厂模式,Proxy代理模式,Template模板模式,Prototype原型模式等

Spring5:Spring提醒结构,IOC注入原理,AOP设计原理,Spring事务处理机制,SpringMVC,Spring源码分析。

Mybatis:Mybatis体系结构,Mybatis核心应用与配置,Mybatis关联查询,与Spring集成,Mybatis源码分析。

2、性能优化

JVM性能优化:剖析JVM整体结构,详解垃圾回收机制GC,JVM性能调优与工具排查

Nginx调优:Nginx项目架构,Nginx核心配置,Nginx负载算法配置

Tomcat调优:Tomcat运行机制及框架,Tomcat线程模型,Tomcat性能调优

MySQL性能优化:SQL执行计划,AQL优化,索引优化。

3、掌握池技术

对象池,连接池,线程池,Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案Java字节码技术。

4、掌握nio,值得注意的是“直接内存”的特点,使用场景。

5、掌握Java多线程同步异步。

6、掌握Java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题。

7、熟练使用各种数据结构和算法,数组、哈希、链表、排序树……就是一句话要么是时间换空间要么是空间换时间。

8、熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化。

9、熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。

10、熟悉系统集群、负载均衡、反向代理、动静分离,网站静态化。

11、掌握分布式。

Java并发编程和网络编程:Java线程状态,线程池,线程通信,线程安全,Netty高性能原理

分布式开发框架:分布式系统口调用技术:RPC,Apache分布式系统Zookeeper原理与应用,阿里Dubbo设计思想与应用

分布式中间件:分布式服务器治理,分布式消息通信,分布式数据缓存,MongoDB企业集群解决方案

12、掌握数据库的设计能力,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysqldba。


千锋青岛


脚踏实地的学习好基础语法,多做项目,多问。利用课余时间多多充电。


分享到:


相關文章: