Lessons Learned the Hard Way
By: Dom Hallan
Tags: Software Engineering

Lessons Learned the Hard Way

Hey, my name is Dom! I am a software engineer that works across multiple stacks and have been doing so for 2 1/2 years. I pushed myself to learn as much as I could take in the pursuit to learn “all the things,” knowing good and damn well that this is not a destination but a journey. What I want to share with you today is the most impactful things that I learned and a few other tidbits along the way.

We will begin this story at 0300 last night. I knew I was not going back to sleep, so I got up, showered, and got ready. When I got down to my machine, I opened Omnifocus and was prepared to attack the day! I started out with some touch typing practice because one of my mentors would pick at me for spending so much time “hunting and pecking” around. I then moved over to a tutorial from newline books called “Tiny House.” Tiny House is a full-stack React masterclass with React, GraphQL, Node, MongoDB, and TypeScript. I worked on it till I had standup.

In my day job, I work on a completely different stack, namely Go and MongoDB. So the first thing we are going to touch on is, I think that it is possible to learn more than one thing at a given time, but proceed with caution because “thar be 🐲!” Should you try and learn 50 different technologies at one time? If you think that you can, who am I to tell you that you can’t. Only you know the tolerance you have for taking in new information, and you should expect that learning many things at once makes the process of leveling up slower than what it probably would be versus doing one thing at a time. Don’t let this discourage you. The best learning in learning that is effortful, which is often slow. I finished up my work for the day and wanted to get back to Tiny House, but I was tired, and my Adderall was wearing off, which is when I know that I am prone to mistakes, but I pushed on.

After 4 hours of plugging away, I started the server and got some odd error about TypeScript, and it was not able to understand the include keyword. Like a grade A rookie, instead of reading the message and actually trying to understand the English presented to me, I copied the message into google and went stack overflow dumpster diving. Look, let me tell you something that hopefully will save you some trouble from now on; You will struggle to solve problems that you do not understand. You are doing yourself a disservice by not reading what the message says and just auto-pilot copy and paste while praying that the stack overflow gods save you. READ THE FREAKING MESSAGE. At least try and understand what is going on, and then when you get understanding or are super stuck, go hunting. Where I found myself after 3 more hours as I had:

deleted the /node_modules in both the server and client reinstalled them in both places, still receiving the same error

in both the server and client reinstalled them in both places, still receiving the same error added a .nvmrc to both projects, because Node was for some reason node was only using version 15.2.0

to both projects, because Node was for some reason node was only using version 15.2.0 realizing that node was double installed from brew, which was stepping on my nvm global settings confusing the node_modules and package-lock.json installed at one version of node that was not version >= 15

and installed at one version of node that was not version >= 15 rolling back to previous commit and npm installing again, realizing that I had not done nvm use to make nvm version use what I wanted to

Getting pissed at brew and uninstalling node with a --force flag because why the hell did brew install shit on my machine anyway?

flag because why the hell did brew install shit on my machine anyway? Going back into both server and client and npm install and now getting different errors…

Do you see how quickly I went down this deep rabbit hole, and although I was sitting at my machine, I was FAR from productive. I was so pissed off that I genuinely started laughing. I went into a full belly laugh where it was uncontrolled and heartfelt because it hit me that I had placed so much pressure on myself to fix this issue. After all, “if this was in production, I can’t just delete this thing and start over!”. The fact of the matter is this is not production, and If “if” was a fifth, we would all be drunk. Learning is hard enough without you internally pressuring yourself. The main reason I laughed at myself because I had all these crazy thoughts of “You suck because you figure this out. You are not smart enough to do this job. Gosh, what a waste of time” All of these things are wrong and not indicative of my ability to learn or do this job. It showed me a lesson learned the hard way and why it’s just not helpful for continued learning and development. Getting mad at your computer when it was only doing what you told you is a waste of time. Take a deep breath, step back, and realize that this work will be here tomorrow, with or without you. Don’t stress yourself out, and understand that learning something worth learning is a struggle, but there is a reward in that struggle.