How I went from complete beginner to software developer — and how you can too

I wanted to become a professional programmer. But I had no idea how to make it happen.

I had no college degree, no previous coding experience, and I sucked at math.

And there was the nagging doubt: Can someone like me become a developer?

Well, I made it happen. I have my dream job. I’m a software developer.

I often get asked how I did it.

Here are the three vital actions I took that helped me go from a complete beginner to a software developer.

1. Build your Roadmap

The biggest mistake aspiring developers make is that they have no plan.

No roadmap.

When you have no plan, you feel lost. You take coding tutorials, maybe build a project or two. Then months pass. You think, will I ever become a developer? This is all so confusing. You have no idea what path to take.

The solution? Build a roadmap – right now. Create a plan for exactly how you’ll become a developer.

Your first step: Decide if you’re going to do a coding bootcamp or take online courses.

For me, I decided not to attend a bootcamp. I created my curriculum and taught myself…everything.

Because I was homeschooled growing up, I was comfortable learning on my own, so I decided to teach myself to code using various online courses ranging from freeCodeCamp to Udacity.

This approach costs far less than a bootcamp but it had a downside: I had no coding mentors or coding curriculum to follow. Learning from online resources means you do pay nothing or very little, but as I discovered, you don’t have much support. And you will struggle on your own as I did.

People are drawn to learning to code from online resources as I did, but it is not always the best way. The low cost is a big benefit, but make sure you are able to learn well on your own and can hold yourself accountable – without a lot of mentorship or support.

Bootcamps are expensive but they often come with much more support and accountability.

Carefully decide which path is best for you.

If you do learn to code without a bootcamp, I suggest picking an affordable online program that has at least some mentorship and a curriculum to follow. Doing so will ensure you struggle less and get the feedback you need. Udacity’s nanodegrees and Treehouses techdegrees offer some mentorship and code reviews.

If you decide to learn to code for free, freeCodeCamp’s curriculum is fantastic, and if you get involved in their community, you will excel.

Do I want to become a full-stack, frontend or backend developer? Decide what you’ll focus on learning. Know what language and libraries you’ll need to learn.

How many hours per week will I study, and when? Carve out the times of the week you’ll practice coding and never miss those study times.

What date will I start applying for jobs? Set a deadline for when you’ll apply.

What will I give up? It’s awesome to picture yourself working as a developer, but the road to get there means early mornings, weekends and late nights of hard work.

Be realistic: Look at what you spend time on each week, and give one thing up. For me, I was not willing to give up time with my family, but I decided to give up hanging out with friends. On most Saturdays, instead of spending time with friends as I usually did, I stayed home and programmed.

When building your roadmap, keep in mind: contrary to a lot of the marketing hype you’ve seen, there is no magical coding course, no magical program, no magical bootcamp that will ‘make you’ a developer. A lot of people ask me what online course I used to learn to code as if there’s one “golden ticket” that will turn you into a developer.

There’s not.

Only you can make yourself a developer.

Your grit and determination will get you there. But I also used a game-changing method to learn to code to become a developer.

What was it?

2. Train your focus.

There are a million free coding courses available to everyone.

If it’s so easy to access free coding courses, why is it so dang hard to learn how to code? Why is it so hard to become a developer?

Because many of us do not know the vital skill needed to learn and master programming languages. This skill is called Deep Work popularized by computer scientist, Cal Newport.

TL;DR: In order to learn hard things, you must focus intensely for long periods. That’s deep work.

But most of us are actively killing off our ability to focus, and few people do deep work.

Think about that last time you stood in a line. How much time elapses before you feel compelled to grab your phone and check notifications? Or what about this article itself – have you switched to a new tab while reading? Checked your Twitter account? 😄

Today, it’s the norm to have the attention span of a goldfish. And this is why it is so hard for us to learn complex things like coding. Once I figured this out, I realized that if I committed to doing deep work, I could learn the hard things I needed to know to become a developer.

When you sit down to code, set a timer for 90 minutes. For that entire time, focus on the app you’re building or the coding problem you’re trying to solve. Do not check your notifications. Do not open a new tab. When you find yourself daydreaming, quickly bring your attention back to coding.

Train your focus like your future career depends on it – because it does.

Without practicing deep work, I would not be a developer today.

3. Chase your curiosity.

When most people set out to learn to code, they start a curriculum of things they are “supposed” to know.

Then they get bored. Just like in school, when you’re learning new things only because you’re supposed to learn them, but you don’t know why you need to learn them or why you even care. Losing interest is easy.

To learn to code, find one thing about programming that’s fascinating to you. Find the thing that makes you curious enough to learn about it on a Saturday night – because you’ll need to do that at times.

There’s a line from Alice In Wonderland that’s stuck with me:

She had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and, burning with curiosity, she ran after it.

As I’ve worked with more senior developers in my career, I’ve realized: the best programmers don’t have to force themselves always to be learning more. They are always learning because, like Alice, they are burning with curiosity.

Some try coding in one language and hate it, then pick up another language and love it. Make sure you try different programming languages and learn about different fields within programming to discover what fires up your curiosity.

If you’ve tried learning to code several times from different angles and you still feel like you’re forcing yourself, then coding may not be for you. Contrary to the marketing material of most bootcamps, learning to code in three months and landing a $100K job offer right after, is not the reality for most. Coding is not a get rich quick scheme. Don’t learn to code if you are bored by it, because you’ll miss out on finding what your real curiosity in life is. However, if you are interested in tech but not coding, there are many other incredible and in-demand skills you can learn: design, data analytics, and more.

If you have a curiosity about programming, chase it. The more you go after your curiosity, the more of it you have. And while you’re chasing your curiosity, don’t worry about where you are coming from. Don’t worry about your lack of a CS degree or what’s behind you.

Regardless of your age, lack of a degree or previous experience, if you love to code, practice deep work and make learning a priority in your life you can become a professional developer.