Ryan Frantz
Architecture Reviews

Scoping a problem, clearly defining a possible solution, and broadly communicating both are an essential skill for all engineers. After all, we do not build systems in isolation. The things we create are for other people and the choices we make when we build those things have trade-offs and consequences. Further, decision-making is often a murky process fraught with assumptions and misconceptions. To aid in this process, organizations should implement some form of peer-driven architecture review.

What follows is an adaptation of a document I drafted describing an architecture review process that I will be implementing at Bloomberg. I expect this document to be updated periodically. If you would like to contribute, you can find this and other documents relating to software engineering at my engineering repo where I’m collecting my ideas.

To start, consider these quotes regarding engineers as agents of change and the impact of their choices:

“Engineers cause change… We immediately run into three practical difficulties when we consider the engineer’s change: the engineer doesn’t know where he is going, how he is going to get there or if anyone will care when he does”.

“Technology choices don’t happen in isolation. They have a scope that touches your entire team, organization, and the system that emerges from the sum total of your choices”.

Architecture Reviews

We perform architecture reviews to surface potential changes to, to solicit feedback on, to develop confidence in, and gain consensus on, new software designs or operational approaches (departures) even (especially) if we are uncertain what the final outcomes will be. These discussions are made up of peers, stakeholders, and anyone who is curious. All attendees are expected to be open-minded, fair, and even-handed. Participation is intended to be broad.

Do I Need an Architecture Review?

If your first inclination is to begin building something, it’s very likely you’ve not thought through the problem you need to solve. Think deeply about the work and seek first to use existing technology/patterns. If you do not find an existing solution that meets your needs, it may still be out there. Reach out to fellow engineers and solicit feedback. Only afterwards, if you still believe you must depart from current solutions or approaches, initiate an architecture review.

How does One Prepare for an Architecture Review?

First, describe the problem that is being addressed. If the work is intended to replace an existing solution, describe what is currently in place and why it is believed that a change is necessary.

Provide relevant content from documentation, engineer anecdotes, diagrams or other visual aids, etc. An RFC or design document is an excellent place to consolidate this content. Generally, a design document should include some, or all, of the following elements:

It is not required, though strongly recommended, that the proposal be reviewed by the Architecture Review Working Group to help refine it ahead of a scheduled architecture review where a broader audience is expected to attend.

Proofs-of-Concept

It is always informative to spin up some VMs/containers and write a few lines of code to ascertain the rough edges of a solution. By all means, do so. Be cautious, however, that you do not pursue a proof-of-concept too deeply before performing an architectural review; your time is valuable and is likely to bear more fruit spent in a review.

How is an Architecture Review Performed?

An Architecture Review (AR) is a dialogue where an idea is put forward and reviewed. It is not a presentation to persuade or a sales pitch; such events tend to be one-sided and presuppose a decison has been made. Rather, the anticipated benefits and costs associated with the departure are discussed. Most important to this process is attempting to reduce ambiguity so that the operation of our systems may be easier to reason about. We can never eliminate complexity but when we appreciate that “[c]omplex systems are intrinsically hazardous systems” we will come to see ARs as a means of defense against future failure. To that end, during a review, questions like the following should be raised:

In general, the AR is not intended as an approval mechanism. This does not mean that participants cannot have dissenting views. The expectation should be that everyone involved has the right to voice their views in a professional and supportive manner. For example, if someone identifies an issue with a proposal, the discussion does not end at the point of its discovery; rather, a conversation should help everyone come to a shared understanding of the shortcoming and provide recommendations for addressing it.

Some discussions may result in an agreement that no work will proceed (i.e. a better solution already exists or the problem no longer needs to be solved) but by and large, “[e]ngineers (both presenting and participating as audience) need to understand the purpose of the architecture review is to develop better outcomes.”

Who is in Attendance?

Typically those with direct knowledge of the system and those that may consume it will be in attendance. These people, among others, will include:

What is the Outcome of a Review?

While an AR should not be viewed as an approval mechanism, it is expected that the process is managed by a trusted cohort of engineers whose combined experience and influence can be used to effectively drive the direction and execution of work. To aid in the decision-making process and to provide a means for transparently communicating the process, each AR should output the following:

Footnotes

[1] An Architecture Review Working Group is a cohort of engineers that bring a range of experience and perspectives to these discussions and are willing to put in the time and energy to make architecture reviews successful.


Tags