How to learn to code and land your first job in 2024
How I would get my first job as a self-taught developer if I started over
Published on
Jan 16, 2024
Read time
7 min read
Introduction
Want to learn how to code? In this article, I’ll share the steps I took to land a job as a self-taught developer in 2024.
I have been paid to write code for almost five years now. I taught myself over a period of 8–9 months before landing my first full-time position and even wrote about the resources I used in my first ever Medium article.
But that was in 2019. The industry has changed a fair bit since then and I have also become a much more experienced programmer. So what’s changed? And — for those who are looking to get started — what’s the best way to learn to code?
Choosing the right path
The list of potential languages and technologies to learn can be overwhelming. If you have a clear sense about which discipline you’d like to go into, that can help point you in the direction of a particular language. For example, data science roles typically require experience in Python. If you’re interested in gaming, the major engines support C## or C++.
But if you’re not sure what you like and you’re looking to get employed as quickly as possible, then my recommendation is to learn JavaScript.
In last year’s Stack Overflow Survey, JavaScript was the most popular language and full-stack developer — which requires knowledge of JavaScript — was the most common role. Learning JavaScript was the route I took, and it’s great for two main reasons.
First, it’s everywhere: as the language of web browsers — and a lot besides— almost all technical companies will need to hire some people who know the language well.
Second, it’s a great way to find your niche: JavaScript is used on the frontend, the backend (via Node, Deno or Bun), on mobile (via React Native) and on desktop (via Electron). The language opens a lot of different doors. Without needing to learn a new language, you can experiment in these different areas and then, if you want to, specialise in a particular domain.
If you decide you really like backend, for example, you could then pick up a more performant server-side language like Go or Rust —though you can also specialise in backend without this, since a lot of companies use JavaScript on the server too.
So, if I’ve managed to convince you that JavaScript is the best starting point, then the next question is: how should you learn it?
Broadly speaking, the way I learned is still the way I recommend learning today. Some of the tools and technologies have changed, but the main steps remain the same.
The technologies
If your goal is to get hired as soon as possible, I recommend learning — in this order — HTML, CSS and JavaScript. Then — in any order — React, TypeScript, Git and the command line.
HTML, CSS and JavaScript
I think the best way is to start as close to the end user as possible, building user interfaces. This way, you’re getting a lot of visual feedback. Unless you have a technical background, it’s a lot easier to understand UI as a beginner than something a bit more obscure, like writing a server.
I would start with HTML, which isn’t a full ‘general purpose’ programming language like JavaScript, but it will get you used to writing instructions for a web browser to interpret. Then add CSS for styling: CSS is used to write lists of styling instructions, but the language has surprising amounts of depth for those who want to understand it more fully.
Finally, once you have a grasp of HTML and CSS, then you can start to focus on JavaScript. This will be your main programming language and it’s worth spending a lot of time trying to understand it deeply. Initially, the JavaScript you write should be focused on adding interactivity to your designs. But I found solving coding problems (like those on Codewars) a great way to become more confident with the language.
I would resist learning any libraries or frameworks until you at least feel comfortable with the basics of the language.
How to learn:
- A good starting place for these technologies are the courses offered by FreeCodeCamp and Codeacademy. For me, interactive courses like these were the best way to get started. (I’m going to mention Codeacademy a lot, because I used it as a learner and I believe it is a great entrypoint for a lot of the new skills you’ll need to pick up).
- To get more comfortable with JavaScript, I recommend trying to solve problems on Codewars. For code problems, the go-to interview preparation site is Leetcode — but these problems are typically more difficult, and I know many developers who have landed a job without getting to this level.
- There are lots of great video tutorials on sites like YouTube. These days, I’m not so sure what the best beginner-focused channels are, but @programmingwithmosh has been going for a while and it has good introductory material on the fundamentals. Also, I didn’t use Udemy when I was learning, but I know a lot of people who recommend it.
- There’s no better way to learn than by creating your own projects. Once you have a grasp of the basics, why not create a portfolio site to showcase your new skills?
React
After that, I would learn a JavaScript framework. There are a lot of good choices, but — for similar reasons to choosing JavaScript itself — I would recommend React. It is the most common web framework right now and there a lot of companies hiring React developers.
How to learn:
- The best place to learn React is its own documentation. It has a fantastic tutorial here.
- As a beginner, I really enjoyed Wes Bos’s React for Beginners (the only course I paid for when I was self-teaching).
You can pair React with plain CSS, but in the industry it’s more common to use a styling library. Right now, TailwindCSS seems to be gaining a lot of popularity. At work, we use Styled Components. If you already feel comfortable with CSS, you should be able to get going with these libraries just by reading their documentation.
Once you feel more confident with frontend, you may want to begin learning backend technologies too. But good frontend skills will likely be enough to help you get your first role as a junior developer, and you can pick up other skills (like backend) on the job!
Git and the Command Line
Instead, in order to be successful at a new job, there are a couple of technologies that should be higher on your priority list: version management with Git and the command line. I remember struggling to see the point of Git as a solo developer, but it’s extremely important to know when collaborating with others. Similarly, the command line can at first seem slower than doing things via a UI, but this tool is a non-negotiable as a developer: often, it is faster than the UI alternative and sometimes there is no UI alternative!
How to learn:
- I would recommend heading back to Codeacademy to pick up these skills.
- Then, try uploading the projects you’ve made to a version control platform like Github, which should help these skills feel a bit more tangible!
TypeScript
Finally, it’s more-or-less industry standard to use TypeScript— a so-called ‘superset’ of JavaScript, adding types, which are particularly helpful when collaborating with others on large projects. For beginners, it can be confusing to understand what’s JavaScript and what’s TypeScript, so I recommend you only start learning TypeScript once you feel comfortable with plain JavaScript.
You may not need this to land your first job, but having some understanding of TypeScript will likely help you hit the ground running.
How to learn:
- I learnt TypeScript after landing my first job, but if you want a headstart, Codeacademy has a TypeScript course and you can also solve Codewars puzzles using TypeScript.
What’s next?
Once you have a good understanding of the technologies described above, you’ve got enough skills to be useful to a company. Programming — especially in web development — is a fast moving industry. There’s a lot to learn and, because new advancements and trends emerge often, the goal posts move. So the learning doesn’t stop here.
My best advice is to learn by doing. You can read or listen to good advice, but nothing is as good as spending hours solving your own problems for your own projects. Make a portfolio or a website for your hobby or side-hustle. Make a game. Try to imitate a popular website. Doing these things will teach you more than any tutorial — and it will also give you some useful material to discuss at interview.
As a self-taught developer, it took me 8–9 months before I felt comfortable applying for jobs. Possibly, I could have been useful to a company before then. If 8–9 months feels fast, I was in a privileged position that I could spend several hours learning every day, and it’s not uncommon for people to spend 1–2 years learning before they start applying for work. You’ll need to fit your learning in around your life.
Ignore any advice that claims to teach you JavaScript in a matter of weeks. These are overhyped claims and — even if that was enough time to get a grasp of the basics — if you are totally new to development, it’s simply not enough time to get to a level that would make you useful to a company.
And what about after landing your first job? There are a lot of potential paths to take. I have gained a lot by going ‘deeper’ into the technology stack, step-by-step. Once you feel comfortable with frontend, exploring server-side technology or ‘backend’ is a great next step. Node.js is the most common JavaScript tool on the backend, often paired with Express. Then there’s the database layer: learning SQL will be very useful here; MongoDB is a good — and fairly beginner-friendly — alternative. Then there are developer scripts, tooling and bundling. Then infrastructure. Each layer makes a bit more sense once you have an understanding of what comes above it.
With that, I will wish you good luck with your learning journey!
Related articles
You might also enjoy...
Automate Your Release Notes with AI
How to save time every week using GitLab, OpenAI, and Node.js
11 min read
How to Create a Super Minimal MDX Writing Experience
Learn to create a custom MDX experience so you can focus on writing without worrying about boilerplate or repetition
12 min read
I Fixed Error Handling in JavaScript
How to steal better strategies from Rust and Go—and enforce them with ESLint
14 min read