Being a smidge embarrassed by the term “user-squeaming”, we sat on this draft for years. But when we used it again this morning we decided the concept handle had officially stuck and figured it was time to give it the imprimatur of a blog post.
User-squeaming means being excessively squeamish about what various (usually hypothetical) users might yell at us about. It kept us from deploying Commitwall for years, for example. “What if users are galled at the presumptuousness of being asked for a credit card before they’ve even had a chance to try Beeminder?”, we asked ourselves. Or how we kept an option in settings for god-knows-how-long to opt out of getting rerailed when you derail. “What if someone’s in the hospital and gets charged again and again?” [1] Pathetically pusillanimous!
It’s not that we care not what users think and need, but calling out “user-squeaming” helps remind us to be more risk-taking, more decisive, and more opinionated. [2]
This morning it came up in the context of debating a design decision about showing the data source for a Beeminder graph. What if someone wants to share their Spanish goal, but doesn’t want to reveal that they use Duolingo?! What if someone is mortified for it to be publicly known that they use a Fitbit instead of an Apple Watch? Not publicly known by anyone they know in real life who can see their wrist, mind you, but Known to the Internet.
If any such person exists, they can just make their goal private. That’s a good enough solution, and we don’t need to add complexity and settings to the app to satisfy the potential hypothetical theoretical preferences of a user whom we squeamed into existence.
Some people or some companies may be too cavalier and need the opposite of this advice but for us, asking ourselves “are we just user-squeaming or would this actually be bad?” has been a helpful question time and again.
That’s especially true in our case, given that we’ve committed to the Pareto Dominance Principle. That’s quite a bulwark against making users sad, so it’s valuable to remind ourselves not to overdo it by user-squeaming.
Footnotes
[1] Actually this is a legitimate worry and we do have a solution that doesn’t completely destroy the whole commitment device that is Beeminder. Namely, there’s a deadman switch. If you don’t interact with Beeminder at all for long enough, your graphs will freeze. (We’re intentionally a bit vague about the parameters on that to avoid any temptation to make it happen on purpose, but we think we’ve struck an ok balance.)
[2] Opinionated as in Opinionated Software — your app should not be flexible and agnostic, it should take sides and have a cohesive vision. Of course Beeminder is extremely flexible and agnostic about a lot of things. How to be opinionated is complicated, ok?