What made it easier for me was jettisoning the notion that names must be short.<p>1. Names must be descriptive.<p>2. Names must be unambiguous.<p>3. Names should be no longer than they need to be to achieve #1 and #2<p>I just ask myself: what is this thing, or what is it doing?<p>Then take the answer to that question, and boil it down to a name.<p>Then look at each word in that name and try to think of different interpretations of that word. If I find some ambiguity, then change something until the ambiguity is replaced with clarity. &quot;Change something&quot; could be changing that one word, or a word next to it, or it could be changing the whole thing. Yes sometimes this is hard, but often it&#x27;s easy.<p>Also for #1, the context can help a little, so in a tight scope where there&#x27;s plenty of context indicating what a variable might be for, the name can be less descriptive. By contrast, for publicly exposed names, they could be used far away from their original context, so fulfilling #1 relies entirely on the name itself, with no reliance on the context.