Architect Growth Roadmap

It is not easy to grow into a software architect. This article lists the technical reserves that architects need to learn, and gives a roadmap to become a software architect. It helps students who are interested in growing up in the field of architecture to clarify the direction of learning. . Original: Master Plan for becoming a Software Architect [1]

Danist Soh@Unsplash

Danist Soh@Unsplash

Software architects play a senior role in a software development team, a role that takes time and experience, and requires cross-functional skills and knowledge. In addition to technical challenges, architects are also required to have good social skills. Before we start thinking about plans to become a software architect, let's take a look at the typical types of software architects:

  • Solution Architect/Software Architect - a low-level architect, usually a former or current senior software engineer, responsible for communicating with business people about the technical design and architecture of products, and developers are usually competent .
  • Enterprise Architect - Senior architect who controls the "big picture" of the product, but pays little attention to details. This position is mostly found in very complex large software products and sometimes even reports directly to the CTO.
  • Domain Architect - This is the more popular type of software architect that can be found in many companies. The purpose of this position is to be an architect for a specific use case or technology stack. For example: cloud architects are responsible for specific cloud providers, data architects are responsible for database operations, design, coordination, mobile architects are responsible for mobile versions of software products, and so on...
  • Business Architect (Functional Architect) - This type of architect is mainly responsible for the business side and has little knowledge of the technical world. Most of them are experienced business analysts who design and lead the business logic of software products.

We can expand this list further, each company may have a different name for a particular position. The roles and responsibilities of the software architecture positions given above may vary from company to company, but the essence is the same. Take a look at the chart below for a better understanding of how the different architect roles relate to technical/business skills and knowledge.

Business and Technology Relationship Diagram

Business and Technology Relationship Diagram

overall plan

One thing should be very clear by now: Software architects are usually super senior developers, except for those who really come from a business background. Here are the different subject areas that software architects should be familiar with:

  1. Data Structures and Algorithms - Basic programming principles should not be a problem for software architects, including data structures such as arrays, queues, stacks, linked lists, different types of trees, graphs, etc. Software architects should not only be familiar with, but also be able to identify Which data structure should be used when. A good software architect should know different algorithms like search, sort, recursion, dynamic programming, etc. In everyday life, no architect would write a "merge sort" algorithm from scratch, or invent a new data structure.

Introduction to Algorithms

Introduction to Algorithms

Introduction to Algorithms is a comprehensive introduction to algorithms and data structures.

  1. Technology stack - Whether it is backend or frontend, software architects must have a good understanding of the technology stack currently in use. Learning the syntax of a specific programming language is the easiest way, but it takes time to gain experience. Different libraries and frameworks are also valuable assets to know about.

clean code

  1. Clean Coding - Getting a software system to work is not the ultimate goal of a software architect. Every time he/she reviews code, the first question that comes to his/her mind is: Can I make this code more efficient? Can I make the code take up less memory? Are code cleanliness standards applied correctly? Can I use different OOPs? Technical? Clean Code certainly helps us improve our refactoring skills.

  2. OOP - Object Oriented Programming helps us to build more flexible, efficient and readable software systems. Experienced software architects will often use these techniques (if the tech stack is right...).

Design Patterns

  1. 软件设计模式 —— 说到面向对象,不应该忘记不同的设计模式的重要性,它们首先是由GoF[2]收集和引入的。了解这些设计模式肯定会帮助我们更好的利用软件系统的面向对象设计。

clean architecture

架构整洁之道

从R.C.Martins的著作《架构整洁之道》中可以学到如下原则。

  1. S.O.L.I.D.原则 —— 这一组件原则是软件组件设计中需要考虑的基本技术。有经验的软件架构师如果掌握了这些原则,可以很快识别出代码中的违规行为。

  2. 高内聚/低耦合原则 —— REP、CRP、ADP等原则对于软件架构师来说非常重要,尤其是在构建、整合/解耦插件时,这些技术可以处理更高级的设计。

Software Architecture Practice

软件构架实践

  1. 系统设计 —— 有很多软件体系架构模式,如:主从、客户端-服务器、微服务、MVC、单向体系架构等,需要根据不同的前后端项目做出选择。当然不太可能有人能够掌握所有这些模式,但是根据项目的不同,软件架构师应该精通底层设计,领域驱动设计可以作为最基本的出发点。

  2. 文档 —— 这是软件架构师日常工作中的重要环节。绘制不同的UML图,ARC42文档是这个职位不可避免的工作。这方面有很多工具,如:

  • draw.io[3] —— 简单易用的免费工具
  • PlantUML[4] —— 提供Eclipse、Intellij等IDE插件,可以通过脚本绘图,非常有用,也是我最喜欢的工具。
  • yEd[5] —— 很方便的工具,可作为桌面应用程序运行。
  • MS Visio[6] —— 拥有丰富的功能,但不是免费的!
  1. 证书 —— 对于软件架构师来说,没有太多的认证选择,但国际软件架构资格认证委员会(iSAQB®)提供了Certified Professional for Software Architecture(CPSA®)认证计划,该认证得到全球认可。

正如从上面的列表中可以看到的那样,成为软件架构师需要付出时间和精力,但这绝对是可行并且值得的:)。


如果想要了解更多软件架构方面的主题,请参阅下面的列表。

相关文章:

  1. Software Architecture Patterns for Front-End Development[7]
  2. Software Architecture Cheat Sheet for Daily Usage[8]
  3. How to apply Component Cohesion Principles to Spring Boot Application[9]
  4. How to apply SOLID Software Design Principles to Spring Boot Application[10]

References:
[1] Master Plan for becoming a Software Architect: azeynalli1990.medium.com/master-plan…
[2] Design Patterns: en.wikipedia.org/wiki/Design…
[3] draw.io: draw.io
[4] PlantUML: plantuml.com/
[5] yEd: www.yworks.com/products/ye…
[6] MS Visio: www.microsoft.com/en-ww/micro…
[7] Software Architecture Patterns for Front-End Development: azeynalli1990.medium.com/software-ar…
[8] Software Architecture Cheat Sheet for Daily Usage: azeynalli1990.medium.com/software-ar…
[9] How to apply Component Cohesion Principles to Spring Boot Application: azeynalli1990.medium.com/how-to-appl…
[10] How to apply SOLID Software Design Principles to Spring Boot Application: medium.com/geekculture…

Hello, I am Yu Fan. I have done R&D at Motorola and now do technical work at Mavenir. I have always maintained a strong interest in communications, networking, back-end architecture, cloud native, DevOps, CICD, blockchain, AI and other technologies , I usually like to read and think, believe in continuous learning and life-long growth, welcome to exchange and learn together.
WeChat public account: DeepNoMind

Guess you like

Origin juejin.im/post/7083003707280850974