It is not easy to become 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 determine the direction of learning. 译 文 : Master Plan for becoming a Software Architect[1]

Danist Soh@Unsplash

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

  • Solution Architect/Software Architect — The low-level Architect, usually a former or current senior Software engineer, is responsible for communicating the technical design and architecture of the product to the business, which developers can usually do.
  • Enterprise Architect — Senior Architect who controls the “big picture” of the product but pays little attention to the details. This position is mostly in large, complex software products, and sometimes even reports directly to the CTO.
  • Domain Architect — This is a popular type of software Architect that can be found in many companies. The purpose of this position is to become the architect of a specific use case or technology stack. For example, cloud architects are responsible for specific cloud vendors, data architects are responsible for database operation, design, and coordination, mobile architects are responsible for mobile versions of software products, and so on…
  • Functional Architect — This type of Architect is primarily responsible for the business side, with little knowledge of the technology world, and is mostly an experienced business analyst who designs and leads the business logic for software products.

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

Business and technology diagrams

The overall planning

One thing should be 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 a software architect should be familiar with:

  1. Data structures and algorithmsBasic programming principles should not be a problem for the software architect, including arrays, queues, stacks, linked lists, different types of trees, graphs, etc. The software architect should not only be familiar with, but also be able to identify which data structures should be used when. A good software architect should know different algorithms such as search, sorting, recursion, dynamic programming, and so on. In everyday life, no architect would write a “merge sort” algorithm from scratch, or invent new data structures.

Introduction to algorithms

Introduction to Algorithms is a comprehensive introduction to algorithms and data structures of the classic work.

  1. Technology stackWhether it’s back end or front end, the software architect must have a good understanding of the technology stack currently in use. Learning the syntax of a particular programming language is the easiest way, but it takes time to gain experience. The different libraries and frameworks are also valuable assets to know.

  1. Clean coding – Making software systems work is not the ultimate goal of a software architect. Every time he or she reviews code, the first question that comes to his or her mind is: Can I make this code more efficient? Can I make the code take up less memory? Are clean code standards being applied correctly? Can I use different OOP techniques? The Code Clean Way certainly helps us improve our refactoring skills.

  2. OOP — Object-oriented programming helps us build software systems that are more flexible, efficient, and readable. Experienced software architects often use these techniques (if the technology stack fits…). .

  1. Software design patternWhen it comes to object orientation, one should not forget the importance of different design patterns, which were first introduced by GoF[2]Collected and introduced. Understanding these design patterns will certainly help us make better use of object-oriented design of software systems.

Clean architecture

Learn the following principles from R.C.Martins’ book, The Way to Neat Architecture.

  1. S.O.L.I.D. Principle – This component principle is a fundamental technique to consider in the design of software components. Experienced software architects who master these principles can quickly identify violations in code.

  2. Principles of high cohesion/low coupling — PRINCIPLES such as REP, CRP, AND ADP are important to software architects, especially when building, integrating, and decoupling plug-ins that can handle higher-level designs.

Software architecture practices

  1. System Design – There are many software architecture patterns, such as master-slave, client-server, microservices, MVC, one-way architecture, and so on, which need to be selected for different back-end projects. Of course it is unlikely that anyone will be able to master all of these patterns, but depending on the project, the software architect should be proficient in the underlying design, and domain-driven design can serve as a basic starting point.

  2. Documentation – This is an important part of a software architect’s daily routine. Drawing different UML diagrams, ARC42 documentation is an unavoidable part of this position. There are many tools for this, such as:

  • Draw.io [3] — A free tool that is easy to use
  • PlantUML[4] – Provides Eclipse, Intellij and other IDE plug-ins that can be drawn by script, very useful and my favorite tool.
  • YEd [5] — a handy tool that runs as a desktop application.
  • MS Visio[6] – Rich in features, but not free!
  1. certificateThere aren’t many certification options for software architects, but the International Software Architecture Accreditation Board (iSAQB®) doesCertified Professional for Software Architecture(CPSA®) certification program, which is recognized worldwide.

As you can see from the list above, becoming a software architect takes time and effort, but it’s definitely doable and worthwhile :).


For more on software architecture topics, see the list below.

Related articles:

  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] the Master Plan for becoming a Software Architect: azeynalli1990.medium.com/master-plan… [2] Design Patterns: en.wikipedia.org/wiki/Design… [3] the draw. IO: the 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 the 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 all to Spring the Boot Application: azeynalli1990.medium.com/how-to-appl… [10] How to apply SOLID Software Design Principles to Spring Boot Application: medium.com/geekculture…

Hello, MY name is Yu Fan. I used to do R&D in Motorola, and now I am working in Mavenir for technical work. I have always been interested in communication, network, back-end architecture, cloud native, DevOps, CICD, block chain, AI and other technologies. The official wechat account is DeepNoMind