feature shortcuts

When you’re building a software product, time always feels like your enemy. Your customers want a very long list of things and you have very limited resources. It can feel like faster delivery is the only possible path to success. The resulting pressure is a strong incentive to get clever.

Co-opting an existing feature for a new use can feel extremely clever, like you’ve sidestepped a ton of work. If you build generic enough features, you can shoehorn emergent behavior into them. This is a double-edged sword. It can be very inspiring to see how folks have adapted to use your software for a divergent use case, and maybe it’s a valuable insight to how you can better support them. It can also inspire you to officially document and sanction their adapted use, which is explicitly agreeing to new product constraints. Not only are you saying you won’t break its ability to do this new thing, you’ll protect it from changes that could negatively impact it. You’ve cinched the handcuffs of this feature just one more notch tighter.

The agreement is easy. Someone wants to give you cash dollars for simply saying, “Yes this is good and encouraged” and so you do. The problem is that you’ve added a pile of future complexity that is hidden until you continue to build. Corner cases become exponentially more painful because they compound inelegantly, creating confusion for both stakeholder and customers. It becomes unclear at the outset of agreeing to add a feature how many corner cases and alternate uses you’ll now be impacting. Did you remember to write down all those agreements? Who’s in charge of remembering that customer doing the undocumented thing in three years? It doesn’t scale, it adds friction, and it adds danger.

Eventually you realize you’re facing very uncomfortable questions nearly every day. Why is every new feature so complicated to ship now? Why is every decision coming down to who we can afford to make unhappy? Which types of bugs will we need to ignore? How did we ever intend this feature to work in the first place?

The cost of an easy “Yes” is a future with very tight handcuffs.