Seattle 2017. I had just attended my first team meeting at my first job as a software developer. A proud day for me!

Three years ago I learned how to code without attending a bootcamp or having a computer science degree.

Ever since then, I've had my dream job working as a full-time developer. But learning to code on my own wasn't easy—I struggled, and almost gave up at one point.

If you're reading this, you might have the goal that I did—to be self-taught and avoid attending an expensive bootcamp or returning to college to get a computer science degree.

Here are my best tips on how to teach yourself to code without a bootcamp.

Create A Plan And Stick To It

When you are learning to code, a common mistake is having no plan.

You take a few coding tutorials here and there, build an app or two, and read a few articles on coding. But then months go by and you aren't sure where to go next. You feel lost.

What can you do?

Create a plan—a detailed roadmap for how exactly you'll learn to code.

To create your plan, start asking yourself these questions.

What language will you learn? What kind of coding are you interested in? Are you most interested in creating games, building apps, or websites? What area are you going to focus on?

What is your main goal? What is the reason why you want to code and what are you going to do once you have the skill? Is your goal to become a developer? Or build something?

What learning resources will you use?  There are many amazing (and completely free) resources to choose from when learning how to code, it can be overwhelming. Whether it's the freeCodeCamp curriculum or another, pick a program and set goals to complete it.

How many hours per week will you learn, and when? When you're in college or school, you usually know how many hours you'll be either in class or studying, and you stick with that schedule. Create a schedule for yourself that works best for you so you can stay on track.

Before I created a roadmap for myself, I felt confused as I was teaching myself how to code.

I didn't know what to learn or what to do next.  Once I had my built roadmap, it was easy to move forward in my journey— I knew the next step to take.

Chase Your Curiosity

"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." -Alice In Wonderland

Having your roadmap is key, but make sure to follow your curiosity.

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.

Find something about coding that you are what one of my favorite writers, T.K Coleman, would call irresponsibly curious about. You know when you’re up late binging a good show, or you’re so curious about what happens next in a book that it’s 2am and you’re trying to keep your eyes open because you can't wait to see what happens next?

Discover the area of programming  that makes you curious enough to keep pursuing it. Time flies by as you follow your curiosity, and the amount you learn will skyrocket. Like reading a great book or the best who-done-it movie you’ve seen in a while, you’ve got to get to the end.

Figure out what you're curious about and chase after it.

Hold yourself accountable.

When attending a coding bootcamp, if you don’t complete assignments, you risk getting kicked out and wasting the money you paid to enroll.

In school or college, if you don’t complete your homework you risk failing a class.

At work, you risk getting fired if you don’t show up.

But what risks do you face when you don’t complete a free coding course?

Nothing. You’ve got no leverage on yourself. No one to hold you accountable.

So find ways to hold yourself accountable.

Here are some ideas:

Start a blog and announce (or on social media) that you’ll blog weekly on the progress of your goal.

Use positive or negative reinforcement, depending on what works for you. Tell a friend that you will pay them X amount of money if you don’t present them with evidence of a completed project. Or, every time you make progress with your coding goals give yourself a reward.

Hold yourself accountable. Get leverage on yourself.

Give yourself no choice but to learn to code.

Learn In Public

When I was first learning how to code, I read books and articles about how going on social media would hurt your productivity. I subsequently decided to delete my Twitter, Instagram and Facebook accounts.

And while this did help me a bit (I could no longer scroll Twitter as a distraction from a hard coding problem), I eventually realized the benefits of using social media were far greater than the disadvantages.

When I got back on social media and started sharing my journey towards becoming a developer, I made friends, found mentors, got job opportunities, and sped up my learning. I was also told I inspired some people by sharing my journey as a self-taught developer.

You can do the same.

When I published blog posts or social media posts about what I was learning, I received encouragement and feedback from friends. This exchange created a great positive feedback loop for me; I wanted to learn more so I could share my accomplishments again.

Here are some of my favorite articles and podcast interviews on all of the benefits of learning in public and how to get started:

