Ovidiu Mățan: Your latest book, Fundamentals of Software Architecture, is providing a good framework for software architects. Which is a normal path for someone to become a software architect?
Mark Richards: The advice I usually offer people about becoming a software architect is make sure you are prepared before jumping into the role. Becoming a software architect is much more than having strong technical skills. An architect must also have a passion for creating solutions for business problems, an interest in developing strong people skills, and a desire to mentor, coach, and lead teams.
The traditional path to becoming a software architect is by starting out as a developer, work up to technical lead, and then move into the architect position. Some of the ways to prepare for the architect position is to first start placing more of a focus on gaining technical breadth rather than technical depth. That means going broader rather than deeper and basically learning less about more things. Another way to prepare to become an architect is to start focusing on identifying and analyzing tradeoffs and learning the various architecture styles and to corresponding advantages and disadvantages of each. Finally, start to develop strong people skills - those are half of what being a software architect is all about.
My latest book with Neal Ford, "The Fundamentals of Software Architecture", is organized into three parts on purpose. Part one deals with ways to think like an architect. Part two deals with the technical aspects of software architecture, and part three deals with the techniques and soft skills of architecture. All three of these aspects are needed to become an effective software architect.
Which should be the key strengths of a good architect?
Mark Richards: The first key strength of an effective software architect is being able to analyzing tradeoffs to make the right architecture decision for a given situation. Proper skills in tradeoff analysis help architects justify an architecture decision or solution and help get buy-in from various stakeholders.
Another key strength is negotiation and facilitation skills. The reason for this is that almost every decision an architect makes will be challenged - they will be challenged by other architects who think they have a better approach; they will be challenged by developers who don't agree with you; they will be challenged by business stakeholders who don't want to invest the time and money into a particular solution. Understanding the political climate of the enterprise and navigating the politics of the organization is a key factor in getting anything done as an architect.
Having strong people skills and being able to lead and guide teams through the implementation of an architecture is one of the marks of an effective software architect. Development teams look to the software architect for answers to their questions, as well as leadership and guidance, particularly for the hard problems that face most technical efforts and initiatives. Knowing how to communicate and collaborate with development teams, business stakeholders, and IT operations staff is an essential skill every software architect must have to become successful.
Microservices and serverless has changed the way software is develop today, what should we looking for next?
Mark Richards: Although Microservices and serverless are still popular, companies are starting to look towards event-driven architecture as the next "new thing". While event-drive architecture is not new (it's been around for quite some time), more people are starting to leverage it for the complex problems we face in today's landscape, including reactive systems, dynamic workflows, and complex, non-deterministic processing. There have been many books coming out lately on the topic of event-based systems, and cloud vendors are embracing event-driven architecture to come up with new and innovative services. It is my belief that this will be the next big wave within the IT industry.
Your presentation from The Developers conference this year is Understanding Architecture Styles - And when to use them. Please tell our audience what should expect from it?
Mark Richards: Having the right architecture style in place is essential for the success of any application. The question is, which one? Layered? Microservices? Event-Driven? Space-Based? Modular Monolith?
In my presentation you can expect to learn about eight different common architecture styles, what the strengths and weaknesses are of each, and how to know which one to use. I'll be covering monolithic architecture styles such as Layered, Modular Monolith, and Microkernel, and distributed architectures such as Microservices, Service-Based, Event-Driven, SOA, and Space-Based architecture. For each architecture, I'll outline the overall shape of the architecture and talk about the situations when to use each, and also when not to use each.
The presentation will help you be able to know not only how to select an architecture for new applications, but also to validate existing applications to determine if you are using the right architecture, and if not, what architecture style (or styles) would be a better fit to ensure the success of your application.