Although there is no an exact and shared definition of what is the service of software architecture, I like to compare it with an architecture of buildings. In the sense that an architect normally has a big picture vision, defining the discipline, setting priorities and steps. And in this article, we will look at the role of a software architect in software development projects.
- The responsibility of being the “guardian of the vision”, in the sense that software architect must have and share a technical vision and technical direction, plan based on the requirements of the project.
- On the other hand, software architect should know the disciplines he or she will use to build the system, for example, development environment or estimates or part of DevOps and even the basic methodologies (DDD, Continuous Integration, TDD … all good practices )
- Should be able to transmit his or her knowledge to the team members, both vision, and disciplines.
I still think that documentation in software development is crucial. It really helps to share the vision and make it clear for everyone in a team why certain technical decisions were made.
Based on my experience, I think that in general, software architecture decisions are critical, in the sense that a wrong decision can generate a lot of problems in terms of money and time. And vice versa good software architecture decisions help a team build working software thinking about scalability, performance and cost reduction.
Again, a good software architect can solve problems that company was not able to solve during several years. And a bad one or a team without any software architect can turn a project of 2 weeks in a project of 1 year. Let me insist, not all “software architects” are good. I would say there are very few good ones in the world, but now software development teams start to understand the importance of having one and this field is developing quite fast. And proven by experience that 90% of critical software decisions are taken right by software architects. Moreover, he or she can improve the efficiency of a team, setting the right goals and principles.
I believe that software architect should be a software developer, a good software developer. Software architect should not have pauses in writing a code. And only gaining solid experience, working for several projects and achieving notable results a developer can evolve into an architect.
Let’s look at it more in details:
Software architect – it is not just a title, it is a way of thinking. The architect thinks mathematically or in other words, you can call it rational thinking. Architect takes into account set of options and objectives and comes up with the optimal decision that makes a difference. He or she is responsible not only for the current sprint but for the whole project, thinking about the maintenance as well.
Software developer – normally a developer makes a specific decision at a specific time within his responsibilities.
To sum it up, let me highlight my thought that “software architect” is a mental state, a way of thinking, not a diploma. Software architect thinks about the system as a whole and analyzes it even at a macro level.
And if you want to receive more articles about software architecture, subscribe to our monthly newsletter.