Coding is a test of will.
That’s what people don’t tell you about this career — that once the daily stand up is finished, you’ve grabbed a tall Cappuccino from Starbucks, and you’re ready to carpe diem this shit — that 99% of your time is spent alone, fingers primed on the keyboard and eyes glued to the screen, trying to figure out what the heck is going on.
I learned to code in like a super intensive MSc, and you get a feel for this during the weekly coding exercises. But it’s only a taste. A taste of what it feels like to confront a problem every day, that you don’t even have the tools to understand how you’d go about solving it.
The truth is, every time you sit down at your laptop — you’re at war.
To code as a career, is to prepare for a life of constant battle. A mental battle of course, but a battle none the less. And what’s worse, is that you don’t even have a real opponent — it’s just you, facing a sea of colourful lines, gleeful in their ignorance of the pain they are causing you.
You are at war. And what’s worse, is your enemy is indifferent to your pain.
Every day is a test of will between you, and a glass screen filled with errors. Over time, as you become more comfortable with your chosen language, you’re no longer battling your ignorance of the language — but your own stupidity. A semicolon out of place here, the wrong variable name there.
Every small victory is bliss, and erases the pain you experienced to get there, and bloody scarred, you hopefully leave the experience a little wiser. But to get to that victory you need to get comfortable with failing.
A typical day of coding for me, is as follows:
- Code does not work.
- Why does it not work? Oh there’s some stupid mistake.
- Fix it.
- Code still not work.
- … Repeat
Because the truth is, you’re going to fail.
Like, a lot.
I have a few very academic smart friends who have tried to learn to code, and couldn’t get into it. I think part of the reason why, is at school, failing is frowned upon. At school, you don’t get a second chance to do homework — it’s binary — you were either right or you were wrong. But in coding, the correct answer lies within the mistakes. To code means to experiment and iterate quickly, finding the wrong answers quickly so that you can get to the real answer faster.
You need thick skin to code, and it’s not a mentality that everyone is cut out for.
Listen, I’ve only been coding a few years — so maybe I’m wrong. Maybe it gets easier — but at least when you’re beginning this journey, you need to get comfortable with pain. And with feeling like an idiot. And build the mental fortitude to not give in, despite all the setbacks. To keep moving forward even when you’re banging your head against the wall.
Basically, you have to be really good at failing. Failing fast, and hard, and constantly. And eventually, you’ll be rewarded with something that you can ship to real users, who will find ways to break it, so that you can fix it again.
I think that’s the secret. That s the secret sauce.