A good definition of a software architect is hard to come by. Our own website says the following:
As a software architect, you will have years of experience in the software industry and you are comfortable with many technologies and programming languages. You like to take responsibility and are able to help both customers and your colleagues to improve their performance. We value in particular your vision, good interaction skills, and team working and problem-solving skills. As a software architect, you will have a chance to design and manage nationally significant software projects, meaning that previous coaching and sparring experiences will come in useful.
Let’s break this down:
- Years of experience in the software industry
- Comfortable with many technologies and programming languages
- Take responsibility
- Help both customers and colleagues to improve their performance
- Good interaction skills
- Team working skills
- Problem-solving skills
- Coaching and sparring experience is useful
What Does a Software Architect Do?
From our website: ”As a software architect, you will have a chance to design and manage nationally significant software projects”
The architect designs architectures, of course. But not alone, this is done with the team and the customer. The architect needs to know the newest tech, but also has to be a bit conservative. They also need to put the architecture into practice and support the team in implementing it.
Supporting the team and mentoring team members is an important aspect of the role. Sometimes the architect can even be kind of tech support for the team. As a scrum master, the software architect can be seen as a servant leader role.
One view of software architects work can be found at The Path to Becoming a Software Architect:
- Identifying the stakeholders on the project.
- Identifying business requirements and requirements of the stakeholders on the project.
- Designing the entire system based on the received requirements.
- Choosing the system architecture and each component of this system at a high level.
- Choosing the technologies for the implementation of each component and connections between the parts.
- Architectural review. Yes, yes, it exists.
- Writing project documentation and support it.
- Creating unified development standards in the company.
- Controlling the architecture during the next iteration of the system release.
We do not agree on all these points, especially the ones that over-emphasize the role of a software architect as an authority of some kind. Let’s dig deeper into what it might mean to be a software architect at our company.
Skills and Characteristics of a Software Architect
It is apparent that a software architect should have very broad technical skills. The often-used concept of T-shaped skillset applies here very well. In the consulting business the horizontal bar, i.e. ”the ability to collaborate across disciplines with experts in other areas and to apply knowledge in areas of expertise other than one’s own” is especially important.
Communication skills are key to a software architect’s profile. The person should be open to talking about the design decisions an able to present designs. They should also be open to suggestions from team members and stakeholders alike. An architect should be able to give presentations and talks comfortably. They should also be able to ask questions, especially the most important one: ”Why?”
An architect should also have leadership skills, and lead from the front, by example.
Mentoring is an important part of an architect’s skillset, and also their mindset. They should be ready, willing, and able to guide more junior colleagues, and also the client if needed.
Understanding of customers’ business is essential, as well as our own. The architect should have experience from several business domains. They should also be able to identify business opportunities for Gofore.
The architect is a holistic thinker who sees the big picture. They also need to deal with many different people, so social skills and emotional intelligence are important characteristics.
Software Architects at Gofore
Currently, we have eighteen software architects at Gofore. Tampere has nine, Helsinki five, Jyväskylä two, Turku one and Estonia one.
The work experience of our software architects is between 10 and 30 years, the average being 18 years.
Most of our software architects seem to be Java/Nodejs full-stack developers with either React or Angular in the frontend. We also have a couple of software architects focused on mobile development, with or without backend support. For .NET we have exactly one (1) software, architect. Many of our software architects are also highly skilled in DevOps/Cloud and/or agile practices. Only a couple reports integrations as a key skill.
At Gofore, all developers, including software architects, are consultants above all. The roles of, say, a senior software developer and a software architect are fluid. Both work in a project as team members and take part in the design and development activities. What differentiates software architects from e.g. senior software developers should not be purely (if at all) the technical skills, but rather things like communication and leadership skills.
”The role is pretty misunderstood inside the company. It is not a Super Coder and natural development after being senior dev for some time but people think that way.
The skillset is different and bigger companies usually have other routes after senior dev. A software architect is just one of the routes.”
How Do I Become a Software Architect?
On the surface the answer to ”How do I become one?” is simple. You start doing ”architect things” and after a while, you can say that you are an architect. Currently, we don’t have any explicit development paths for developer roles, but this post is a small step towards one. Still, here are some useful tips:
- Learn to identify and communicate with stakeholders
- Learn about documenting software architectures
- Learn about architectural patterns and styles
- Broaden your technical horizons
- You don’t have to go deep, but preferably have a good understanding of several technologies and stacks. Read a lot.
- Learn and practice what it means to be a servant leader
Big thanks to the following people for contributing to this work!
Juha T Siltanen
Haluatko kuulla ja jutella aiheesta lisää, lähetä meille verkostoitumispyyntö!