HLD High Level Design

This post is a follow-up on “Bootstrapping A New Project”


I’ve written about “User Stories”, a tool that helps with expectation setting when working with (mostly) non-technical stakeholders.

Designing Toward

  • database (schema, tables, indexes..)
  • application layout
  • deployment
  • modules
  • internal and external APIs
  • application infra (frameworks, tools etc..)

Design Tools At Your Disposal


  • System Architect - mostly interested in the software stack, deployment and the database design
  • Team Members - mostly interested in the more lower level stuff like modules and API’s
  • Other Teams - mostly interested in API’s

Feedback on design is great for everyone involved, setup meetings with relevant parties to do DR (design review)

UML and Other Vegetables

UML is complex, you don’t need to know it perfectly, start with what makes sense, and slowly pick up tutorials. Remember, its a visual tool that helps you communicate, not everyone who will look at your designs has the time (or cares for) to read throughly a book about UML and its specifics. In Einstein’s words “Make everything as simple as possible, but not simpler.”


Design does not last. Nobody is going to update the design as the system grows and evolves. Having said that, can still be used a good reference.