The role of the software architect
I looked at my LinkedIn post DRAFTS and found an article I wrote in 2016 but never published. It is as true today as it was SEVEN years ago when I wrote it. The role of the software architect is important. Below is my original unpublished (unfinished) article (about seven years before chat GPT, so no AI was involved in writing this, I promise):
I’m often asked “what does a software architect do?”. Rather than answer the same question again and again, I’ll capture here, in broad brush strokes the role of the SA.
TL;DR: taking in a lot of parameters, having built over a long time a substantial knowledge base and experience, and analyzing it for the purpose of teaching, learning-from, negotiating-with and influencing the organization to make good decisions.
Good decisions are those that first and foremost help the organization be more profitable in the short and long-term. By having an agile, scalable, available, secure and easy to use platform, the organization is much more likely to achieve its objectives.
Realizing that there are multiple ways to materialize a goal, deciding on the most appropriate method involves a clear understanding and analysis of the desired business outcomes within the context of the various constraints that inevitably exist.
As a concrete example, consider what is hot topic these days - the move from a monolithic design to a micro service architecture. This is but one of many topics that require a deep understanding, and a deliberate plan of action.
At a high level, most organizations have embraced the micro service architecture approach. The benefits of such an approach include:
Recommended by LinkedIn
There are also disadvantages to the micro service architecture model which include:
The above is not meant as an exhaustive list of pros/cons, but top-of-mind subset of the list. It is generally (yet not universally) accepted that the benefits outweigh the disadvantages. With that in mind, there are multiple ways to achieve a micro service architecture. Some decisions that need to be made include:
All of the above questions need to be clearly asked and fully answered and on top of that, there are the technology selection decisions that map the most appropriate technology for the desired benefits within the organization’s set of constrains. These include:
With the philosophy that there is no one single tool which is appropriate for every job, it makes sense to adopt the right tool for the job, however, having architectural oversight and input steers the organization into having a much less chaos. I’ll use an analogy: A city planner and the department of building and safety do not design every aspect of a city, street and house. Instead, the city planners design and maintain over time, an overall architectural structure that works. Streets wide enough for the expected traffic (in theory, I’m in L.A. after all), enough parking spaces, not co-mingling residential single-family homes with industrial or commercial structures, etc. The building and safety department ensures that certain standards are adhered to, so that bad things don’t happen (as often as they would have otherwise, should standards did not exist or were not enforced).
One could argue that chaos does work, but I’d point to cities without zoning, planning, and common set of services in developing countries where people operate diesel generators, drill water wells and there is no sewer system or telecommunications infrastructure or services to speak of. Do people live there? Yes. Would you want to live in a chaotic city without a plan and without a building and safety department? Most likely not…
To conclude, the functions of the architect include applying a big picture view (with a good understanding of the parts that make up the whole) and influencing the organization by whatever means in order for it to make correct “zoning” and “safety” decisions as it evolves and grows. Always keeping in mind that those decisions are there to support the growth, sustainability and profitability of the business.
While a big picture view is important, it is also important to innovate, understand emerging technologies and potential threats (security, technology deprecation, ability to be competitive), identify incorrect past decisions and their potential negative ramifications and to bring teams together, and to learn from everyone and help to continuously evolve the collective intelligence of the organization.
Doron, thanks for sharing! Great post.
Doron, this is great!
What is also an important trait is the ability to move on. We are bound by so many solutions that no longer fit, yet we dedicate a high percentage of our time sustaining them. In addition to architecture we need demolition experts.
you da man Doron