Writing on React, web performance, and the craft of building software.
Why a single Bird class handling every kind of flying turns into an if-else chain, and the one-reason-to-change rule that fixes it.
Adding a new kind of bird without editing a single line of code that already works.
Why a Penguin extending Bird can break code that only ever asked for a Bird.
Why one Flyable interface and one Eater interface beat a single merged FlyableEater, even when every bird today happens to do both.
Why two birds flying the exact same way is a bug, and how depending on an abstraction instead of a concrete class fixes it for good.