search menu icon-carat-right cmu-wordmark

Architectural Hoisting: Or How I Learned to Stop Writing Breaking Code and Love the Architecture

May 2018 Presentation
Joe Runde (IBM), Michael Keeling (IBM Watson Group), Charles Gala (IBM Watson)

This talk describes how an IBM Watson team used architectural hoisting to enforce design decisions in the code and avoid accidental architectural violations.


Software Engineering Institute




Documentation is an essential analysis and education tool—but documentation alone will not keep your design intent in sync with the emerging software system. Even the most disciplined and dedicated developers will make mistakes, whether by accident or ignorance. The only way to enforce the architecture is to hoist design constraints into the code itself.

Architectural hoisting is a design technique proposed by George Fairbanks in which the responsibilities for enforcing a design decision are implemented in the code instead of relying only on disciplined developers. Architectural hoisting has many benefits beyond enforcement. Hoisting key design decisions helps promote maintainability and readability via architecturally evident code. Hoisted systems are easier to learn and navigate and provide great peace of mind that the quality attributes designed for will actually appear in the built and deployed system.

This talk shares experiences with architectural hoisting in microservices built for IBM Watson. By the end of the talk attendees will know what architectural hoisting is, how it can help you write better software, and see concrete examples in Go and Java.