One of the seldom-spoken secrets about learning to code is how humiliating it can be.
If you venture forth on becoming a programmer after reaching any kind of reasonable adulthood — i.e., gotten through college, survived the military, worked a “real” job or two — you’re used to feeling reasonably successful. Which is one of the perks of being a so-called grownup. Starting new at the very bottom of a new major life area with zero knowledge or experience is something we all did at some point — when you think about it, that is pretty much what childhood is all about. But your typical kid has lots of energy, no mortgage/rent or car payments to worry about, and — most importantly — is developmentally wired to learn a whole bunch of stuff all at once with their nice fresh, flexible brain.
Then there’s us adult learners, many struggling to transition from some previous profession to the magical land of tech. Juggling another job, debts, maybe even a family while trying to get a grip on the mammoth amount of new information and skills that must be achieved to reach even the most junior level of the profession.
It’s a big load for our own slightly-less-fresh brains. We work hard because it is hard, but no matter how smart we are or how hard we work we will all inevitably hit some kind of obstacle and get ourselves good and stuck. That is when the bad thoughts start up: “Maybe I am just not cut out for this. Maybe I’m too (insert favorite negative emotion here: stupid, unfocused, undisciplined) to ever learn everything I need to know in order to actually get a job.”
I don’t know about you, but for me, this happens at least once every other day.
I have had enough conversations about exactly this feeling with enough nascent devs to understand it’s something we all go through. Even the ones who appear completely large and in charge of the coding learning curve. We all struggle with feeling overwhelmed at times by the sheer amount of learning that lies before us, which spawns the desolate feeling that we will never (ever!) land that first coding job. The question is not who among us has struggled with self-doubt and fear of failing in our new chosen field, because we all have. The question is what to do when that bad-brain sh*t comes raining down on your personal parade and it feels quitting is the most rational thing you could possibly do.
The following pro tips are highly idiosyncratic — things that have helped me stay the course. To keep going when I was pretty sure the decision to go to boot camp and launch a new career in web development was the worst one I’ve ever made in my life (and that is saying something, considering some of the ridiculously bad errors in judgment I’ve managed over the years).
But in case you’re having one of those moments right now, or run into one with your next batch of code, maybe you can try ‘em out. And then hit the comments section with solutions that help you when things get bleak and getting that job as WalMart greeter starts to look pretty damn appealing.
We all need to change the channel sometimes. The important thing is to realize, just because you can’t do this now doesn’t mean you’ll never be able to. Now is now. It might be bad, but later will be better. Allow yourself to take a break, but also make a mental commitment that you will come back to it within 24 hours. (Having a deadline is important, lest you wander away from Doing The Hard Thing forever).
And while you’re taking that break, take a moment to envision all the other people who started coding around the same time you did. How many of them have already quit? This is grueling work that many of us are doing on our own, and the temptation to make the bad feelings go far away by simply giving up is so very powerful. After all, who would know?
You would. And it would feel horrible. So: Just. Don’t. Quit.
Every day you code, even the bad days, is one day closer to whatever goal it is you’re chasing with all this invested effort. You want this. You can do it. Sometimes it helps to literally say this out loud: “I want this. I can do it.” The cat might stare at you for talking to yourself like that, but hell — cats stare at everything, including blank walls. Shake it off, sit back down at your desk, and get back to work.
Teach other people. I can just about hear you snort out loud at that one — how can you teach anyone anything when you feel like you yourself know exactly nothing? But explaining things to someone who knows even less about coding than you do is a highly effective way to (1) solidify your own comprehension and (2) force you to realize you do actually know a thing or two. Believe it or not, if you’ve been at this even a little while, there are definitely people with less coding knowledge than you. So get busy helping.
I spent the past weekend co-teaching a “Build a Website in a Weekend” workshop for people who have never seen, much less written, a line of code in their lives. At some point over the weekend it struck me that, exactly a year ago, I didn’t know any of this stuff either. And now here I am explaining how cascading style sheets work and pointing out the missing bracket —obvious to me, if not to them — that is crashing their website.
Comparisons are odious. So at least be accurate about who your compare yourself to. It is really easy to feel discouraged when you compare where you are with where you want to be. Humans are wired to see what’s missing over what is there. Looking at the people who are already professional developers, we focus on what looks like the vast, uncrossable chasm between us. We have spent months working so hard at learning to code — how can they still be so ridiculously far ahead? Will we — can we — ever catch up?
This really struck me during last weekend’s workshop, as I was trying to tutor a woman through her first basic HTML markup. Chrissie was clearly very smart, but so frustrated by her many beginner mistakes that she was nearly in tears and talking about walking out. I advised her to pretend for a moment that she was learning a new language, say French. After spending a couple hours learning a bit of basic vocabulary and grammar, would she be ready to hold an entire conversation? Of course not, she answered. This is the same thing, I replied. You’re doing the equivalent of learning the alphabet here. Don’t expect you’ll be able to write “Moby Dick” on your very first day. She laughed and then got back to work.
The key is to remember, when these fun times roll up, to pull my mental gaze back where it belongs: with other people who are at this stage in the learning process. We are all rowing the same leaky little boats, bailing away for all we are worth in the effort to stay afloat. All aspiring to learn, and to get reasonably good at doing cool stuff with our new knowledge so we can score that sweet, sweet dev job. We are all Groot.
Which takes us back to the core lesson of today’s diatribe: The thing that will make or break your success in becoming a professional developer is not native coding ability or IQ or a university degree in computer science — it’s stubbornness. Call it grit, call it resilience, call it whatever you want, but just don’t quit. You want this. You can do it.
/rant. Now go code.
Check here for more Code n00b columns.
Feature image via Pixabay.