Naming things is hard.

It really is, but it is important. It’s not the most important thing though — I think making good abstractions of greater importance. In my experience, good naming serves good abstractions — they kind of are inseparable. Poor naming often leads to poor use or misunderstanding of abstractions whether the code is good or bad. Good abstractions are clear about what they are.

How do we name things well? I have some thoughts on this which I plan to write here soon. Here’s the gist of it: