My work day today was mostly uninterrupted, which gave me the uncommon opportunity to really get deep into a technical area that my brain has, so far, been resisting. I had an immediate goal, but I didn’t know exactly how to accomplish it, and so it was time to buckle down and learn the system I was working with.
At a couple of points during the day, I felt urges to stop where I was and make reasonable-looking changes, and call it done. Those were false urges, though. It was part of my subconscious just wanting to escape from the miasma of unknowing, even if it meant risking ultimate success.
Feeling ignorant is so … uncomfortable. Staying where everything is familiar is much more comfortable, and you feel more confident in the near term … but, you can’t learn, improve, except from a place of ignorance. It can be a challenge to trade “cold comfort for change”, as Roger Waters said.
The other difficulty, for me, is impatience. I highly value getting stuff done, and taking the better part of a day only to explore and not do feels like a waste.
I found it’s useful to realize that, when I’m not sure what to do with a problem, I need to gather more information. Once I have enough data, I can make better – maybe even correct! – choices. So, when I’m flummoxed by a problem, it’s a sign that I need to understand more about it, and it’s time to patiently, uncomfortably, learn more.
Time spent learning is also an investment. When you need to dive into the same area again, you’ve got that knowledge and experience to bring to bear. Spend time now, save time later, and not just in general speed to completion, but in saving debugging time.
When you are working on a thorny technical problem, you’ve got to use that brain of yours. It needs input to make decisions, and the more input you have, the higher quality it outputs. If you want to produce the best output, you must spend the time to gather those inputs. It may be uncomfortable or tax your patience, but rest assured, it’s a crucial part of your job.