Skip to main content

Software architecture as a nautical chart 🧭

The goal of software architecture isn’t to specify all the details, but to describe a solution space in which teams are free to move.1 It is similar to how a nautical chart provides sailors with the information needed to navigate safely toward their destination, showing the safe channel and hazardous areas to avoid.

A simplified line-art nautical chart
The nautical chart shows you how to safely navigate to your destination.

For architects and developers, nautical charts offer a useful metaphor for designing architecture that guides teams efficiently and reduces costly missteps. A good architecture shows teams where we want to go, the preferred path, and areas that are off-limits. It must balance guidance and freedom: too prescriptive, teams struggle to adapt; too vague, they risk going off course.

Using this metaphor, we can break down the architect’s role into three practical elements.

  • Destination: The target and what we aim to achieve.
  • Safe channel: The default path unless special circumstances dictate otherwise (e.g., preferred frameworks or patterns).
  • Hazard zones: Areas to avoid or approach with caution (e.g., forbidden dependencies, unsafe practices, or regulatory requirements).2

Define these elements and let teams navigate within them. Doing so empowers teams with clarity and autonomy to deliver value safely and effectively.


  1. In the end, the goal is to realize a vision, not a requirement spec↩︎

  2. Constraints are good, so don’t be afraid to use them. ↩︎