How to Teach Yourself to Code and Start a New Career (or at least how I did it)
Tags: beginners, selftaught, programming, tutorial
Published: 2022-02-03 01:25:00

👨‍💻👩‍💻

Over the past 9 or so months I have taught myself how to code and started a new career as a **Web Developer**. I thought I would make a blog post about my **self-taught journey** so that others may find some inspiration and/or useful information from it. So here it is - my tips and advice to those considering or starting their own coding journey!

I will structure this post into the main steps that I took along my path and at the end I will include some general tips and tricks that I have learned along the way. 

The first thing I think it is important to understand as you embark on this quest is that what you are doing is <u>not crazy</u>. It is entirely possible to teach yourself how to code and in many ways it is actually **preferable** than following a traditional path, such as university with a computer science degree. You get to learn faster, save money, and start your career much sooner by going this route. The only requirements are **time**, **effort**, and a **commitment to achieving your goals**. You can realistically teach yourself the fundamentals and get a position as a Junior Developer in about 3-6 months. If you commit to coding at least a few hours a day for 5 days a week. I have heard many stories of people who were able to achieve this even while managing many other difficult life tasks, like raising kids. If you want to make this happen, you <u>CAN</u> do it.

With that being said, here is what I found worked for me. There are many ways of doing this such as bootcamps, but the truly self-taught route is by far the cheapest and best option for people who are **self-driven** and **motivated to learn**, in my humble opinion. 

Now, onto the guide:

## 1. Choose an Area to Focus

The first step is to decide an area to focus. Development is a massive subject and there are many sub-categories to choose from. I would personally recommend choosing between either **Back-End** or **Front-End**, as these 2 positions tend to be the most popular for finding a job once you are ready. 

But there are many other positions such as **Dev-Ops**, **Data Analyst**, **Quality Assurance** and more. Do a bit of research on each category of development and see what peaks your interest. For me, the visual aspect of front-end development is what I found to be a great starting point into the big world of development. 

Within these main categories there are further areas you can focus, for example **web development** vs **mobile development**. My recommendation is web, that is what I have found the most interesting personally, but everyone is different. Desktop applications are still developed but for the broadest job possibilities, I believe web or mobile are the best choices.

## 2. Pick a Learning Platform and Start Teaching Yourself!

There are many fantastic online resources for learning how to code. Lots of these resources have career specific courses and learning paths that you can choose from. For example, **Codecademy** offers a **Front-End Engineer** career path that includes months of valuable content that will keep you busy and progressing your skills. 

I will list some of the websites I have found here in no particular order. Do some research on each of them and see which one you like. I would recommend taking one of the bigger courses that bundle together many skills rather than lots of smaller courses, but whatever works for you to learn is great!

