One week ago I was absolutely struggling with a project. I was attempting to code my first website - a static webpage for Thinkful’s web development course. It had been a few weeks into the course when I realized an ongoing trend. I would struggle then feel invincible. Struggle. Invincibile. Repeat. I had no idea whether this was “normal” in the programming world so I posed the question in our student & mentor community to assess my sanity.
When my comments were shared as a blog post, the response was overwhelming [thank you Code.org!]. I wasn’t alone! I was asked to elaborate on the piece for the rest of the world, so here goes nothing :)
1. Start a project with enthusiasm
The beginning. Maybe this is you too? For me it’s the part where I have all these grand visions, people are going to be BLOWN AWAY by this project! They’ll all react with incredulous comments, “I can’t believe she’s only just started!” or “she’s truly amazing!” or “what a gift she has!”. I enjoy a moment or two (or ten) basking in this imagined glory.
Then. I start.
2. Falter as I struggle
It usually begins well, bolstered by said grand visions. I get a basic outline down and start diving into the project. Then comes the inevitable bump: something doesn’t do what I want it to do. I review my notes, no help there. I turn to Google, can’t quite wrap my head around the answers I find on there. I try some of the solutions there anyway - why not? Usually the result is even worse than before. What am I doing wrong? I keep trying and trying.
3. Suffer from self-doubt
It’s hard. So, so hard. My already bad posture becomes a scrunched up mass huddled over the keyboard. The occasional curse will fly out of my mouth. If someone approaches me at this time, well…God help them! Stage 3 (in case you haven’t already guessed) is when things get really ugly. It’s when all that harmful self-talk begins, “I have no idea what I’m doing”, “this was a stupid idea in the first place,” and “why am I even bothering?”. This is the point where I really need to walk away. Entrenched in frustration and stubbornness, it takes me awhile to figure this out.
3.5 Walk away!
I didn’t include this in my initial post in the community, but it’s important enough to deserves its own .5 stage. To “walk away” could be to get a cuppa tea, do a different task, anything really as long as you Walk Away. Sometimes, I won’t even look at the project until I’ve gotten a good night’s sleep. Walking away gives me enough distance to calm myself from my frustration, it gives some distance. More importantly, it gives me the fresh eyes that are essential for debugging and approaching the project in a different light.
4. Go back, research, ASK QUESTIONS
Sometimes I’ll get an epiphany around a specific concept just as I’m dozing off. Other times, taking a break will help me catch those missing brackets, quotation marks, semicolons - they are so darn *sneaky*! But most of the time, walking away just isn’t enough. I’ll have to research more and ask someone a question.
I’m lucky enough to have a personal mentor & student community here to help me past this stage. But for someone not enrolled in an online program or a coding bootcamp, you’re still never alone! Even if you don’t have any techie friends, you can attend meetups, browse Stack Overflow, and engage in IRC channels. Codenewbie and r/learnprogramming, in particular, have wonderful communities. They’re all more than willing to share their knowledge - don’t be afraid to ask for help. I find it hard to ask questions, but I’m getting better at it. Sometimes I’ll get just enough insight from asking the question, that a resolution will hit me like a bolt.
5. Start conquering
The breakthrough, the thing I need *it* to do, actually works. I’m left with the result I want, the project is coming together…
6. Feel invincible….until next time
This is what makes it all worthwhile. It’s usually when I’ll throw a fist bump in the air, yell “Booyah!” [seriously], and feel like I’m Master of the Internet. Once that feeling subsides, I move on to the next part. If I’m really lucky, I’ll have finished the project. I’m back to Stage 1!
If we were to illustrate my emotions over time, we’d end up with the graph I added above.
So. Do you have to enjoy this emotional journey ride to appreciate coding? Maybe. You won’t experience it the same way I have, but maybe this is exactly what you want when you’re learning. For me, the final stage completely outweighs any frustration. That invincible feeling is the reason why I keep going. Let’s face it, if it weren’t for these initial struggles, it’s unlikely that the euphoria at the end would feel so intense that I’d end up feeling like an Internet God. I love coding.