The frustrating answer to “How do I start learning to code?”

Originally Published on freecodecamp.org on January 17, 2018 By Saron Yitbarek

I’ve been working on the CodeNewbie Challenge (aka #CNC2018) for months. It’s a project to help coders do one of four things: start coding, code more, blog more, or get a job.

You pick a challenge, and over the course of 5, 7, or 9 weeks, you get a weekly mission with reading, research, and a homework assignment to help you reach your goal. It’s based on powerful questions, guided research, and curated resources to help point you in the right direction. You can learn more and sign up here (first mission is released Jan 22, so sign up by then).

This challenge is based on a very simple premise: when you’re learning to code, there is not one universal roadmap. It’s frustrating, but it’s the truth.

How I came up with #CNC2018

I sipped my cranberry juice as she raised her hand. She sat in the middle of the mostly empty room, and waited patiently to be noticed. They called on her, and she stood up to ask the infamous question, “How do I start learning to code?”

All the panelists turned to me, and my chest tightened. Of the four of us, I was the “new coder expert,” so I put my drink down and reluctantly pulled the mic to me.

I get this question often. I’m usually excited to answer it. But today, I worried I would disappoint her.

It’s a deceptively difficult question to answer. It assumes, first and foremost, that there is an answer; a single, uncontested, logical answer. It focuses so much on the “start learning to code” and less on the “I”, but the “I” is the most important part.

I used to give juicy, satisfying answers: Start with Ruby, it’s the world’s friendliest language! Try JavaScript, the language of the web! Use Codecademy to give you a little taste, it’s free and you can start today!

When I was feeling more resource-oriented, I went to my bag of websites and pulled a few out. Treehouse is great for videos and courses. FreeCodeCamp is a great community and learning resource for JavaScript. Check out Coursera for more computer science-y options. And you can’t forget about good old fashioned YouTube! Search for a language or framework and pick a short video to get you started!

They took furious notes as I spoke, proving that what I said was valuable and correct. But it wasn’t.

There are many ways to start coding. There are many things to learn and resources to pick from. In the overwhelming plethora of options, we search for a roadmap. What is the single set of successive steps I can take to get to this particular destination?

But in the hundreds of conversations I’ve had with coding hopefuls, I’ve learned that the “I” in “How do I learn to start learning to code” dictates any such roadmap, and that each roadmap is personal and unique.

Why am I learning to code? If you’re learning specifically to get a job, your roadmap will be very different than if you’re just learning for fun. Now, we have to think about what kind of job you’re hoping for, how much money you want to make, where that job even is (are you willing to move, or should we focus on the local market?), and is there a deadline of when you need to get this new job? So many questions.

Let’s look at time and money. How much of each can I invest in this learning? If I don’t have a lot of money (and how much do I consider to be “a lot of money”?), that eliminates a subsection of learn-to-code options. If I don’t have a lot of time, what’s something I can learn that’s easy to pick up and doesn’t require a huge a time commitment to get started? What am I sacrificing for that ease? So many more questions.

Next, let’s inspect community. Do I have people in my life who can serve as tutors, teachers, possibly mentors? Do I live in a place where I can get in-person support, or will that support primarily be online? Does it matter? If I’m doing this all by myself, finding an in-person course might make the journey easier. If I have developers in my life, I can reach out to them to course correct and guide me, making my journey a bit more efficient. Questions galore.

All of these questions are so important, and they’re all about you. So I held the mic and took a big breath and told this woman exactly that. It would’ve been nice to give her a roadmap, a three-step magic trick to get to where she wanted to go. But there just isn’t one.

I paused when I finished, looked at her then around the room to see how this answer would be received. I braced myself for disappointment. The other panelists nodded, the room smiled, the woman seemed genuinely appreciative. Surprised, but reflective. I sighed with relief and took a sip of my juice.

That’s been my go-to answer ever since, and I can feel how much more helpful it is. The problem is that getting the most value from that answer usually involves a conversation, a back and forth to explore and dissect. I’ve been thinking of ways to scale this. How do you scale the answer to such a personal question, when there are so many things to consider, and no single, right answer? You create the CodeNewbie Challenge.

Over time, #CNC2018 helps you create and iterate on your personal roadmap, your own curriculum, based on your needs and lifestyle. And like most adventures, it’s much easier to do with friends. So we’ve created a closed Facebook group so can you share your wins, your lessons, and your story with others.

I’m so excited to finally launch it. It’s a brand new year, the perfect time to take on a new challenge. So join #CNC2018 and sign up by Jan 22. I’m excited to see where your roadmap takes you.