An opinionated path to proficiency in software design

(A rough compilation of notes that I find useful on my current studies in software development.)

Concepts, approaches & methodologies (in the following order)

  • Code smells, refactoring & design patterns.
  • Behavior-driven development (or outside-in test-driven development).
  • Imperative shell, functional core.
  • Data, context & interaction.
  • “Ports & adapters” architecture.
  • Domain-driven design.

Guides, principles & mindset

  • Be use case-driven.
  • Think in context.
  • Strive for one piece flow.
  • Face software internals as an illusion experience (or “simple on the outside but complex on the inside” mindset).
  • Embrace ignorance (or, be fair with your current knowledge).
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.