Learn in public: The Fastest Way To Learn.

Use Social Media To Break Into Tech.

Switching Careers And Learning In Public With Tania Rascia.

Don't be afraid to Google everything.

This is something I heard from Brian Holt when watching his excellent Intro To Web Development course on Frontend Masters. Many people believe they aren't good coders if they have to Google things. Contrary to this, as Brian points out, good programmers need to Google things all of the time.

Don't be afraid to Google things as you code. Googling to find an answer does not make you less of a programmer.

Build projects you know you can finish.

Starting a coding project as a beginner is daunting. The project seems so massive and you feel as if you might never complete it. You lose motivation starting a project you have no idea if you can finish.

The solution?

Try to build projects you're reasonably confident you can finish. Build projects that stretch your skills,  but be realistic on whether or not you can finish the project. Seeing the finished projects you've completed will help motivate you to continue your coding journey.

If you aren’t sure how to start a project yet, this article I wrote on moving from tutorials to coding projects might help.

Build impossible projects.

That said. A good friend of mine, who has worked for some of the biggest tech companies, once told me that he felt most of his growth as a developer came from building what he called ‘impossible’ projects.

He would have an idea for something that he wanted to build, and then he would set out to do it. And while it would seem impossible to build these ideas, he was so excited that he would try to find a way. Thus, lots of learning happens.

If you’ve been building and finishing projects, try picking a project you really dream of building even though it feels impossible to build.

With the power of your passion for this project, you may be able to build exactly what you want or at least learn an incredible amount in the process.

Find mentors and your community

One of the most inefficient ways to get a mentor to take you on is to message someone out of the blue and ask “Will you be my mentor?”

The person you are messaging likely already has many requests to be a mentor. If they're the kind of person who is mentoring someone for free in their spare time, they likely already have several mentees and can't take on another. And when you say ‘will you be my mentor’ with no specifics and no real plan, you're making your mentor do more work up front by figuring out what to do next. Anyone that can actually help you probably isn’t going to say yes.

So how can you find a mentor?

There are great platforms such as CodeMentor or Coding Coach. There are also coaches within programs such as Udacity or Treehouse.

You can also find mentors by asking questions, discussing what you’re learning and interacting with others on forums and places like StackOverflow.

Having a community to surround you can also help keep you immensely during your journey of learning to code. Here are some of my favorite online coding communities: freeCodeCamp, of course. CodeNewbie, Dev.to, Stackoverflow, Reddit.

I also started the CodebookClub at the beginning of this year, a free community of developers of all experience levels learning together. We host live online meetings and reach techincal books as well as take tutorials, together.

Don't take your errors personally.

I often witness new developers write code, get an error, and then say something like, “Ugh! Of course I got this error, I’m stupid”, or “I seem to get a lot of errors, I’m not sure if I’m cut out for programming.”

Yes, you wrote an error--we all do. An error in your code doesn’t mean you aren’t cut out to be a developer. I repeat: errors while coding don’t mean you aren’t going to be a great developer. They’re a natural part of the coding process.

Think of your favorite video game. When you failed a level several times, did you think, ‘Maybe I’m not meant to be a video game player’? Probably not! Fail many times, then master that level--them go to the next one.

Don’t take your errors personally. Learn from them, and move on.

Keep the streak going.

Joltin’ Joe DiMaggio and the most famous streak in sports history.

When I was first learning to code, I took a break for a week. When I came back to coding, I felt like I was seeing the language again for the first time. And once I took a break from coding, it was that much harder to get back into it.

My mom suggested I start a streak of coding. Coding Every. Single. Day. There were many times when I felt tired or unmotivated to code, but I had to keep my streak going. So I would code--even for just five minutes. So even on the days when I really didn’t feel like it, I still took a small step towards my goal. That momentum kept me going--all the way to the finish line.

Keep the streak alive!

If you enjoyed this post, sign up for my email list where I  give away free courses and announce meetings for my free coding book club.

If you have feedback or questions on this post, feel free to Tweet me @madisonkanna.