I've come to realize in the years I've been doing software development that there's a strong internal alarm that goes off quite often when I'm working on a tough problem or I'm about to start something new. What I've come to realize in stepping back is that this internal alarm is often triggered by discomfort. I don't feel prepared for it. I might even be afraid of it. In fact, I think I am afraid of it.
Example: I've read a fair bit about the UNIX motto. Build small things. Allow said small things to mingle in well-established patterns. I love this idea. I also know there are a ton of tools out there that the "good" developers use and are effective with. Tools like sed
, awk
, grep
. Though I always told myself I'd someday practice them, I never really got around to it. Situations commonly come up that I know there's a good UNIX tool for, but I instead stick to what I am comfortable with. A concrete example of this is finding a file. Rather than using a cli tool, I'd instead open up (yes, I said open up) a JetBrains product and perform a file search for the file I wanted to make a quick edit on. Clearly this is slower. Why didn't I just learn some basic unix tools to do this when I knew they existed? Well, again I think it came to the fact that I was afraid of or anxious about learning it.
This year has been the year of forcing myself to learn these things that make me nervous. Whether UNIX sys utilities or the Vim and Tmux combo as my primary development editor, I have forced myself out of my comfort zone in order to open up my toolset. To realize what's really out there, and then to take a step back and decide for myself whether the tool I was previously using is better, or if I was just using it because it was comfortable. It's been a good experience. There's not always time to learn new tools, but more than that my previous tendency was not due to time but rather being nervous or afraid to get out of my comfort zone.
Though I won't get into it now, this concept is much broader than learning NEW things. This comes up every single day. An example is working through problems in code. You know there should be a good way to reduce
or fold
over some data with good "functional" techniques, but you go back to modifying an array because it's comfortable and not quite as challenging. While there's certainly something to say for just getting stuff done, that's not a way to grow as fast as you could be.
I fully admit that I don't always hold to this, but every time I feel that anxiety creeping up on me, I now at least know to take a step back and make a conscious decision on whether I am willing to take a tradeoff of time rather than just being afraid of learning whatever new tool .