Home

Awesome

Contents

What is a Software Architect?

Levels of Architecture

Architecture can be done on several “levels” of abstractions. The level influences the importance of necessary skills. As there are many categorizations possible my favorite segmentation includes these 3 levels:

Sometimes architects are also seen as “glue” between different stakeholders. Three examples:

Typical Activities

To understand the necessary skills an architect needs, we first need to understand typical activities. The following list contains from my perspective the most important activities:

Important Skills

To support the laid-out activities specific skills are required. From my experience, read books and discussions we can boil this down to these ten skills every software architect should have:

(1) Design

What makes a good design? This is probably the most important and challenging question. I will make a distinction between theory and practice. To my experience, having a mix of both is most valuable. Let’s start with theory:

(2) Decide

An architect needs to be able to take decisions and guide projects or the entire organization into the right direction.

(3) Simplify

Keep in mind the problem-solving principle Occam’s Razor which states to prefer simplicity. I interpret the principle as following: If you have too many assumptions about the problem to solve your solution will probably be wrong or lead to an unnecessary complex solution. Assumptions should be reduced (simplified) to come to a good solution.

(4) Code

Even as an Enterprise Architect, the most abstract level of architecture, you should still know what developers are doing on their daily basis. And if you do not understand how this is done, you may face two major problems:

  1. Developers won’t accept your sayings.
  2. You do not understand challenges and needs of developers.

With this categorization it is easier to get an overview of new things and their readiness to better evaluate which trend to explore next.

(5) Document

Architectural documentation is sometimes more and sometimes less important. Important documents are for example architectural decisions or code guidelines. Initial documentation is often required before coding starts and need to be refined continuously. Other documentation can be automatically generated as code can also be documentation, e.g. UML class diagrams.

(6) Communicate

From my observations this is one of the most underestimated skill. If you are brilliant in design but cannot communicate your ideas, your thoughts are likely to have less impact or even fail to succeed.

(7) Estimate and Evaluate

(8) Balance

(9) Consult and Coach

Being pro-active is probably the best you can do when it comes to consulting and coaching. If you are asked, it is often too late. And cleaning up on the architecture site is something which you want to avoid. You need to somehow foresee the next weeks, months or even years and prepare yourself and the organization for the next steps.

(10) Market

Your ideas are great and you have communicated them well but still nobody wants to follow? Then you probably lack marketing skills.

Architect's Technology Roadmap

Architect roadmap

Types of Solution Architects

TypesSolution

Suggested Books