Like most people, I had no plans whatsoever to teach myself to code. The decision came when I lost my Customer Service job in 2015.
The transition came as organically as falling in love with a soulmate. We were old loves-I had tried to make it work in college, but the timing wasn't right. Not to say it was easy! But, it was so much easier with so much emotion to drive the experience.
I got my first job in tech in about 10 months after I started teaching myself web development, after an incredible amount of work.
And please believe me when I tell you that if I can do it… you can, too.
I'm quite sure there are lots of guides out there on this topic-how to teach yourself to code and get your first coding job. But this one is written by me, so it's different. I think you'll appreciate my perspectives. :)
Now, I think it goes without saying that condensing the entire process down to 5 steps is over-simplifying. I'm going to give you the general sense of what to do. You have a couple of options for filling in the gaps, and honestly… you should do both!
Option 1: Lean on your communities for support
Option 2: Get some dedicated help and guidance
Both are actually my specialty! I'm a heckin' passionate community builder, and I understand the importance of seeing and hearing from people who are trying to do what you're aiming to do.
Option 1 is an important part of your growth as a developer. You'll need a network of people. This industry is actually particularly awesome, and a ton of fun. We grow along with the tech-and each other. We see each other at conferences. We participate in weekly Twitter chats. It's dope.
Option 2 has some barriers to access. Essentially, it involves having someone-ideally an experienced coach with deep understanding of your situation and goals-take your hand, get to know you, explore your dreams with you, and plan out your journey from where you are, to where you want to be. Then, you delve into the skills with an actual map and pathway to your destination. At that point, the hard work is yours and yours alone.
I LOVE working one-on-one with newbie coders, but of course, with the level of attention and expertise required… it's not free. Most of us do what we can to support newbie coders via blog posts, podcast episodes, books, and more-but some of us are willing to give more of our time and presence than others! As such, Option 2 is an investment in yourself.
So, this is indeed an over-simplified, but still pretty thorough overview of the process of teaching yourself to code, and then getting your first dev job!
I created an entire 14-page guide to this really early part of the journey, because it's the most easily-overlooked part. It's also why a lot of people sputter out-they simply didn't do their initial homework.
If you're looking for your first job and a total career change, go ahead and download my guide, "10 Things You Need to Know BEFORE Learning to Code".
First, why do you want to do this?
Have you been dreaming about coding since you were a little kid? Or maybe you just heard that coding is the future, which makes sense to you since technology is growing so quickly, so you'd like to get on the train. Regardless of your reason, you'll need to establish that early on. It will be what pushes you forward when things get really challenging.
You'll need to create a budget for yourself, which I know sucks because I, too, hate budgets. If you're changing careers, you need to be sure you'll be able to make your transition with as little stress as possible. Coding is tough enough as it is… do your due diligence to not make it harder on yourself.
Is there even a web development industry where you live? If so, tap into it, and start talking to folks. Attend Meetups. Get to know people who do something similar to what you're wanting to do.
Ask questions about companies hiring in the area. Do people like their dev careers? What are their salaries like?
If there isn't a lively dev industry in your local area, you'll need to get creative. Remote jobs could be an option, if that's something you're open to. Alternatively, if you have the resources and the flexibility, relocating to a new city could be an exciting change alongside your new career.
The entire point of Step 1 is to ensure that if you're looking for a job, you're not just jumping into things without scouting the territory first.
If you jump in, you may find yourself feeling unprepared and stressed out when bills come due, unexpected events come up, and generally speaking… life happens.
Alright, so I approach this differently than a lot of people out there. When people start learning to code, one of the biggest questions I hear is "what should I learn?" (also, "where should I learn it?").
Keep in mind, you're not even coding yet by this point. Or maybe you're just poking around, learning the basics, but you're not actually building projects. You're still laying the foundation, and learning about your tools and the purpose behind them. This is a super important phase!
With all those tools out there though… how do you know which are going to align for an actual job title?
Wouldn't it suck to learn a bunch of fairly unrelated skills and language to a basic level, and then realize they don't actually get you a job? Or that you'll need to flesh just a few of them out with additional learning, in order to even be competitive for jobs in your area?
Yeah… that's what ya girl did.
I learned HTML, and then added on CSS. I kinda hated CSS at first, but we worked it out and we cool now. So far so good, yeah?
I have a non-verbal learning disability. It's kinda funny-that wasn't diagnosed until after I struggled through gaining the required skills to get that first job 10 months in. My struggles made so much more sense.
At this point, algorithms scared the crap out of me. freeCodeCamp's algorithms were super challenging. A lot of my past learning trauma came up. I cried a bunch out of frustration when I simply couldn't contextualize a mental model for my neuroatypical brain to "make it click".
In a panic, I went off the rails. Or perhaps "on" the rails, as I started learning Ruby. Got to the same point. Panicked again.
I took a break around the time I wrote this article, because I had had an existential crisis, wondering if I was even fit for this.
That story kind of serves as a cautionary tale, to show what can potentially happen if you do things out of order, or without an initial structure. You gotta be able to build these skills for a job, if you want a job.
So here's my question: why not just take the guesswork out, and figure out what kind of work you'd like to do first?
And of course this is going to change over time! We grow and change not only as developers but as human beings over time. We learn more about ourselves, and we want to change up our goals. But starting with some kind of compass direction REALLY helps.
How do you figure this out? You'll want to take a really deep inventory of your dreams, passions, and existing skills. Often, it helps to evaluate this with the help of someone else (ahem, like me). We have skills and talents we bring to the table that other people don't… and that we ourselves often overlook.
Look at what's available in your area. Search on job search sites like Indeed. Ask in local online fora.
But the important part here is to pay attention to the skills that are listed: both tech and interpersonal.
Yes, interpersonal. We have enough problems with lack of interpersonal skills like effective communication, empathy, compassion, and inclusion. Don't come here bringing more.
But those coding skills are going to give you guidance and a path to your destination, so that if you change your goals, you at least know what you're deviating from and to.
By this point, you have a good sense of your local development industry, and you've done your research on job titles. You have an idea of what kinds of skills you'll need to build on your way to your first dev job.
Now, it's time to build your skills.
It's important to note that you'll be doing this alongside Step 4, and alongside anything else you may be doing (we want to keep those things limited). You always need to be learning and building your skills while also building projects with them.
I generally recommend that web developers start with the front-end, since all roads lead to the user's experience. But this really varies based on those initial goals. See where it was helpful to identify them first?
For example, your starting point will be different if your goal is to work with data. Perhaps your goal is to learn, say, Python, since Python is natively very efficient with data management. You'll naturally lay out your skills-building journey differently depending on your end goals.
The important part here is that no matter where you're headed, you have a roadmap. You want to avoid getting caught up learning things you don't need, because they will get in the way of you getting a job ASAP.
You should have a list of resources that you know work for you. Knowing how you best absorb information is absolutely integral to this part. Don't waste time with books if you learn best from videos. Again, time is of the essence, so you need to not just learn, but learn intelligently, efficiently, and effectively.
Spend a good amount of time on this section. You're adding tools to your toolbox, and you'll be using them every day once you start working to build your portfolio.
Remember, Step 4 is happening alongside your skills building. You're learning daily, and applying what you learn. And of course, there are a couple of really important parts here that I find coding students overlook. So let me hit on those real quick!
You don't have the long resume dating back to your Computer Science major at MIT. Neither do I. But, like… woe is us?
As a self-taught coder without the CV to back up your skills, you're going to need to show whatcha got. So, even though you will be focusing on your resume as well, you REALLY need to put time into that portfolio. If nothing else, your resume will grow along with your portfolio as you add skills!
First, you don't need a ton of projects. I think a lot of newbies get overwhelmed at the thought of having to build tons of projects in order to show what they know.
This is why we're aligning those skills toward the actual job description. If you build even ONE project, but maintain it intelligently-you're going to be leagues ahead of your peers.
Ok, so you created one project, you've been posting some commits on GitHub, and you're already feeling you need to jump onto the next one. Hold it right there, pahdna.
Did you make the absolute most out of the project? Because you're learning skills toward a job, they'll probably come together as a stack. And you can more than likely apply many of your newly learned skills to the same practice.
Let's say you're working toward becoming a front-end web developer. You just built your first website.
Can you turn a website into a web app, so maybe users can log in?
If you didn't build your page mobile-first (you should have!), how about refactor it as mobile first?
Take the time to look at your projects as not only an asset, but a glimpse into the inner workings of your brain. This is INCREDIBLY important to hiring managers. They want to know how you think, so they can determine if it brings something valuable to their company and team.
So, to piggyback off Hot Tip™ ️#2…
What better way to show people the inner workings of your brain than to document your journey?
One of the most slept-on resources for getting a job is… drum roll… your README.txt file.
This shouldn't just be where you tell people how to run your program. This is where you should be telling hiring managers:
- Why you added that feature
- Why you abandoned adding that other feature and removed it
- Your next plans for expanding
- What you'd like to see in terms of feedback
- What you learned at each step
- What you feel proud of, and what you could've done better
Why are we ashamed of writing our stories? We don't have time for that-we need to get you a job!
Make it funny, even. Make it epic. Your journey is epic.
But yeah, leverage your README.txt file, and you'll seriously be so much more attractive to the people checking out your portfolio and considering you for employment.
There's SO much to unpack in this step, it's just not possible to cover it all in a single post! 😆 So, I'll go with just dropping a bunch of value bombs on all y'all.
One of the most frequent questions I get is "when should I start applying for jobs"? My response is something along the lines of "yesterday".
Seriously. Go ahead, apply. The worst they can tell you is "no".
So, here's the thing about applying for jobs as a newbie self-taught coder. You want to do it right, and really demonstrate:
- Your willingness to learn
- Your growth so far
- Your enthusiasm for the industry (and specifically, company!)
When you communicate with hiring managers, you're going to want to be honest with where you are, while showing what you've done. Those two components will put you on the radar. You're being vulnerable, and you're still retaining some control over your perceived image.
Another important thing to remember: when you apply to a company, it's not a one-shot deal. Many newbies make the mistake of thinking it is.
Ok, so let's say you're rejected for an interview. Now, you have a window to ask for feedback. If they respond, that's a really good company. 👏🏽
If you really like the company, and they know you're self-taught (they'll know from your resume anyway, so just be transparent), tell them that you'd like to grow your skills in their direction and re-apply in the future.
Boom. You just formed a connection with hiring managers, and showed how determined you are to improve your skills in order to meet their requirements.
Alongside building your portfolio, you'll need to grow those interview skills. But not just any interview skills-tech isn't like every other industry out there. We're edgy. We like you to prove what you know.
This is especially important for self-taught coders. You're going to need to know how to do things like:
- Explain what different tech concepts are
- Solve algorithmic challenges-while explaining your approach
- Write out your steps to the solution
- Read your interviewers
- Do a bit of a dance to maintain control over the interview (this is my specialty haha)
There are lots of resources out there for this, like Gayle Laakmann McDowell's "Cracking the Coding Interview". Plus, it doubles as a blunt weapon.
You'll need to be yourself. They need to want to hire you. It's hard to be yourself when you're not sure what's expected of you, but why get hired as someone you aren't? That just sounds like fodder for a whole lot of Imposter Syndrome.
By this point, you have a growing toolbox of skills.
You're learning every day. You're building projects, but making the most out of them instead of just ditching them and moving onto the next thing. You're telling a story with your GitHub README.txt.
But most importantly, you have an idea of where you're going. That internal compass, alongside a supportive community (like #CodeNewbie!) is going to be what saves you when you get lost.
Build on, grow, and gain confidence in yourself. You're a total warrior, and you can do this! 💪🏽