When I think back to my time teaching myself programming, one of my most vivid memories is me in my small, hot college room helplessly stuck on a programming problem.
I was trying to teach myself programming so I could build a mobile app that I was sure was going to be the next big thing.
There was only one problem. I had no idea what I was doing. Nothing worked and every line of code was a struggle.
My life was a cocktail of doubt, frustration and an overwhelming feeling of being lost. The whole world was going on around me and I was stuck in my room trying to figure out why a trivial line of code wouldn’t work.
I was constantly questioning if learning programming was worth my time.
(Granted, I made it much harder on myself, more on that another time).
Over time, I’ve come to learn that my experience wasn’t unique. Most self-taught developers I talk to share similar stories of having to overcome a range of negative thoughts and emotions.
As I’ve expanded my skill set, I’ve come to accept these negative thoughts and emotions. I’ve discovered they are simply apart of the process of teaching yourself programming.
To help me handle the inevitable onslaught of negativity, I’ve developed a few techniques that I think you might find useful.
Make it smaller
Teaching yourself programming is a large undertaking and can feel overwhelming when you look at it as one big thing to accomplish.
To avoid feeling overwhelmed, I break my large goals into many small pieces and I only focus on the things I need to accomplish today.
At the start of each day, I make a list of all the specific things I want to accomplish on that day. Each task is small and has a clear completion requirement.
When a goal is too large and/or abstract, it starts to feel out of my control. Breaking my large goal into day-sized objectives helps me clearly see the path forward and makes me feel more in control.
Ultimately, I can’t control what’s going to happen a week from now but I can control what happens today. If you can’t cross something off of a checklist then it’s not worth stressing about.
Making my goals smaller also allows me to celebrate the small stuff. It feels good to cross something off a list. If my todo list is complete, I don’t stress about the other things I could be doing.
Remember your why
Why are you learning to program?
Do you want to build a cool app? Start a new career? Follow your passion? Make more money?
There's a specific reason why you started down this path.
It's easy to forget why you're learning programming in the first place when you're in the day-to-day trenches of tutorials and various projects.
It’s important to not let the reason you started on this journey slip away. It will give you a boost when you’re feeling down and/or unmotivated. You'll also be able to handle more adversity that comes your way.
Nietzsche says it best…
"He who has a why to live can bear almost any how."
I like to write my why on a Post-it note and stick it on my computer.
You can also make it the background of your phone or put it as a daily reminder on your computer (among other things).
It doesn’t matter too much where you put it, just make sure you don’t forget.
Lean into the discomfort
Learning new things and creating new habits will always be uncomfortable.
Discomfort is simply apart of the process of pushing yourself beyond your current abilities.
The world's strongest man still gets sore after lifting weights. The world’s smartest mathematician still gets frustrated when he can’t solve a problem.
When you’re developing new skills, discomfort is unavoidable. The best thing you can do is accept the discomfort and lean into it.
Every successful self-taught developer eventually figures out that the feelings of fear, doubt, insecurity, being lost, etc. are just apart of the process. They keep going in spite of these negative emotions.
I like to look at my negative emotions as an old grumpy friend that’s along for the ride.
Any time it appears, I say hello, pat him on the head and keep going.
Comment below
If you have any techniques that you use that I didn’t mention, I'd love to hear them in the comments below.
Sign up to the Zero to Programmer Newsletter for other content related to the non-technical side of teaching yourself programming and starting a career as a software developer.
Top comments (0)