Misconception #4: Up & Down
When I've programmed as a hobby, I've always been concerned about my mindset. I've always been a very "up and down" coder - ecstatic when things go my way and immediatley hopeless when they don't. It'a truly frustrating feeling, to hit emotional walls every 5 minutes and feel like maybe I should just go be a plumber instead. At least there are no
nilClass errors in that trade.
I always felt held back by that polar routine - up and down, up and down. There's not possible way professional developers felt that way, right? Here's a fun fact: MOST devs I've spoken to absolutely feel that way. Stress about not knowing what's going on is constant and is a huge contributor to burnout among developers. It's this sort of stress that leads companies to provide silly benefits like foosball tables and beer fridges to their software engineers. They don't offer these things as rewards - they offer them as options to clear the frequent mental blocks you'll suffer as a developer.
There's a really interesting phenomenon called the Dunning-Kruger effect. The basic concept is that incompetent people think they're great at something, while competent people think they're terrible (or at least realize how bad they really are). This effect creates a sliding scale for us as developers. When we're learning a new concept, the tiniest of victories, even when it's achieved with poor practices and no testing, feels like the greatest achievement. Seriously. Woohoo! Hello, world()! Then we move on to a new concept and it's back down the emotional hill to Dumpsville, population you. As we master these concepts, we branch out and realize that we've been doing them wrong, leading to fairly large victories being tempered by the fact that there might have been a better way to get there. The effect, left unchecked, leads to frustration and possibly to really talented developers backing out because they're afraid of their own percieved failures.
Of course, awareness helps. Learning about this has legitimately helped me minmize my own self-loathing on a daily basis. It's important to celebrate, at least a little bit, the small victories. That morale boost will carry you through the difficult times. As I program more, both at work and in my spare time, I find my emotional journey is less extreme. I view my educational evolution as a sinusoidal wave of decreasing amplitude and increasing frequency - I learn faster as I freak out less.
The most important thing to remember, at all times, is that you're not alone. Teaching others helps me understand that everyone has struggles, but that they can be overcome through patience and focus. As always - I do love a challenge.