Gordo Lowrey - Architect
September 2024
Architecture provides the foundation for aligning technical solutions with business goals, managing complexity and enabling efficient data processing, while ensuring that systems remain secure, performant, and adaptable to future needs. This document seeks to define architecture as a discipline, developing a culture where architectural thinking is embedded in daily practice. Architecture is not the sole responsibility of architects, but a shared discipline that drives consistency, scalability, and long-term success. By instilling architectural principles, all teams will create an ecosystem that is efficient, maintainable, and aligned with business objectives.
The purpose of this document is to:
- Embed architecture as a shared discipline across all engineering teams.
- Define the role of the architect as a strategic enabler, supporting teams in making sound architectural decisions.
- Ensure that teams understand when and how to approach architectural decisions.
- Promote a culture of architectural awareness throughout the entire software development and product life-cycle, from planning, to implementation, and beyond.
Stakeholders, engineers, and architects must work together to ensure the integrity of our systems, focusing on long-term maintainability, scalability, and product/business alignment.
Architecture is not only for architects; every engineer and stakeholder plays a part in ensuring that our systems are robust, secure, and future-proof. The value of a shared architecture discipline includes:
- Long-Term System Integrity: Architectural decisions made today will impact the system years down the line. Teams must be mindful of the trade-offs between short-term fixes and long-term sustainability.
- Scalability: Our systems need to process large volumes of information efficiently. Thoughtful architectural decisions are critical to ensuring that systems can scale to meet growing demands without compromising performance.
- Security and Compliance: Adhering to architectural best practices ensures that all systems meet data security and compliance standards, reducing risk.
- Cost Optimization: Efficient architecture enables efficient resource management, minimizing unnecessary costs, whether related to infrastructure, development, or maintenance; teams should always consider the cost implications of architectural choices.
- Collaboration and Consistency: A strong architectural foundation helps ensure that systems built by different teams fit together cohesively, avoiding fragmentation, duplication of effort, and misalignment.
Every engineer, regardless of their role, has responsibilities within the architecture discipline.
- Engineers should develop an awareness of how their work fits into the broader system. Understanding the overall architecture and its goals ensures that individual contributions support long-term system stability.
- While architects provide guidance, engineers must take ownership of architectural decisions within their domain. This involves considering the impact of their choices on performance, maintainability, scalability, and security, among other concerns.
- Adhering to established patterns and standards is crucial for long-term sustainability. Engineers should resist the temptation to implement one-off solutions that do not align with the broader system architecture.
- Engineering teams must balance immediate delivery needs with long-term technical health. Decisions should not be made purely for short-term gains, as they often lead to technical debt and future system inefficiencies.
- Teams should involve architects early in the decision-making process, especially when the overall system may be significantly impacted. This reduces the risk of rework and ensures alignment with the technical roadmap.
- Architectural decisions must be documented, ensuring traceability and transparency. Every major technical decision should have a clear rationale, allowing future architects, engineers, and stakeholders to understand the reasoning behind the system design.
The architect serves as a strategic enabler, guiding teams in making architectural decisions that align with our goals. However, architects are not gatekeepers of all decisions.
Providing Guidance, Not Control: The architect's primary function is to provide guidance on significant technical decisions. Engineers are empowered to make day-to-day architectural choices, but must know when to seek input.
Driving Strategic Vision: Architects focus on long-term scalability and technical direction, working closely with product and engineering leadership, to align technology with product and business strategy, ensuring that decisions made today align with future needs.
Facilitating Collaboration: Architects help bridge the gaps between teams, ensuring that technical decisions are not made in isolation, avoiding silos and fragmentation, so that decisions made in one area of the org do not negatively impact others.
Bringing Awareness: Architects encourage all teams to be mindful of the broader system when making technical choices, ensuring consistency and stability across the ecosystem.
Architects should not be involved in every decision, but there are key moments where their expertise is critical.
- Engage the architect at the start of a new project to review requirements, select technologies, and ensure system-wide alignment.
- Any time there is a shift in architectural design, such as: moving from one architecture to another, changing database technologies, shifting data models, utilizing new frameworks, introduction of cross-system breaking changes, etc...
- When projects involve multiple teams, or have dependencies across services, it is essential to ensure that architectural alignment is maintained.
- If a change affects multiple teams (shared services, APIs, or cross-team data dependencies), the architect must be consulted to align on integration and dependency management.
- Any changes that involve system security or handling sensitive data should consult with the architect to ensure adherence to company data policies, best practices, and industry norms.
- Decisions involving cloud infrastructure, deployment strategies, and cost optimization, all benefit from strategic oversight, ensuring that solutions are efficient and cost-effective.
- When systems need to scale, or when performance bottlenecks arise, architects can provide strategic and tactical advice.
To truly embed architecture as a discipline, we must build a culture of awareness and collaboration, across teams: Learning Opportunities: Engineers should be given opportunities to learn about architectural principles and best practices (training, workshops, mentoring, etc...) Collaborative Reviews: Regular technical reviews that include both architects and engineers helps to ensure that teams are aligned on architectural goals, and knowledge is shared. Feedback Loops: Encourage open channels of communication where engineers can seek feedback from architects early and provide their insights to improve the overall architectural framework. Design Thinking: Encourage teams to think critically about how each piece of the system contributes to long-term product health.
Architecture is a shared responsibility, essential to the success and smooth operation of our company. By embedding architectural thinking across all teams, our systems can be scalable, secure, and maintainable in the long term. Architects provide strategic guidance, and may occasionally sling some code, but the discipline of architecture is owned by every engineer. Together, we can create a product ecosystem that supports growth, optimizes resources, and ensures the integrity of the data we process.