edge cases

Day 20 of 30. I still remember some key advice one of the fine folks at Code for Canada gave me, back during our onboarding sessions:

You know, when you dive deep enough, it's all edge cases - and each and every one of those edge cases is meaningful to someone.

Granted, this advice was delivered in the context of technology in public services, where meaningful covers some serious ground - it could mean a criminal record for marijuana possession gets cleared (or not), or your work visa arrives in a timely manner (or not), or you get benefits in time to pay monthly bills (or not), or your neighbourhood gets a new bike lane or traffic signal (or not).

In the private sector, edge cases don't often have such far-reaching impact on our lives. Still, failing to account for them creates minor frustrations, and minor frustrations add up. And it's easy to underestimate something outside your own experience - like how many people experience disability, or how many dislike open offices - so that what feels like an edge case to you is in fact fairly common.

Of course you have to draw boundaries around scope somewhere - not even the most well-resourced, well-intentioned of teams can service 100% of use cases. At least, not without creating incoherent products that have something for everyone and nothing that matters. Still, it's worth a moment's reflection next time you're tempted to write that feature request off as an edge case. Is it really? How do you know? Have you done the work to validate your prioritisation choices?

Related to this: implementations that place arbitrary limits where there's no good business, product, or technical reason to do so. Your name can't include a hyphen. Your password must have one of these special characters. The workflow can only move forward. There can only be one comment thread at a time.

Why? What does it add? Is it worth the overhead of implementing and maintaining the limit - designing the UI, building in end-to-end validation (in both frontend and backend, right?), dealing with support tickets?