* [Codecademy](https://codecademy.com)
* [Udemy](https://www.udemy.com/)
* [freeCodeCamp](https://www.freecodecamp.org/)
* [The Odin Project](https://www.theodinproject.com/)
* [egghead](https://egghead.io/)
* [Udacity](https://www.udacity.com/)
* [Treehouse](https://teamtreehouse.com/)
* [Frontend Masters](https://frontendmasters.com/)

As you go through your chosen course remember to pace yourself, **development is a marathon not a sprint**. There may be times where you get overwhelmed and stuck. If you can't solve a specific problem, **don't get discouraged**. If you persevere, you <u>will</u> be able to look back at the same problem months later and understand it with ease. 

If you are truly stuck then don't be afraid to move on and come back later. If you think something is not actually relevant to your future career goals then you can even skip some sections entirely. For example, some courses may teach you Data Structures and Algorithms. While these may be good to know, they are likely not necessary for your first job. You will be learning at a very fast pace and processing lots of new information, so it is important to focus on the entry-level skills that you will need to get a job and not get lost into some more advanced concepts at the beginning.

## 3. Setup a GitHub Account

[GitHub](https://github.com/) gives you the ability to showcase all of your work to the world and future employers. **Make all of your work open source**. Many employers will review your GitHub to see your activity and your code. You will learn how to use Git as you take your course, but getting this profile setup as early as possible is a good idea in my opinion.

## 4. Create a Portfolio

Once you have some fundamentals in your tech stack under your belt you should start working on your portfolio. **Make it interesting and make it look good**. Don't be afraid to use tech like Bootstrap components, or borrow ideas from templates. This will be the first real project you work on, so if you don't code it from the ground up that is OK. The goal is to make a nice looking site that showcases your skills and tells people about yourself. If you are focusing on back-end development, then you could even use a template for this. Employers will not necessarily be too concerned about your front-end abilities. 

**Have fun with this**, showcase yourself to the world and let everyone know what interests you have! As you create projects you can update this website. It will be a living site as you progress and gain new skills to show-off. I will link my site here for some ideas - design is not my strong-suit, so there are much better looking portfolios out there. However this will give you an idea on the details to include in your own portfolio.

* [secondl1ght.site](https://secondl1ght.site)

## 5. Start Working on Projects

This may be required as part of the course you are taking,  you should make **at least 3 different projects** with whatever technologies you are learning. Learning from your course is good, but the real learning happens when you go off into the wild and **build something from scratch**. 

It doesn't have to be super complicated, but challenge yourself to put the skills you have been learning to use, and then showcase these projects in your portfolio. I will link a couple of my personal projects that I worked on while I was learning to code here. You will see that they are fairly simple, but I learned <u>SO</u> much by building these and actually writing code to solve problems in real-life. 

This is a <u>MUST</u> to compliment your course work. When building projects, choose ideas that are fun to you. If you are enjoying the project, it will make it much easier to finish. Don't just build a generic X project, come up with a cool idea and run with it.

* [Random Reddit](https://www.randomreddit.ninja/)
* [Bitcoin Quotes](https://www.bitcoinquotes.io/)
* [30daytheory](https://www.30daytheory.world/)
* [Blockdate Computer](https://www.blockdate.computer/)

## 6. Utilize Community Resources to get Un-stuck

There will be points in your self-taught journey that you get stuck. Not having a teacher or fellow students to ask questions can be hard. Luckily there are many online communities that you can turn to for asking questions.

Whatever tech you are using likely has a **Discord channel**. If you are learning React for example, make sure you join the React discord and ask questions there. You may even find a **mentor** willing to help you on an ongoing basis. 

When asking questions make sure you have **put the work in yourself first**, don't use these communities as a crutch. When you first encounter an error message your first response should not be to post it in the chat. Make sure to spend at least an hour or more trying to figure it out on your own first. This is will help you learn, **debugging is half of programming really**.

## 7. Contribute to Open Source

After you have built a few of your own projects I would recommend **contributing to open source**. Find an open source project that you are interested in and start getting familiar with working with others through contributions. 

The open source community is very welcoming in general and you should be able to find somewhere you can help. There is an annual open source hackathon for beginners called [Hacktoberfest](https://hacktoberfest.digitalocean.com/) which is a <u>GREAT</u> way to start out. 

Consider your open source contributions as your first real work experience and make sure all of your work is **professional and high quality**. 

## 8. Create a Resume and Job Prep

Once you have completed your course, created a GitHub profile  and a portfolio with a few projects, joined some online communities, and made open source contributions, I think you are ready to make a resume and start preparing for applications! 

By this point you should have a **solid understanding in the fundamentals** of whatever dev category you have chosen. You should feel comfortable working with your tech stack and **speaking technically** to other developers at an entry level. 

There are many guides to interviews and resumes so I won't go into too much detail here, but try to make your **enthusiasm stand out** from the rest. 

When prepping for interviews you may be intimidated by the level of knowledge some people are telling you to study. Certain companies purposefully use extremely hard coding challenges for their interviews, but I think the industry as a whole is moving away from this method. Unless you are trying to get a job in Big Tech _(which I wouldn't recommend)_, then I think having more **applicable, job-based knowledge** should be enough to get you in the door. 

Being a self-taught developer you will need **someone to take a chance on you**. But once you get your foot in the door, you will be able to **work hard, and prove yourself to be a valuable team member**. 

Most jobs are now remote so you should be able to apply to a broad range of positions **all around the world**. Don't be afraid to take contract/freelance positions with small startups companies. This is normal and while it may not be as secure as a traditional job, it is a good way to get experience.

Here is a good remote workers job board for devs:
* [WWR](https://weworkremotely.com/)

And if you are a bitcoiner:
* [Bitcoiner Jobs](https://bitcoinerjobs.com/#!/index.html)

## 9. Choose a Specific Field that Interests You

For me this was **bitcoin**, I love bitcoin and wanted to specifically get a developer job in the bitcoin industry. By choosing a more niche area to focus your applications, you potentially narrow down the amount of interest from other applicants. You also get to showcase your additional **domain specific knowledge** on the subject market you are applying for, which gives you an edge. 

The development world is vast so you should be able to **zone-in** on a specific area that interests you. Other people will recommend to just apply to as many jobs as possible, but I think if you focus on an area that you are truly passionate about, then you will be even more likely to get a position.

## 10. Don't get Discouraged

The job search may take several months and during that time you need to stay motivated and **continue to code**. Coding is a **life-long journey** and taking a significant amount of time off will likely affect your progress. 

Don't get burnt out, keep your eye on the goal and do not get discouraged when you will inevitability get turned down. If you have put the time and effort in, and know how to code, then it is only **a matter of time** before someone recognizes this and takes you onto their team. 

There might be people who do not believe in you or recognize your skillset and drive, do not listen to them. Always remain **focused and determined** to achieve your goal of becoming a developer.

## 11. Once You Get The Job

**Congratulations on becoming a Developer!!!** Now bust your ass and show the company that hired you that they made the right decision. This is where the real learning starts. After you get real job experience you are off to the races, many **doors will open up for you**. Skilled developers are in high demand and it will remain this way. Don't just be a developer, **be a good one**. 

Being a developer means being a problem solver, use all the resources available to you to solve these problems.

Have fun, stay humble, and enjoy your new found career, you put the work in and **you earned it!**

## 12. Extra Tips and Tricks

Here is some extra info that I found useful:

### Stay Organized

There will be a flood of information that you will learn at the beginning, it's important to **stay organized** to keep track of everything. 

For me this meant creating an extensive bookmarks bar in my web browser. Yes, a bookmarks bar with 100's of links. I have a category for each piece of tech that I use and sub-categories within these. For example, I have an HTML, CSS, JavaScript, React, Svelte, and so on bookmark folder where I keep valuable resources that I can refer back to as I work.

### Get Off the Platform ASAP

In your course you will likely have an embedded text editor to get you started. As soon as you can, start working on setting up your **local dev environment**. This means being familiar with the command line and installing a **text editor** (I recommend [Atom](https://atom.io/)). 

It's important to start getting comfortable and familiar with your local dev environment, **this is your battle-station**.

### Other Guides

There are lots of guides out there for creating a portfolio, resume, interview-prep etc. Check out lots of other guides.

### Get Some Real Hardware

Once you have given coding a try and decided that this is the path for you - it would be good to invest in **proper hardware**. A nice laptop with a good amount of RAM, a good wireless mouse and mechanical keyboard. For operating systems I highly recommend using [Linux](https://www.linux.org/pages/download/). Do some research on different Linux distributions, but as a beginner I would recommend PopOS. 

Also invest in a good chair and **take pride in your coding setup** - you will be spending many hours here, so make it awesome!

### Listen to Coding Podcasts / YouTube

There are many awesome podcasts focused specifically on coding. Find some that you like, and learn while you are driving around, or whenever you have free time. One really good one I can recommend is called [Syntax](https://syntax.fm/).

For YouTube there are also many good channels, one of which is this OG developer sharing some wisdom with us: [Stefan Mischook](https://www.youtube.com/c/StefanMischook).

### Roadmaps

Here's a really cool [roadmap](https://roadmap.sh/) website for many different development career paths. It will look overwhelming at first, but it will feel incredible to look back at this and see **how far you have come**. It is a great way to visualize your journey.

### Get Really Good at the Internet

Understand that a big part of coding is searching the internet for solutions to problems. It is normal for senior developers to search up questions to problems they are facing. **The internet is awesome** - use it.

## 13. Wrap-up

Well I think I have covered the main points that I had in mind and wanted to share. Hopefully if you have read this far that means you found this blog post to be useful. **Thanks for reading** and **good luck on your coding journey!** Just remember that while at times it may feel like an impossible task, you <u>will</u> become a developer if you **just keep trying**.

Take care 🙂

P.S. If you want to find out if you are a real developer after you learn how to code, you can take this [quiz](http://amiarealdeveloper.com/). 😋