Open-Closed Principle by Example: OCP as Architecture

This series clarifies the Open-Closed Principle (OCP) with examples. This post applies the OCP to the system level with architecture patterns like ports and adapters.

March 2, 2023 · 9 min

Open-Closed Principle by Example: Interchangable Implementations

This series clarifies the Open-Closed Principle with examples. This post will demonstrate the OCP through interchangable and composable dependencies.

March 2, 2023 · 6 min

Open-Closed Principle by Example: Callbacks & Handlers

This series clarifies the Open-Closed Principle with examples. This post will demonstrate how the OCP can be achieved through flexible behaviors like callbacks.

March 2, 2023 · 6 min

Open-Closed Principle by Example: Flexibility Through Data

This series clarifies the Open-Closed Principle with examples. This post will demonstrate how the OCP can be achieved through flexible data.

March 2, 2023 · 7 min

Open-Closed Principle by Example: Introduction to OCP

The Open-Closed Principle, one of the SOLID principles, is crucial to reusable code and insulated problem domains. This series will clarify the principle with examples.

March 2, 2023 · 3 min

Why callers own abstractions

Dependency Inversion demands that abstractions belong to callers. This isn’t an immediately intuitive choice. I’ll break down the choices for where our abstractions can live and how each choice impacts kinds of dependency.

February 24, 2023 · 8 min

Decreasing Defect Funnel

Only measuring total defects could incentivize misreporting. How could we measure defects in a way that aligns incentives with desired outcomes? I don’t have a sure answer, but here are some thoughts.

February 17, 2023 · 4 min

What fails and what to test

Releasing frequently requires repeatable confidence that changes are safe. Reliably verifying system health requires covering the many failure modes of a system. So, what are those failure modes?

February 10, 2023 · 2 min

Common Software Design Terms

Principles, patterns, and practices are common terms in software design, yet I’ve had a surprisingly hard time finding official definitions. Here I’ll try to define these terms and differentiate them.

February 3, 2023 · 8 min

Progress Journals

Learning is hard. It’s easy to lose track of what we’ve achieved and only see how much we have yet to master. My mentee, however, found a simple and powerful way to build confidence and self-efficacy: progress journals.

January 27, 2023 · 3 min