阿里P8架构师谈:java程序员到架构师,需突破的7大必备技能!
2021-01-27 22:16
优秀的架构师的核心能力模型包含:编程、性能调优、架构设计等能力等。
编程能力
对工程师而言,编程是最基础的能力,必备技能。其本质是一个翻译能力,将业务需求翻译成机器能懂的语言。
提升编程能力的书籍有很多。精通面向对象和设计模式是高效编程的基础。初级工程师应该多写代码、多看代码。找高手做Code Review,也是提升编程水平的捷径。
常见的编程范围:
- 数据结构算法,比如: 经典排序:插入排序、冒泡排序、快排(分划交换排序)、直接选择排序、堆排序、合并排序等。
- 高级语言特性: JVM、类装载机制、多线程并发
- 设计模式:常见的单例、工厂等。
- UML建模:详细设计必备。
- 网络与安全:网络协议、安全等。
- 开源系列:spring、maven、redis、memcached、activeMQ等。
调试能力
本质上讲,工程师们通过不断调试可以持续强化其通过静态代码去预测运行状态的能力。所以调试能力也是工程师编程能力提升的关键手段。
调试能力是项目能否按时、高质量提交的关键。即使一个稍具复杂度的项目,大部分工程师也无法一次性准确无误的完成。大项目都是通过不断地调试进行优化和纠错的。所以调试能力是不可或缺的能力。
编译部署能力
编译并在线上部署运行程序是系统上线的最后一个环节。随着SOA架构的普及以及业务复杂度的增加,大部分系统只是一个完整业务的一个环节,因此,本地编译和运行并不能完全模拟系统在线运行。为了快速验证所编写程序的正确性,编译并在线上部署就成了必要环节。所以编译部署能力是一个必备技能。
让盘根错节的众多子系统运行起来是个不小的挑战。得益于SOA架构的普及以及大量编译、部署工具的发展,编译部署的门槛已经大大降低。基于应用层进行开发的公司,已经很少有“编译工程师”的角色了。但是对于初级工程师而言,编译部署仍然不是一个轻松的事情。
性能优化能力
衡量一个系统成功的一个重要指标是使用量。随着使用量的增加和业务复杂度的增加,大部分系统最终都会碰到性能问题。 性能优化能力是一个综合能力。因为:
影响系统性能的因素众多,包括:数据结构、操作系统、虚拟机、CPU、存储、网络等。为了对系统性能进行调优,架构师需要掌握所有相关的技术。
精通性能优化意味着深刻理解可用性、可靠性、一致性、可维护性、可扩展性等的本质。
性能调优集中在:JVM调优,线程池调优、SQL调优、索引优化、数据库垂直拆分等。
在线运维能力
如果说性能优化能力体现的是架构师的静态思考能力,在线运维能力考验的就是动态反应能力。残酷的现实是,无论程序多么完美,Bug永远存在。与此同时,职位越高、责任越大,很多架构师需要负责非常重要的在线系统。对于线上故障,如果不能提前预防以及快速解决,损失可能不堪设想,所以在线运维能力是优秀架构师的必备技能。
为了对线上故障进行快速处理,标准化的监控、上报、升级,以及基本应对机制当然很重要。通过所观察到的现象,快速定位、缓解以及解决相关症状也相当关键。这要求架构师对故障系统的业务、技术具备通盘解读能力。解决线上故障的架构师就好比一个在参加比赛F1的车手。赛车手必须要了解自身、赛车、对手、同伴、天气、场地等所有因素,快速决策,不断调整。架构师必须要了解所有技术细节、业务细节、处理规范、同伴等众多因素,快速决断,迅速调整。
在线运维本质上是一个强化学习的过程。很多能力都可以通过看书、查资料来完成,但在线运维能力往往需要大量的实践来提升。
架构设计能力:业务和技术
工程师抱怨产品经理的故事屡见不鲜,抱怨最多的主要原因来自于需求的频繁变更。需求变更主要有两个来源:第一个原因是市场改变或战略调整,第二个原因是伪需求。对于第一个原因,无论是工程师还是产品经理,都只能无奈的接受。优秀的架构师应该具备减少第二种原因所导致的需求变更的概率。
伪需求的产生有两个原因:
第一个原因是需求传递变形。从信息论的角度来讲,任何沟通都是一个编码和解码的过程。典型的需求从需求方到产品经理,最终到开发工程师,最少需要经历三次编码和解码过程。而信息的每一次传递都存在一些损失并带来一些噪音,这导致有些时候开发出来的产品完全对不上需求。此外,需求方和产品经理在需求可行性、系统可靠性,开发成本控制方面的把控比较弱,也会导致需求变形。
第二个原因就是需求方完全没有想好自己的需求。
优秀的架构师应该具备辨别真伪需求的能力。应该花时间去了解客户的真实业务场景,具备较强的业务抽象能力,洞悉客户的真实需求。系统的真正实施方是工程师,在明确客户真实需求后,高明的架构师应该具备准确判断项目对可行性、可靠性、可用性等方面的要求,并能具备成本意识。最后,由于需求与在线系统的紧耦合关系,掌握在线系统的各种细节也是成功的业务架构的关键。随着级别的提升,工程师所面对的需求会越来越抽象。承接抽象需求,提供抽象架构是架构师走向卓越的必经之途。
市场上有一些关于如何成为架构师的书,大家可以参考。但是架构能力的提升,实践可能是更重要的方式。业务架构师应该关注客户的痛点而不是PRD文档,应该深入关注真实业务。掌握现存系统的大量技术和业务细节也是业务架构师的必备知识。
技术架构设计主要集中在:架构选型、中间件掌握、负载均衡、大数据性能等领域。
上一篇:python专题时间模块
下一篇:贪心算法
文章标题:阿里P8架构师谈:java程序员到架构师,需突破的7大必备技能!
文章链接:http://soscw.com/index.php/essay/47951.html