This is the opposite of question C-5-12 (blocks you don’t need to document).

Focus on important building blocks

You should document or specify the following kinds of building blocks:

  • The level-1 whitebox (aka the top-level decomposition of your system).
  • Blocks that address important quality attributes of the system.
  • Blocks addressing specific or important functionality.
  • Blocks that handle complicated or complex functionality.
  • Blocks that mitigate or handle risks.
  • Blocks that contain surprises or unusual ideas.
  • Blocks that somehow deviate from the rest of the system.
  • Blocks that deviate from typical developers’ expectation.
  • Blocks that are required or important for creating business value.

Focus on higher-level building blocks.

Level-1 should always be documented.

Remember to be lazy and document economically: Smaller documentation for fewer building blocks are easier and cheaper to maintain than large documentation for many blocks…