As developers working on software projects, our minds live in the middle of a whirl of code. We’re constantly thinking about abstractions, data models, loose coupling, architecture, and good automated tests. We’re protective over our codebases and work hard at them, trying to apply good coding design principles and minimise bugs as much as possible. In the midst of all of this, sometimes it’s very easy for us to forget that we’re building real features that real users use, and that our codebase isn’t actually for us at all…