Architectural Methods: Finding Order in the Chaos of Design
Written on
Understanding Architectural Methods
In this article, we will investigate various architectural methods and their effectiveness in enhancing the design workflow.
The Nuances of Architecture
Architecture is a complex field within technology. Throughout my career as an architect in six different organizations, I've come to realize that no two positions are identical. One commonality, however, is the ambiguity surrounding the role of architecture itself. Often, it is not clearly defined or comprehended by business teams, tech colleagues, or even the architects themselves.
While I grasped the business context and project aims, much of the rest remained implicit—I had to navigate it independently. This observation led me to conclude that there is a shortage of resources detailing architectural methods tailored to specific contexts. While there are vendor-centric resources like the Azure Architecture Center, they tend to focus solely on the implementation of their technologies rather than offering general guidance on tackling common architectural challenges.
Examples of such challenges include:
- Reaching consensus on a solution vision among multiple stakeholders
- Eliciting and negotiating non-functional requirements (NFRs) among stakeholders
- Ensuring continuous delivery while managing risk-averse governance
Defining a Method
What is a Method?
A method is generally understood as a systematic approach or technique for accomplishing a task, usually following a specific plan.
In architectural terms, a method can be viewed as a series of activities designed to produce a specific outcome.
Examples of Architectural Methods
- Solution Vision: This outlines the intended users, features, and technical specifications of the solution, aligning teams around the project scope.
- Solution Options: This method compares various solution alternatives, detailing their advantages, disadvantages, required effort, costs, and more, thereby involving stakeholders in the decision-making process.
- High-Level Solution Design: This provides a macro-level overview of the solution, facilitating communication about its components for planning, compliance, and delivery.
Case Study: Designing a Greenfield Application
Imagine you are tasked with creating a greenfield application. The business sponsor communicates the project goals and requests a plan. After numerous discovery workshops, you achieve clarity on the application requirements.
Solution Vision Method: To ensure stakeholder alignment, you collaborate with the team to develop a presentation that outlines the high-level solution, including its capabilities, roadmap, and associated risks. After presenting this to decision-makers, they agree to remove two features from the initial release, but overall, they are satisfied with the direction.
Solution Options Method: You identify three technical solutions for a particular capability, each with its pros and cons. Given the significant costs associated with these options, you seek approval from the budget holder. You assess the three technologies based on functional fit, strategic alignment, and cost, summarizing your findings in a presentation. Following some intensive discussions regarding costs, the decision-makers approve the solution, and you document the outcome.
Method Description Template
To ensure that methods remain practical and not just theoretical concepts, I have devised a straightforward template akin to a pattern language.
Example Method Name: Solution Options
Context: Multiple technical solutions have been identified for a specific problem.
When To Use: When the architectural significance of the problem is evident, and no approved patterns are applicable.
Prerequisites: A clear understanding of business objectives, requirements, and constraints.
Method Steps:
- Identify at least two solution options, ensuring alignment with organizational strategies—e.g., if your organization uses AWS, avoid Azure technologies unless necessary.
- Conduct a t-shirt sizing estimation with your team.
- Identify technical spikes for any high-risk assumptions.
- Complete an options comparison matrix.
- Present your options and recommendations to the decision-makers for their approval.
- Document the decision in the architecture decision log.
Example Options Comparison Matrix
I have also shared the example above in a GitHub repository, which you can access via the link below.
Future Additions
I plan to include more examples such as:
- Impact Assessment
- System Quality Analysis
- Solution Pattern Creation
- Building Block Creation
If you have feedback or suggestions for enhancing this specification, I welcome your comments. Additionally, if you’re interested in contributing your own methods, please consider submitting a Pull Request.
Final Reflections
Architectural methods offer practical guidance toward achieving desired outcomes in architecture. Benefits include clearer descriptions of activities, increased consistency, and improved knowledge sharing. If confusion exists regarding the architectural role in your organization, consider publishing your catalog of methods as a service offering.
I hope you found this discussion engaging.
The Yam Yam Architect
In this first video, "Mixed Paradigms: The Method to Madness," Venkat Subramaniam discusses various programming paradigms and how they can inform architectural decision-making.
The second video, "A POOR RHETORICAL STRATEGY | The Talos Principle II | Solution 34," examines the importance of clear communication in architectural contexts and how it can impact decision outcomes.