Thoughts on software engineering, architecture, and craftsmanship.
Revisiting Brian Foote and Joseph Yoder's infamous anti-pattern and the forces that allow it to grow.
Cohesion's critical role in software design and why related code should always stay together.
A survey of modern software architectures — modular monoliths, hexagonal, vertical slices, EDA, CQRS, and DDD.
Why circular dependencies are harmful and practical strategies to eliminate them from your codebase.
What cyclomatic complexity measures and how to use it as a signal to keep code maintainable.
Event notification vs. event-carried state transfer — patterns, trade-offs, and when to use each.
How inheritance is commonly misused, and better alternatives for sharing behavior across classes.
Why classes and functions should be kept small, and how the 30-second rule keeps complexity in check.
Focusing on what truly matters in software development and resisting the pull of low-value work.
How ORMs leak into business logic, create tight coupling, and what you can do about it.