I stick closely to strong conventions. If you respect platform norms and familiar UX patterns, people can naturally rely on their existing knowledge to navigate your app.

Think of something simple, like shower faucets. You should know how to use them. Yet, if you’ve traveled enough, you've probably encountered at least one hotel faucet you couldn't figure out how to use. Not because you're stupid, but because it’s not only different from every other faucet you’ve used, but also different from anything else you’ve used in your life. The same applies to design - using patterns that your audience recognizes means they already know how to interact with those patterns.

Still, any moderately complex app eventually runs into constraints or overwhelming choices that need simplifying. This is when progressive disclosure is really helpful. For instance, placing a "more" menu near primary actions maintains a clean UI while letting users easily discover extra functionality. Design tools do this all the time: bold, italic, and line-height are prominently displayed, with advanced options like kerning or superscript tucked behind a “more" button nearby.

Larry Wall, creator of Perl, famously said: “Easy things should be easy, hard things should be possible.” I take that to mean that ultimately, we have to accept that some features are inherently complex. For those, leaning on good documentation or tutorials is the last resort, but perfectly ok.