Problem

Software development at scale today requires many many skills. But, complexity forces deep specialization early on and many SWEs never get the time to amass ideas and mental models from other branches of Software Engineering. For example, consider two sets of software engineers 1. Experts in a particular branch, say latency engineering 2. Experts in another branch, say writing extremely clean and well-organized code. I believe that the intersection has a far lesser cardinality than the union of these two sets with a consequence that it is considered acceptable for latency sensitive code to be a hot mess. One can only imagine the consequences at scale.

10 minute mental models

With the 10 minute mental model series, I hope to introduce important ideas from several branches in 10 minutes or less. I hope they’ll serve either as an onramp to further investigation, a refresher from time to time or just provide the joy of learning something new.

Canonical Problem

In terms of pedagogy, each topic will have a corresponding Canonical Problem answering which illuminates the key concepts.

A Canonical Problem is a small problem that

  • Displays most of the challenges in the underlying concepts
  • Forces a reasonably thorough understanding of the concepts to solve it
  • Generalizes to bigger problems: If we can solve it correctly, we can be confident of solving bigger problems