Who is an architect?

When we hear the word “Architect”, the first thing that comes to mind is a specialist who works in the field of designing and erecting buildings. Have you perhaps wondered about the job of an Architect who does not erect huge skyscrapers, but whose field is the IT industry?  Or have you seen job advertisements where they were looking for a “Systems Architect”? In this post, I will try to explain what an Architect does and who exactly they are.

What is the job of an Architect?

In order to design the system architecture, regardless of its complexity, it is necessary to have a good knowledge of functional and non-functional requirements. The architect must know very well the expectations placed on the system in order to propose an optimal architecture accordingly.

Depending on the organization and specificity of a given project, an architect may operate on various levels:

– from macro scale, where he/she focuses on high-level system components (applications, services, subsystems) and their integration through available interfaces,

– to the micro scale, where he/she designs the structure of class dependencies, data models and business logic algorithms on the basis of commonly accepted design patterns.

The result of the architect’s work are usually documents describing the designed system fragment, including

– technical documentation describing the details of architecture (i.e. system components: modules, applications, servers, services and the way of their integration and interactions),

– UML diagrams (diagrams of classes, components, sequences, activities, etc.).

It often happens that when planning the use of a given solution, the architect prepares for it the so-called “Proof of Concept”, i.e. a simplified implementation intended to show the concept of operation of a given mechanism and verify its feasibility.

With whom does the Architect work closely on the project?

As mentioned earlier, the knowledge of functional and non-functional requirements is crucial for the preparation of an optimal architecture, which is why the architect often cooperates with business analysts, and in smaller projects directly with the customer. Once the requirements have been considered and the system design prepared, the architect hands it over to the development team for implementation. Architect closely cooperates with developers, especially in projects conducted in agile methodologies (e.g. Scrum); it is iterative work, during which the architect designs subsequent fragments of the system and the development team implements them.

What areas of knowledge should I focus on in order to become an architect in the future?

There are several areas that are particularly important for an architect:

– proficiency in programming (architects often specialize in selected technologies e.g. .NET/Java),

– knowledge of design patterns and good programming practices,

– knowledge of architectural patterns,

– knowledge of communication interfaces (REST API, SOAP, gRPC, GraphQL, etc.)

– knowledge of the basic methods of integration between systems (queues, communication buses).

From Trainee to Architect – the path of development.

The most common (although not the only possible) development path for an architect is the one related to programming. Often, after reaching an appropriate level of proficiency in system implementation, senior programmers, wanting to have more influence on the shape of the system, start to look at it from a broader perspective and focus their attention not only on the implementation method, but also on the concept of operation, integration and design of solutions for the entire system. This is when they most often take on the role of an architect in the project.

Pros and cons of working in this position.

The work of an architect is extremely satisfying as it is very creative – each project is different and therefore problems and challenges are also different. The architect looks for optimal solutions to these problems based on the requirements and limitations of the project. Watching ideas and concepts transform into a working system is a lot of fun.

However, making decisions about the system architecture involves a lot of responsibility – a badly designed architecture may result in the whole system or its fragment not working as expected.

If I could turn back the time, would I still be an Architect? Definitely yes – it’s a very exciting job.

Piotr Molski