Quote-Unquote Research

Programming involves a lot of research, though we don't always recognize it as such and that can cause problems.

Research, from Merriam-Webster, who has a great twitter account, is

  1. careful or diligent search
  2. studious inquiry or examination; especially : investigation or experimentation aimed at the discovery and interpretation of facts, revision of accepted theories or laws in the light of new facts, or practical application of such new or revised theories or laws
  3. the collecting of information about a particular subject

#2 there is the more rigorous sense used by our brothers in arms in academia. #1 and #3 are the ones that apply more strongly to day to day programming I think. We do that kind of research in a number of different contexts, the obvious ones include:

  1. 3rd party tool selection
  2. How do I do {this thing I need to do} in {this language, this framework, this tool}?
  3. What am I not doing that I should be doing (especially relevant around security)?

Doing "research" is different in a few ways. You don't know how long it might take. You don't know exactly what you're looking for, so you have to keep a very open mind and gather information whether it is relevant or not, because you don't know if it is relevant or not yet.

Sometimes we don't know we're doing research. Or we try to avoid doing research when we shouldn't. And this can cause us to make bad decisions.

We can trick ourselves into thinking we're being productive by not taking time to learn about the space we're working in, but experience has taught me I can't work in a space that I don't understand. And a cursory understanding can be just as harmful, maybe even more harmful as I can be overconfident. I end up making decisions that later turn out to be so obviously wrong when I learn something new. This can lead to some forehead slapping moments. So if I find myself thinking, "I won't bother finding out if xyz exists", I try to recognize that as a topic that deserves research, and then view any decisions I'm making without that knowledge as potentially wrong.

That might sound like it would be paralyzing, but I actually find it helps me keep moving. You can still make a decision, even if you suspect it might only be a temporary decision. And knowing it might be a temporary decision means if you find yourself making lots of other decisions dependent on the first, then you know you better make the time for the research.