Alex Whiteside
What makes a "good" Software Architect

What makes a "good" Software Architect

If you polled 10 random software development organizations about Software Architecture and the role of a Software Architect, you'd get a wide range of opinions and probably some mixed reviews.

An architect is a Staff+ Engineer, mixed with a Staff+ Product Manager, who has strategic communication skills and has experience evolving products over significant time.

Staff+ Engineer

  • Lead by example groups of cross team contributors towards a significant technical solution

    • Often hands on implementor during prototype, or critical bits

    • Pairs, Reviews, is actively involved during development

    • Produces design documents and complex implementations

  • Designs Solutions that are simple, appropriate, mitigate risk, and align with technical strategy

    • Understands industry patterns, available stable tools, platform features

    • Can survey and understand current state of technical systems in reasonable time, ask probing questions, identify risks and health

  • Documents significant decisions taken, meaningful complex implementations, and proposed directions clearly, simply and effectively. (includes /*code*/, docs, ADRs, statuses, RFCs)

Staff+ PM lite

  • Understand and evolve overall product strategy, active and desired customer segments, value created, and competition

    • Current and desired capabilities, costs, revenue sources, operational efforts

    • Current business objectives and sales expectations

  • Design and manage complex projects, including costs, resourcing, and dependencies to deliver on time and on budget

    • Understands resourcing, team strengths/weaknesses, existing commitments, context switching costs

    • Comfortable managing Stakeholders and incorporating feedback appropriately

    • Monitors and communicates status and deviations from plans for feedback

  • Defines, evolves and maintains the domain language and concepts that prescribe the details of our solution - maintaining conceptual integrity and striving for simplicity.

Staff+ Communicator

  • Can discuss relevant parts of complex system with any part of the organization on their terms.

    • contributors - product, designers, developers, eng managers, tech leads, operations, infrastructure, content creators

    • stakeholders - domain experts, security, marketing, compliance, legal, executives, business analyst

    • 3rd parties - Cloud provider, SaaS vendor, integration partners

  • Understand and distill requirements / needs to their key parts and "barter" alternatives to arrive as minimal and simplest requirements or changes.

    • Firmness, Reasons Why, Traceability
  • Draft and present efficient, understandable, audience appropriate documents and presentations of complex initiatives