One of my favorite things about software development is when I’ve constructed that perfect mental model to solve my problem and get in a groove.
Conversely one of my least favorite moments is when the edge cases and refactors grind that mental model into mush.