Refactoring

The Naming Debt

Variable names and function names accrue meaning over time — and when the name no longer fits the thing, the cost is paid by everyone who reads the code next

The Wrong Abstraction

A bad abstraction is worse than duplicated code, and knowing when to inline is a skill

The Courage to Delete Code

Removing code is often harder than writing it, and why deletion is a feature