———- When I try to come up with an algorithm or data structure, I’m usually focused on some property of complexity, something I am optimizing, even if out of habit. If there’s no immediate reason to optimize for anything, I used to optimize for speed, and this was what most people usually did. When doing this, I roughly assumed there were no bounds: that anything could be optimized as much as needed, if sufficient design effort was invested. Modern research has, in my opinion, validated this, finding impressively powerful heuristics when culture is valuing the concept strongly enough. Math can seem to disagree sometimes. This doesn’t worry me. There are a handful of properties and component combination groups useful for normal optimization goals. Some of these I used to be very familiar with; others I have never learned. I left CS as a freshman or sophomore undergrad to study wilderness survival. When navigating the different options available, as when navigating anything else, one holds a sense of how useful, how much return, there would be to spend time investigating each possibility. We don’t want to unreasonably explore possibilities exhaustively, but we do want to have enough ease and skill to find things that are increasingly useful. So sometimes we decide some options are more interesting than other options.