There’s a phase in the life of every coder I call “The Valley of Despair.”
It looks something like this:
It’s 3am and my eyes hurt. I fought my way through a stack of documentation and books—but when I think about writing a simple program my chest tenses up.
After four hours of reading the code and the documentation for the “urllib” module, fetching a URL, parsing the response, and printing some headers to the terminal still feels about as natural as climbing Everest without oxygen.
There’s all this knowledge crammed into my head and for once it’s time to spread my wings and program something useful, some small thing that solves a problem in the real-world… And yet, every time I step close to the edge I recoil:
“I’m not made out to grasp this stuff.”
“I’m bad at math and I’ll never be a real programmer.”
“Everybody thinks I’m a fool for trying to learn this in my spare time and having nothing to show for.”
It’s a catch 22:
If you can’t write your own programs successfully, you can’t build your confidence. And if you don’t have the confidence, you can’t write your own programs.
I think almost everyone has been through some version of this.
I’ve certainly experienced it. And it got so bad that almost psyched myself out of applying to university for a Computer Science degree because I felt I was inadequate—
That I couldn’t do it.
So, one night I decided to work through the weekend and to give myself a challenge to determine my fate:
If I could sit down with an article about the Minimax algorithm and write a Java game “AI” that plays Tic Tac Toe, then I’d know I have what it takes and I’d apply to university.
And if I couldn’t write this program, I’d forget about my dream and would pick a different career…
Now, how did this experiment go?
Well, let’s leave it at this: Monday morning I emerged with with bloodshot eyes and less confident about my programming skills than ever before. But I decided I had written something workable and that I might as well apply to university and try my luck—and the rest is history.
Just to be clear, I don’t necessarily recommend this as a “silver bullet” technique you should use in your own life.
But what it did for me (besides giving me terribly stressful weekend) was that it taught me a valuable lesson about pain tolerance and persistence:
If you want to learn a difficult skill like programming, it *will be* a series of “stuff’s too hard, smack head against wall” moments—interspersed with the occasional intellectual rapture.
There’s ALWAYS a new challenge in this industry and the feelings of frustration and having to stretch yourself will never fully go away. The only way I found to deal with this pressure is to embrace it as a fact of life.
So, if you’re going through “The Valley” right now, realize this:
Literally hundreds of thousands of coders and want-to-be coders are going through the same experience right now. Millions of others have experienced it before you, and many more will live through it in the future.
You’re not walking alone.
It takes courage to push through the frustrations and to make it to the other side.
And you’ll likely arrive there with second-degree burns and a lot of sand in your underwear—but if you dream of becoming a programmer, it’s the only way.
Keep going forward, and don’t let up.
I know you can make it.
P.S. A while ago I was invited as a guest on a Portuguese software development podcast and had a chance to discuss this topic some more. Click here to listen to the show (episode is in English).