avatarAli Zeynalli

Summary

The web content outlines a comprehensive roadmap for aspiring Software Architects, detailing the necessary skills, knowledge areas, and roles within the field.

Abstract

The article titled "Roadmap to Solution Architect" serves as a master plan for individuals aiming to become Software Architects. It emphasizes the seniority and cross-functional expertise required for the role, including advanced technical skills, social acumen, and strategic business understanding. The content delves into various types of software architects, such as Solution Architect, Enterprise Architect, Domain Architect, and Functional Architect, highlighting their distinct responsibilities. It underscores the importance of a strong foundation in data structures and algorithms, proficiency in current tech stacks, principles of clean coding, object-oriented programming, software design patterns, SOLID principles, cohesion and coupling principles, system design, thorough documentation, and the relevance of certifications. The article also provides resources for further learning and development in the field.

Opinions

  • Software Architects are expected to possess a deep understanding of technical and business aspects, transcending the role of senior software developers.
  • Mastery of fundamental programming concepts, such as data structures and algorithms, is crucial for making informed technical decisions.
  • Proficiency in the current tech stack and clean coding practices is essential for optimizing performance and maintainability.
  • Object-oriented programming and design patterns are seen as key enablers for creating effective and readable software systems.
  • Adherence to SOLID principles and cohesion/coupling principles is advocated for high-quality software component design.
  • System design is a critical skill, with knowledge of various architecture patterns being necessary to tailor solutions to specific project needs.
  • Documentation is considered a vital part of a Software Architect's role, with tools like draw.io, plantUml, yEd, and MS Visio recommended for creating diagrams and documentation.
  • Certifications, such as those offered by the International Software Architecture Qualification Board (iSAQB®), are recognized as valuable for global recognition in the field.
  • The article suggests that while the journey to becoming a Software Architect is demanding, it is achievable with dedication and the right resources.

Roadmap to Solution Architect

Master Plan for becoming a Software Architect

Photo by Jaromír Kavan on Unsplash

Software Architects are senior level actors in software development team. It takes time and experience to become the one. The skills and knowledge that you need to accumulate are cross-functional. Besides having challenges first of all in technical sphere, this position also demands from architects to have a well-established social skills. Before starting to look at master plan for becoming a software architect, let us have a glance at typical types of software architects:

  • Solution Architect/Software Architect — low-level architect that is usually previous or active senior software engineer. He/She is in charge of technical design and architecture of a product with link to business people. Often leads developers.
  • Enterprise Architect — high-level architect that has overall “Big Picture” of a product with less information in details. This position mostly appears in very big complicated software products even sometimes just right after CTO.
  • Domain Architect — this is a popular form of software architects that are seen in multiple companies. The purpose of this position is to be an architect of specific use case, tech stack. For Example: cloud architects are responsible for a given cloud supplier. Data Architects are in charge of database operations, design, coordinations. Mobile Architects are taking care of mobile version of a software product. This counting can be very long…
  • Functional Architect — this type of architects are mainly in charge of business side, being less informed about technical world. Mostly this people are experienced business analysts that design and lead business logic of a software product.

We can extend this list further, since each company might have different name for a specific position. The roles and responsibilities of above given software architecture positions can vary from company to company but essence is the same. Take a look at following graph to have a better understanding in which relation different architect roles stand in respect to technical/business skills and knowledge.

Business versus Technical relation graph

Master Plan:

One thing should be till now crystal clear: Software Architects are Super Senior Developers (usually…) except those who really come from business background. I tried to list different topic areas out, in which software architects should be comfortable:

1.Data Structures and Algorithms — the very basic fundamentals of programming should be no problem for Software Architects. DTs such as Arrays, Queues, Stacks, LinkedLists, different types of Trees, Graphs should not only be familiar to a Software Architect, but he/she also should be able to recognise right moment where to use which DT. Well established Software Architect should know different algorithmic techniques like Searching, Sorting, Recursion, Dynamic Programming etc. In daily life, no architect writes for example “Merge Sort” algorithm from scratch, or discovers a new data structure. But knowing basics help them to make a right technical decision in especially pull request reviews.

Introduction to Algorithms

Bonus: Introduction To Algorithms is the perfect allrounder book to master DTs and Algos.

2.Tech Stack — whether it is backend or frontend, Software Architect must know currently used tech stack very well. Learning syntax of a specific programming language is the easiest think. But gaining experience is what it takes time. Different libraries and frameworks that software product bases are also valuable assets to know.

Clean Code

3.Clean Coding — getting a software system to work is not the ultimate goal what Software Architect targets. Every time Software Architect makes a code review first questions that come to his/her mind are: 1. Can I make this code more performant? Can I make this code to take up less memory? Do clean code standards are applied correctly? Can I make use of different OOP techniques? Bonus: Clean Code will definitely help you improve your refactoring skills.

4.OOP — Object Oriented Programming offers great possibilities to make software system more flexible, effective and readable. Experienced Software Architects are using those techniques regularly. (if tech stack suitable…)

Design Patterns

5. Software Design Patterns — speaking of OOP, we should not forget the importance of different Design Patterns that where firstly gathered and introduced by GoF. Knowing these Design Patterns will for sure help you make your software system better use of object oriented design. Bonus: take a look at this book for more information.

Clean Architecture

Bonus: following principles can be acquired from R.C.Martins famous book: Clean Architecture.

6. S.O.L.I.D. Principles — these component principles are fundamental techniques that need to be taken into account in software component design. Experienced Software Architect will quickly recognise violations in code, if he/she mastered these principles.

7. Cohesion/Coupling Principles — Principles like REP, CRP, ADP etc. are vital principles for a Software Architect especially when constructing, bundling plugins together/apart. So these techniques copes with more high-level design.

Software Architecture in Practice

8. System Design — There are plenty of Software Architecture patterns like: Master-Slave, Client-Server, Microservices, Model-View-Controller, Unidirectional Architecture depending on backend or frontend projects. Of course it is impossible to know all of them. But depending on a project, Software Architect should be master of underlying design. The very basics starting point is Domain Driven Design. Bonus: take a look at this book for more theory.

9. Documentation — this is a vital point in Software Architects daily work. Drawing different UML Diagrams, ARC42 documentation is inevitable part of this position. There are plenty of tools such as:

  • draw.io — free and easy-to-use tool
  • plantUml — plugin for IDEs like Eclipse, Intellij. Very useful and my favourite tool, drawing through scripting.
  • yEd — handy tool, available as a desktop app.
  • MS Visio — rich functionalities, but not Free!

10. Certificates — There not much certification alternatives for Software Architects that are globally renown but nevertheless, there is the International Software Architecture Qualification Board (iSAQB®) that offers the Certified Professional for Software Architecture (CPSA®) certification scheme. CPSA® certifications are globally recognised.

So becoming a Software Architect takes time and effort, as you can see from above list. But it is pretty doable :).

If you are interested in more Software Architecture topics take a look at below list.

Relevant Articles:

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

P.S. You can connect with me on twitter or linkedin.

Software Engineering
Software Development
Software Architecture
Software Design
Recommended from ReadMedium