UI is hard. You can’t just slap a button on the screen for every feature that could conceivably be used at any given time. Some features are only of interest to so-called “power users”, so they’re left subtle, spread by word-of-mouth. Some features you try to make invisible and heuristic. Some features are added just to solve one influential user’s problem. Some features are, ah, accidental.
A sufficiently mature, popular, and interesting product thus tends to accumulate a small pile of hidden features, sometimes not documented or even officially acknowledged. I’d say this is actually a good thing! Using something for a while should absolutely reward you with a new trick every so often — that below-the-surface knowledge makes you feel involved with the thing you’re using and makes it feel deeper overall.
The hard part is striking a balance. On one end of the spectrum you have tools like Notepad, where the only easter egg is that pressing F5 inserts the current time. On the other end you have tools like vim, which consist exclusively of easter eggs.
I’ve snuck hard-to-find easter eggs into things before, and I’ll absolutely do it again. But those are meant to be there for fun alone. For features, I’d say you want it to be an inverse relationship between necessity and how easy it is to find. Core features should be blindingly obvious. Advanced tools for power users? Those can be things that’re a bit of a challenge to figure out.1
- But for the love of god make sure you document them, otherwise you’re just being unhelpful. ↩