架构这个词给一般人的感觉就像是充满了权力和神秘,每每谈起架构总让人觉得有一种正在进行责任重大的决策或者深度技术分析设计的感觉。进阶到架构师这一角色是很多技术人的高级目标,那我们作为技术人究竟应该怎么样才能成为一名架构师呢?
架构师的工作本质上来看就是把要实现产品系统/企业级服务的技术体系结构进行切分,也就是组件的定义和设计,然后安排好这些组件之间的关系以及互相通信的方式。做架构的目的是让这些组件可以更好地被研发、被部署、被运行以及被维护。
成为架构师的前提是你必须是一位程序员的出身,并且必须一直坚持做一线程序员,有自己的总结提炼成长,有自己的专精领域和富足的视野,没有一个架构师是没有写过代码的。
但是程序员不等于架构师,也并不是每一个程序员都能成为架构师的。
因此程序员向架构师的转型是一项极具挑战性的任务,需要不断提升技能和培养新的能力,以下是从个人的经历中总结出来的一些建议和要点,期望可以对你转型架构师的过程中有一些帮助。
一、角色和职位
1 、不同类型的架构师
- 架构师:通常涉及整个系统的设计和领导,这样一个称呼比较笼统,尤其是当下精细化的技术时代
- 业务架构师:更专注于业务需求和流程
- 系统架构师:更专注于系统的结构和技术栈
- 前端/后端/测试架构师:针对具体技术栈的专业领域,但是职场中会相对比较少,毕竟你只会某一个专业领域的架构,成本比较高
- 解决方案架构师:这是一个现在很多大厂前些年开始出现的一个职位 Title,这对人的要求其实会更宽广一些,不仅要懂业务、懂行业、懂技术,还要懂分析定位问题、结合问题和自家服务给出对应的解决方案,然后也要跟踪项目执行过程、协调资源、注重成本,姑且称之为“六边形战士”类型的架构师吧
2 、架构师职责
对于架构师职责的定义,上面有说到,但是这里我更喜欢用八个字来形容,那就是:上蹿下跳,左右互搏!
既要负责设计并领导系统构建,满足业务和质量要求,又要扮演全能和杂烩角色,需要跨足多个领域。
3 、技能要求
- 业务领域能力:对行业和领域的深刻理解,需要掌握对行业和领域的可复制能力,能够预测未来业务变化
- 专业技能能力:掌握主流技术体系和软件架构体系,具备软件设计、编码、质量保障、 DevOps 、性能分析等方面的专业技能
- 人际交往能力:优秀的沟通技能,包括倾听、口头/书面沟通、推进、冲突管理等,能够在各个层面进行高效的沟通
- 领导力:这不同于管理,需要能够鼓励和引导团队,能够在不同层次上展现领导力
二、能力维度
1 、思维模式
- 采用系统化的思维方式看待问题
- 具备全局视角,能够理解系统中不同部分之间的关系
- 具备多维度的底层思维能力
2 、协作与推动力
- 与不同角色、领域的人能有效协作
- 有推动力,能够在团队中推进变革和改进
3 、学习与实践
- 持续学习新的技术和领域新知识
- 在实践中不断总结积累经验
4 、业务与系统化
- 结合业务需求设计系统,而不是仅仅关注技术
- 具备系统化的工作方法
5 、产品交付
- 着眼于产品交付
- 关注交付的质量和效率
6 、数据与商业视角
- 具备数据驱动的思考方式和行为方式
- 理解业务运作并能够为业务做出决策
三、结语
转型成为架构师是一个综合性的过程,需要技术深度和广度、领导力和全局视角的全方位能力要求。成功的架构师是能够平衡技术与业务、理论与实践的专业认识。通过不断学习、实践和拓展技能,程序员是可以更好地迎接这个转型挑战的。
结合我个人的转型经历,我能给到以下一些建议,帮助你在这个过程中更好地发展:
1、提升技术深度
- 拓技术栈且具备一定深度能力: 不仅局限于 Java 后端技术,拓展范围,包括前端、测试、运维等
- 深入研究分布式系统: 理解微服务、容器化、服务网格等分布式系统的设计和实现,对分布式系统常见问题有分析定位和解决的能力
- 学习大数据和人工智能: 了解大数据处理、机器学习等技术,尤其是它们如何与传统系统集成,如何促进传统软件产品的升级
2、发展领导力
- 承担项目负责人角色: 尝试领导小型项目,负责项目的整体设计和实施
- 积极参与团队活动: 参与团队建设、培训等活动,提升团队内的领导地位
- 发展沟通技能: 提升口头和书面沟通能力,包括向非技术人员解释技术问题
3、培养全局视角
- 理解业务: 与业务团队密切合作,深入了解业务需求和业务模型,逐步沉淀出在行业和领域中的可复制能力
- 聚焦系统可扩展性: 在设计中考虑系统未来的扩展需求,保持系统的可塑性
- 持续学习架构模式: 学习常见的架构模式,包括微服务、DDD 等
4、培养系统思维
- 参与系统设计: 参与整个系统的设计,理解不同部分之间的交互关系
- 学习系统架构: 阅读相关领域的经典书籍,学习系统架构设计的最佳实践
- 培养底层思维: 针对多维度的底层能力进行学习和培养,在实践中提升底层思维能力
5、实践项目管理
- 项目规划与执行: 参与项目规划和执行,了解项目管理的基本原则
- 风险管理: 学习并应用风险管理技能,对项目中的潜在问题有预见性
6、专业认证与培训(有条件和机会的前提下)
- 参与架构相关培训: 参加有关架构设计、系统优化等方面的专业培训
- 获得相关认证: 考取与架构设计相关的认证
7、与业内专家交流
- 参加行业大会: 参与行业大会,了解最新技术和行业趋势
- 社交网络: 在社交网络上关注业内专家,参与讨论,建立有价值的人脉
8、持续复盘与改进学习
- 定期复盘: 定期复盘个人的职业发展方向,做好职业规划
- 持续学习: 学无止境,持续学习新技术和领域知识