大家好,我是老猿,今天继续专题【老猿说架构】,文章仅代表作者观点,如有不同观点论述欢迎拍砖交流。好,废话不说,直接进入主题。
今天老猿跟大伙聊聊对系统架构师的能力模型的理解,希望有志于成为架构师的童鞋有所帮助和启发。
在我看来系统架构师主要具备点线面体的专业技术能力、专业的业务能力和缺一不可的技术管理能力这三大核心能力,三者互相结合运用,具体详见下图并看下文的阐述。
能力1:点线面体的专业技术能力
1.1 技术广度、深度和高度
架构师基本都是从一线研发工程师逐步成长起来的, 那么具体到从工程师到架构师岗位能力提升过程来看:
点:能准确理解、分析需求并独立负责一个功能模块的开发。
线:能根据系统设计并负责一个项目中多个功能模块的开发,甚至能独立负责一个子系统的开发。
面:在其所在的领域内可以负责一个产品的整个研发过程,并对业务和技术发展都有洞察和前瞻性。
体:能够带领团队负责多个产品线的研发过程,更高阶的话能够对行业有创新和影响。
1和2属于工程师能力范畴,3和4就是架构师需要具备的能力模型,那么架构师通常通过技术深度、广度和高度上来衡量。
广度:即是技术视野,所涉及的领域包括:数据库知识,计算机系统、网络知识,应用技术框架,系统安全,设计模式,最好精通1-2门开发语言,常用架构方法论,业务领域内的技术应用和发展,文档编写能力等等,这些领域的技术要有全面的了解,能够评估各技术的优缺点,能根据业务需要和技术优缺点来做技术选型。
深度:即是技术内功,要针对所在领域的核心技术有一定的底层掌握。比如熟读源码和深度的测试验证等,就像武林高手一样,有深厚的内功后才能快速融会贯通天下各派武功。
高度:能够理解业务的本质和商业模式、识别业务的风险,对业务和技术发展都要具有前瞻性。
因此工程师和架构师的区别,一般工程师具备需求理解、分析和程序设计及开发能力,而架构师需要架构设计和架构决策和规划的能力,要能够识别出系统架构中的复杂点、痛点,提供有效的架构解决方案,同时架构师要与人研讨方案的优略,方案的选型,挖掘方案的优缺点,最终选择最合适的方案。
1.2扎实的工程能力
这个能力好理解,架构师一定是带领或指挥1个团队来共同完成项目目标的,提升研发效率也是架构师的职责之一,那么研发工程流程优化、技术规范、开发工具和架构脚手架等需要架构师制定和落地. 比如开发工具 , 代码审查工具, 项目管理工具的选择、开发流程、技术规范的文档编写制定及最重要的系统架构脚手架的研发落地及维护等等.
1.3 架构设计能力
这点是架构师核心职责之一,即是从业务出发,分析准确把握业务对高性能、高并发、高可用、可扩展、安全等系统容量指标的要求,根据这些要求设计对应的系统架构实现,比如满足高并发高性能的系统架构设计有高性能计算和存储架构实现,例如多级缓存、消息队列削峰填谷或解耦异步处理、数据库分库分表,读写分离等设计实现。就是各种架构设计的套路组合搭配。
能力2:专业的业务能力
2.1懂业务
系统架构的核心是为了业务服务的, 是要适应业务更快速的发展, 所以架构要合适且能演进,要做到这点就要充分懂业务,理解把握业务的商业模式、发展前景、趋势等, 根据这些做技术方向布局. 同时对业务提出的需求, 要多问多思考需求背后的本质是什么, 来帮助我们识别并解决业务真正的痛点. 对业务的理解不会设计出天马行空不切实际的架构, 所以脱离业务的架构设计都是耍流氓。
2.2 善于业务抽象
系统架构要设计得好,必须理解业务的基础上有业务抽象建模的能力,也就是最近比较流行的领域驱动设计,只有对业务抽象足够清晰、准确才能设计分解系统的模块、组件以及他们之前如何协作运行。
2.3 业务洞察能力
业务洞察就是业务进行深入分析、理解,要抓住需求本质,不仅仅是对需求浅层的理解,要不断学习研究业务知识,最好能达到业务专家水平,越靠近越好,这样能提升思维抽象穿透的能力,从而具备有业务和技术发展的前瞻思考,做好一些技术布局等。
能力3:缺一不可的技术管理能力
3.1技术决策能力
这点也好理解,技术方案拍板是架构师最重要的职责。任何需求都有不通的技术实现方案,那么架构师就要从成本收益、持续发展和优先级等方面的权衡取舍进行架构评审及正确决策的能力尤为重要。
3.2 团队管理能力
架构师不是一个人战斗,需要带领团队在目标时间内完成项目打胜仗,需要系统分解形成整体架构设计,能够正确地技术选型和制定技术规格说明并有效推动架构设计方案的实施落地。那么管理工作的核心就是管人管事. 管人就要根据团队成员能力特点分工安排. 管事就要管理项目和技术架构方案的落地, 包括项目计划的拆解, 执行进度的追踪, 技术难点的攻克等等.
文/阿青,写代码写诗写职场的程序猿大叔,倾力原创简单实用的硬干货,转载此文请联系阿青。