Survive Learning to Code: Tales and Tips from a Psych Student turned Developer
Table of Contents
1. It All Started with 3 Little Words
2. A Brief History of (my) Time
5. The Death of Enthusiasm, The Birth of Belief
1. It All Started with 3 Little Words
It all started on a fine (re: semi-polluted) day in the ancient city of Hangzhou, China.
My friend at the time (jokes, Steve, you're still my friend, homie) said 3 words:
"The Odin Project".
They happen to be the most important three words Steve said to me that whole year and we spoke A LOT. For me, they changed everything.
Herein lies the short albeit frequently told story of how I started my journey into coding, web development, and related hair-pulling frustration. I write this for the friends and family that have wondered about my sunken eyeballs, code newbies all fresh-faced and wide-eyed at the start of their own journeys, and seasoned code veterans curious about another origin story.
Whoever you are, I do hope you enjoy it.
Momentary Aside: This will not serve as a repository of all the resources to aid you in your coding journey. However I may mention a resource or two that stood out and made a more significant impact in my coding journey.
2. A Brief History of (my) Time
I grew up believing one thing...
I could have any career I pleased.
As very few little white boys knew in the '90s, this was an extremely privileged position to be in. Sad to say that many still are blissfully unaware to the detriment of their fellow humans.
Anyway, my interests ranged from wanting to be a professional bug-enthusiast (entomologist) as a kid to wanting to be the saviour of crazy people's minds around my teenaged years. Ultimately I ended up pursuing a degree in Genetics, Human Physiology, and Psychology.
Why all three?
Well, I was set on psychology.
My father had other plans.
He figured being a qualified scientist was probably not a bad move to make. Fast-forward six months into my post-grad and I was sitting across from my Head of Department having a psychological breakdown. A few minutes later, I had my first appointment at the shrink booked and I was all set to become the person I envisioned helping as a teenager.
And yes, one could probably wax lyrical about the clichés of life and how psychologists are the ones most in need of therapy.
Occupational hazard most probably.
I just happened to skip the occupation part and jump straight into the hazard.
Things are pretty hazy from that time, not because I was doped up (I wasn't) but because intense emotional experiences have a way of clouding some memories while crystallizing others. What I do remember without a hint of fog, was the intense desire to leave science, the office, the relentless 9-5, and South Africa. There were a number of reasons for this which I won't get into here for the sake of brevity but all you need to know is...
I wanted out.
3. Perfect Vision
A crystal clear vision from late 2016, around the time my mind went a little pear-shaped, was one probably shaped by that movie about the uh dude who went to Vietnam during the war to be a radio presenter.
The name eludes me...
"Good Morning Vietnam!"
That's it.
"Gooooooooooood morniiing Vietnaam!"
Anyway, so this vision hits me in 2016.
In it, I wake up somewhere in jungley Asia (probably South East), grab my skateboard (as if that's a totally normal thing for me - I don't skate) and stop at my Tai Chi master's training studio for a quick session (I did Tai Chi once, for like 5 minutes in my pajamas. It was in China so maybe it counts?).
I then go to the local school surrounded by dense jungle, littered streets, and hooting scooters, where I teach English to a group of smiling little kids.
I then see myself finish the day by grabbing my surfboard (I've never surfed), meandering down to the sunset-kissed ocean and churning some epic break (excuse my butchery of the phrase).
It's safe to say that the vision was delusional but it felt like a safe delusion. It was a sort of mental picture of my ideal day, unencumbered by all the nonsense that we face on the daily 'grind'.
Was it idealistic?
Definitely.
Was it unrealistic?
Probably.
Was it enough to stop me from trying?
No way.
So, a few months later, one of my best mates and I jetted off to China in search of adventure.
He was a qualified mechanical engineer and I was a bioinformatician (yes, my typing speed did slow significantly while spelling that out) but we were going to be English teachers living the life of chopstick mastery, Great Wall trekking and, crucially, office-free work.
4. The Start of My Coding Future
Life in China was pretty great.
We were working around 9 hours a week at our schools, had a bunch of cool friends, travelled all over the world every few months thanks to our generous salaries, and generally felt like things were going pretty well for us.
Don't get me wrong, things in China were a struggle at first (and the moral struggles of working in a country with an atrocious human rights record still bother me) but that's a story for a whole other day.
In general, I couldn't have been more comfortable except for one little thing. I was not really intellectually stimulated by my work.
Sure, Steve and I are both curious individuals but there are only so many 'intellectually-stimulating' conversations and videos on the nature of reality one can watch before you start craving a little more. Almost as if it was an addiction to knowledge, or the subtle upskilling trend we started noticing in the world, we sought something more.
And it was with this backdrop that on one sunny, semi-polluted day, Steve mentioned three words to me with a slight tingle in his eye: "The Odin Project."
The Odin Project, as it turned out, is an open-source curriculum for learning web development. It is a free, full-stack program taking one through Computer Science fundamentals, HTML, CSS, JavaScript, SQL, Ruby, Rails, a frontend framework (React for me), and the whole plethora of skills and technologies you need to learn to confidently apply and get web developer jobs.
It was started by Erik Trautman in 2013.
Today, it has over 300 000 students and it's all still free. Go open-source!
What really set this program apart for me was the focus on being practical about the skills they were teaching - there was a continuous push to build and struggle on your own.
Sure, they have a thriving Discord community for when you're really stuck but there's a special enticement to a programming course that gives you all of the best sources of information out there and then challenges you to build something on your own.
For example, after completing the roughly 200 hours-long module on Ruby-on-Rails, one is challenged to build Facebook.
On your own.
This sounded too good to be true, a free course that gives you all the tools and know-how to build pretty much whatever you wanted. And with the creative-appeal that is coding, here was a potential source of immense intellectual-stimulation, creative-freedom, and the missing key to the lock of my own sense of purpose.
With the allure of being a 'remote, island-based coder' all too strong, I set out to start coding and becoming a full-stack developer somewhere around June of 2018.
5. The Death of Enthusiasm, The Birth of Belief
Well, as most exciting ventures go, the enthusiasm kind of peters out after a while.
My relationship with The Odin Project was no different.
What was different, however, was that I kept reminding myself that this was a way for me to be challenged, to be creative, to build value and contribute to the world. This vision of value made me keep coming back. Even in the weeks and sometimes months of demotivation.
And that's the beauty of The Odin Project. If you're a self-motivated learner you can just keep coming back and picking up where you left off. It was only around the start of 2019 that I really buckled down to ramp up my efforts.
I'm happy to say that I completed The Odin Project around January of 2020 with over 50 git repositories of projects I had built without following a single YouTube video titled "Build a (name of project) with (name of technology) TODAY!" .
This has given me immense confidence in my ability to learn, adapt, and really overcome any programming obstacle that may come my way, even if it appears daunting at first.
In fact, the daunting appearance has a special appeal to me now because it's something that can be solved.
There is great satisfaction in that.
6. The Desert of Despair
Obviously it's been a difficult journey but what worthwhile cause wasn't?
If you're reading this and you're looking to start your own journey (or maybe you're some ways down the road), the next few paragraphs may do you some good.
Erik Trautman, the guy that started The Odin Project, along with some others at Thinkful wrote a fantastic article on the real learning curve of coding where competence and confidence are plotted as X and Y coordinates on a graph. I highly recommend going through it when you have a lot of time - it's a looong article. The journey can be summarized as follows:
1. Handholding Honeymoon
Everything is fresh and exciting in this phase.
You're probably busy doing a gamified online course through somewhere like Codecademy where you're covering basic syntax in a highly polished learning environment. You're feeling like this coding thing is probably not so hard! Hey, you even start imagining a future as a programmer.
Your confidence is skyrocketing like a rabbit with rocket-boosters but your competence is very much playing the part of the tortoise in this story.
Tips:
- Try different resources to find the style that suits you. Maybe it's the in-browser exercises of Codecademy or the quick challenges of Khan Academy. Be open minded and ignore anything about what you should learn. All code is fundamentally the same at this early point.
- Pick one resource and stick with it when you've found one that suits you.
2. Cliff of Confusion
You're ready to start building things on your own and start by open your favourite text editor (probably VSCode). And then you start typing, only... well, you're not sure what to type. Suddenly a overwhelming feeling of "I can't do anything!" hits and you spend the next eternity googling every single thing you type.
Your confidence plummets while your competence screeches to a halt.
Tips:
- Work with someone else. Another pair of eyes can shave hours off of debugging time.
- Read other people's code, preferably those with experience, to get comfortable with good practices. Don't be intimidated! Just be open to soaking up all that good stuff.
- Start small and build consistently. There is no substitute for experience.
3. Desert of Despair
My personal favourite.
The desert of despair is that vast emptiness where you don't know what you don't know. It's difficult to measure your progress. After a few projects of scraping together StackOverflow code and piecing it together with the patchy duct-tape of your hole-riddled understanding, you start managing to get through more and more work without having absolutely no idea what you're doing. Eventually, you start seeing an end in sight.
Your confidence starts catching up with your ever-increasing competence.
Tips:
- Have a strong goal. Are you going to master React? Build out complex databases? Become a CSS renaissance art master like Lou or Diana?
- Find a strong path. Mine was guided by The Odin Project - I knew exactly where I was going in my path to become a full-stack developer.
- Focus and avoid distractions. It can be hard to do this, check out my article on Digital Minimalism to get into the right mindset for this.
4. Upswing of Awesome
At this point, your confidence starts picking up again as you realize you've managed to build a bunch of things on your own. You're able to digest industry blogs and follow along in technical screencasts. You also start comprehending and appreciating the gap between your code and that of professional standards. Your Google-fu is on point.
Tips:
- Seek and follow best practices for programming. The goal here is to understand the differences between a solution and the best solution.
- Check your assumptions. There are probably gaping holes in your knowledge that you didn't even know were there. Find and fill them.
- Tackle the less glamorous skills that are often glossed over in coding courses but which are important for transitioning into a professional setting. This includes things like testing, data modeling, and deployment.
7. Imposter Syndrome
I recently spoke about imposter syndrome (and other mental wellbeing topics) on a developer podcast.
A theme that came up was that imposter syndrome is something we all face as developers at some point(s) in our career.
How you deal with it is very much a point of difference between people but there can be several ways to reduce it's affects or at least lessen it's reoccurrence.
For developers, it's important to remind ourselves of two points that Chris Ferdinandi makes in one of his Vanilla JS podcast episodes:
- Googling efficiently is a core job skill
- You can't know everything but you can know how to solve problems.
OK stop. Write this down. Put it up somewhere visible. Repeat it to yourself when you're feeling the metaphorical Imposter Syndrome monkey muttering in your ear.
It's really important to focus on the process instead of the product and this can greatly reduce your initial stress when, say, you're thinking of a new project's seemingly impossible scope.
Read this thing I wrote where I explain process vs product a little more. Dealing with imposter syndrome can be a difficult nut to crack but the way we use social media has an enormous role to play. You can and probably should curate your social media content to combat imposter syndrome and social media induced-anxiety.
I found that trimming my social media 'fat' helped me remain focused and envy-free. While imposter syndrome is something we all face, it certainly doesn't need to dominate your psyche when it inevitably crops up.
My point of digression ends with a quote from Nick Cannon-Brookes' TED Talk that you can come back to you when Imposter Syndrome creeps up:
"People think that successful people don't feel like frauds but the opposite is more likely to be true. The most successful I know don't question themselves but they do regularly question their ideas and their knowledge. They're not afraid to ask advice. They don't see that as a bad thing."
"Don't freeze, harness the situation and try to use it as a force for good"
8. Where I am Now
I completed The Odin Project but this has not ended my programming learning, obviously.
Most developers would agree, this is a life-long journey of growth (and sometimes hastily staying up to date). That's part of the appeal of this profession.
There doesn't seem to be a ceiling on what you can know and build - there truly is a sense of creative freedom in this understanding.
And this is precisely what has kept me interested in this field and allowed me to imagine that my programming skillset could be the basis for every worthwhile venture I get involved with in the future.
Since starting with programming, I have had several interests crop up, demand my attention, and positively shape the way I live my life. Whether I got into coding because I'm curious or getting into coding made me more curious might be a personally contentious issue.
Regardless, since I started coding, I've become really interested in design, started mindfulness meditation, ramped up my pursuit of meaningful online interaction, started listening to podcasts of various topics (Sam Harris' 'Making Sense' being my favourite), started pursuing the curation and maintenance of meaningful habits, and even started writing again.
It's safe to say that coding has ramped up my intellectual curiosity to the point where it feels self-sustaining.
Currently, I am on the lookout for a full-time remote role as a frontend developer while becoming an effective freelancer via Kyle Prinsloo's awesome course. I'm really getting into Gatsby (a super cool React-based framework), Tailwind CSS, and reminding myself of the difference between 'splice' and 'slice' for the 100th time.
I wrote this with the intention of exploring my thoughts, expanding my reasons, and clarifying my direction to my friends, family, and... well... myself. As most of my writing goes, it morphed it something a little longer than that and became a point of reference from which other developers may find some value.
If you're new to programming, I know that there are some points in here that you could probably do well to write down and use again when undesirable feelings inevitably crop up.
If you're an experienced developer, maybe my very one-sided opinions on matters made you chuckle at my utter misguidedness (in which case, I'd love it if you got in touch so that I can learn from you).
If you're one of my friends, I hope you understand why I chose to do what I am doing a little better and maybe this could even serve as encouragement if you're thinking of starting your own coding journey.
In any case, I hope you enjoyed the read.
That's me.
Peace.
Want to See More Stuff Like This?
I publish roughly every full moon. You'll be the first to know when there's something new.
Your email address