knowledge-base

What does a Software Architect do?

based on Fundamentals of Software Architecture

Architectural wisdom and ideas can very specific for their time they were documented. As technology constantly changes, many aspects regarding architecture will change along with that. An example would be the introduction of tools like Kubernetes, which made the restructuring of any software topology cheap, which allows for a more evolving topology. A decade ago, such decisions were costly, so mostly final, once they were made.

The core responsibilities that we discuss here are relevant for all type of architects (including infrastructure).

Core Responsibilities

  1. Make architecture decisions
    • Designs and design principles must guide technology decisions not dictate them.
    • You can instruct to use “reactive-based framework for web development” but not which one.
  2. Continually analyze the architecture
    • Analyze the current architecture and technology environment and recommend solutions for improvement.
    • “How viable is the architecture from a few years ago, today? Given the changes in both business and technology”
    • This includes test/release environments, which allows for agility. Remind DevOps principles and practices.
    • Example: Potentially do periodic Risk Assessments
  3. Keep current with latest technology and industry trends
  4. Actively ensure compliance with decisions
  5. Technical breadth over technical depth
    • Seek aggressively experience or exposure to multiple languages, platforms, and technologies.
  6. Have business domain knowledge
    • Important for good communication, you do need to align with business needs.
  7. Possess interpersonal skills
    • Teamwork, facilitation, and leadership.
  8. Understand and navigate politics
    • Must understand the political climate and be able to navigate the politics.

In addition to these core expectations, there are many more and this will change as technology and scale changes.

Note that (7) and (8) are crucial for the ability of the architect to have effective impact and to execute change.

Culture

Agile development avoids big design up-front (BDUF) with a simple belief that “the best architectures, requirements, and designs emerge from self-organizing teams [1].” This yields the practice of emergent design—defining and extending the architecture only as necessary to deliver the next increment of functionality. These problems can result in poor solution performance, unfavorable economic outcomes, and delayed time-to-market. Organizations overcome these problems by balancing emergent design with intentional architecture, which requires some centralized planning and cross-team coordination. Both are implemented with Enablers and, together, ‘pave’ the architectural runway (Figure 1).

Resources