Skip to main content

Technical Architect

 

A Misconception

1257d64b-ce58-4e35-bb9f-9b115809f32a.pngIf you want to build a house, an architect drafts the blueprint while a craftsman lays the bricks following that plan.

Similarly, in software, a developer may pen the code but it's not natively understood by computers. A compiler (or interpreter) translates this code into machine language for execution. This step is aptly named "build."

The developer is the true technical architect, crafting the blueprint that the compiler then brings to life.

So if the developer is the architect, what then is a technical architect’s job?

The Elucidator

ae737d63-f2b1-43e9-a155-28c93784ae23.png

Architects engage with users, developers, and business stakeholders to gather insights and perspectives that might not be immediately apparent. Engaging stakeholders is key to understanding the strategic context that might impact the project.

As business processes are mapped out, architects might discover novel ways of re-engineering them for better outcomes.

Architects rely on current state analyses to translate high-level business goals into tangible, technical requirements and actionable tasks.

 

 

The Translator

9bc9c95f-7280-4ae1-912a-f85ff4e1c9d8.png

The translation from a product specification to a technical specification requires a unique blend of skills.

The architect serves as a crucial bridge that can perform this duty, ensuring that technical solutions are aligned with business objectives and that the product team fully understand any technical constraints and the choices that might affect timelines or deliverables.

Softer skills like clear communication, negotiation, and stakeholder management are essential here.

Architects cooperate with multiple departments and play a part in planning and estimation. Understanding both the business and technical domains allows them to serve both sides. They will also play a crucial role in assessing the impact and feasibility of new feature requests.

An architect who can code can quickly create prototypes to validate their assumptions, ensuring that the business architecture aligns with what is technical feasible.

Architects need more technical skills AND more soft skills than senior developers

The Facilitator

5960bcc4-3046-4e46-b215-2041b2c60212.png

Rather than dictate, the architect should guide and mentor. Their role is to help the team to make technical decisions that align with the project’s goals, scope, and delivery schedule.

They should communicate the technical vision to the team and help the team understand how their work contributes to that vision. They should provide detailed documentation and diagrams, that help both software and infrastructure engineers understand what needs to be built and why.

Technical architects are charged with evaluating the business requirements, finding technical solutions and actively leading the technical vision to success.

 

The Developer

2b4bc590-613c-4fde-9329-074c8dc7db97.png

A well-thought-out architecture accommodates for future growth, making it easy to scale the application. It optimises resource usage, lowering costs, it keeps data secure, makes the system more resilient to failures and can serve as a roadmap for the entire team.

Done poorly, inadequate architecture leads to technical debt, code that cannot handle peak loads effectively, exposure to data breaches, poor development velocity, increased operational costs and customer dissatisfaction.

Given the severity of these extremes, it is important that an architect know where their design is accelerating the team and where it is under-performing.

How?

  • Listen to other developers. Struggles with codebase complexity or frequent workarounds often indicate architectural issues.
  • Perform frequent code reviews. The code will reveal architecture antipatterns or inconsistencies.
  • Monitoring system performance. Performance metrics and code logs can provide early indication of inefficiencies that may be due to poor architecture.

“A software architect who is not in touch with the evolving source code of the product is out of touch with reality”

Craig Larman & Bas Vodde - creators of Large-Scale Scrum

An Ivory Tower

3f850884-db87-4170-a341-8b2a6cdb6e96.pngThe term "Ivory Tower Architect" is used to describe a technical architect who operates at a high level, often disconnected from the realities of the codebase.

Architects without developer experience might not have first-hand knowledge of the challenges related to implementation, scalability, and deployment.

Architects who are more theoretical can sometimes propose solutions that seem more complex than necessary, without clearly defined benefits.

Being distant from the daily nuances of implementation could lead to a disconnect with development teams, potentially resulting in miscommunication and conflicts.

Without direct involvement, these architects might find it challenging to identify where potential issues originate, whether in execution or design.

A Pathway Forward

11f3d1b7-7e2a-46d1-b0c7-83d11176b929.png

  1. Architects should always write some code, if only occasional prototyping.

  2. Architecture should never "hand off" to engineering. Use architects as pair programming mentors, design workshop coaches, etc ...

  3. A software architect is expected to be an active member of the Scrum team. This means participating in all the usual ceremonies.
  4.  

     

     

    Examples from Industry

    Aaron Boodman, Google engineer.

    Does Google employ software architects? Not really. Google doesn't consider that a separate skill. As you advance in your engineering career at Google, you may find yourself leading projects and this naturally involves more design and less coding. But nobody’s sole job is to “architect software”. Every engineer shares that responsibility.

    Bob See, Principal Recruiter, Google Engineering

    “Architect" positions/titles don't actually exist at Google. The engineering culture at Google is actually a bit allergic to the idea of people making technical architecture decisions and then expecting other people to do the coding/implementation.

    From Apple's current job pages

    In this role, you will be a member of the Platform Architecture team, working with hardware and software engineering groups to shape the architecture of Apple's future System-on-Chips (SoC). ... We are looking for SoC architects with a passion to innovative new hardware concepts and model them in C++/Python to demonstrate their value and impact.

    From Microsoft's current job pages "Azure Solutions Architect"

    Technical experience and knowledge of architecture, solution development and deployment techniques ...Ability to lead a multidisciplinary technical team, provide clear direction and take accountability for technical project outcomes

    Gergely Orosz, the "pragmatic engineer"

    neither Uber nor Skype/Microsoft have hands-off software architects