Structured vs self-paced
One of the first decisions you have to make as you decide how to become a developer is what sort of education fits your learning style best. If you're someone who needs a very rigid structure and accountability to keep you on track, you might benefit from taking classes taught by an instructor where there's assigned homework, etc. These might be through a university or some other more formal education program.
On the other hand, if you don't have as much time to invest in a traditional education process or feel more comfortable setting your own path and keeping yourself accountable, there are a ton of free resources on the internet that you can use to pick up skills.
A brief aside about coding bootcamps
Over the last few years, there's been a huge rise in coding bootcamps that say they will make you "job ready in 12 weeks" or make similar claims. Although my only experience with coding bootcamps is through mentoring developers that went through one, I generally find them to focus on too many different topics and only give students a surface-level understanding of each.
If you have the time to dedicate to going to a bootcamp, they can be a great start, but be aware that they are likely by no means the end of your learning and that you'll get the most benefit using them as a general introduction to the industry.
Where to start
That said, once you've decided whether you want to pursue something self-paced or more structured, there are more than a few options available to you.
Before you get started, it's best to have a roadmap of generally what you're hoping to learn. That's where Roadmap.sh comes in. They have dozen of roadmaps for all different areas of development, which give you a list of topics/areas to investigate and learn more about depending on what type of development career you are pursuing.
For example, their Frontend Developer roadmap takes you through everything from a general primer on how the internet works at a technical level, HTML, CSS, JS and much more. This is a very comprehensive list and you shouldn't attempt to tackle it all at once.
However, I would suggest pairing this with something more experiential like freeCodeCamp, where you can take on specific topics and earn certifications around things like Responsive Web Design or Data Visualization. These certifications require you to complete actual projects, which is where you'll be able to apply the theoretical knowledge you've gained going through Roadmap.sh.
While I wouldn't say these certifications are something that you should lean on too heavily on your resume, the experience of building real projects will be invaluable. I've always found that "learning by doing" is the best way for newly-learned skills to really become solidified in my brain.
One, somewhat fun, way to do this is through some of the development-oriented games that exist online. For example, Flexbox Froggy and Grid Garden help you understand flexbox and CSS Grid, two very powerful tools for front end developers.
A more formal path
If you decide that you'd rather learn in a more formal setting, there are more than a few cohort-based classes and options where you go through a set curriculum with a group.
One example of this that was very popular in 2022 is the #100Devs program. It pairs structured knowledge and live classes with a community (run through Discord) and encouraged sharing of struggles as well as successes publicly to help developers go from no coding knowledge to employable.
The one caveat about the 100Devs program is that from the website it seems uncertain if the program will be run again in 2023. However, all the previous classes are available on YouTube and would be very useful for providing structure for your learning. And you could create your own cohort by finding a few people who want to go through these videos with you.
Show your work
No matter which path you choose, something that will be invaluable to you as you start the job search is showing your work. There are a couple different components to this:
- GitHub account - GitHub is often referred to as the "social network for developers" but more accurately, it's a place where you can both host and share code that you've written. As you start looking for jobs, potential employers will want to look at your past work and will often ask for your GitHub profile to do this.
Sign up for a GitHub account and use it as you build personal projects and experiment with different programming languages and concepts so that in the future, you'll have plenty of options for code to share with employers.
- Publish your projects - You'll take on plenty of small projects over the course of your coding career. The most important thing is that you share the ones you are most proud of with the world! Tools like Glitch and Replit make it sure you don't have to worry about servers or any of the infrastructure concerns of hosting your project and giving it a real live home on the internet.
- Personal website (optional but recommended) - Outside of GitHub, having your own personal website (much like the one you're reading this on) is a great way to be able to put all of your content in one place. This could include links to projects you've built, blog posts that you've written about things you've learned (another great way to "show your work"), your resume or anything else that might be relevant to share about yourself.
There are a ton of options for choosing what technology you use to build a personal site (you could even use this as one of your projects as you're learning), but the important thing is to not get too distracted with deciding specifically how your site is built and just get it built. It can (and will) be rebuilt as you learn more and grow your skills.
Find a community
Regardless of whether you learn best at your own pace or with more structured coursework, having a community of people around you to inspire you, help you keep going when you get discouraged or to give you guidance on specific coding problems or career decisions is immensely helpful.
Whether this is a more formal community like #100Devs, a local community like the Chicago Tech Slack team (where all sorts of people in tech around Chicago gather to discuss various topics), or just being active on a social network like Twitter, it's important to develop your community so you can learn from others but also share the knowledge you're gaining as you develop your skills.
With so much to learn and the development landscape always changing, you'll never have all the answers. Asking questions of those more experienced than you either directly (through the community you've joined) or through a site like Stack Overflow will help you get unstuck, learn something new and continue to develop your skills.
When asking questions, it's important to ask as focused and thoughtful of a question as you can, to help people help you even more effectively.
This will take time
While there are plenty of resources out there, it's important to understand before you start that becoming a developer and even working as a developer is an ongoing process. There is always more to learn and interesting new technology that is coming out. The best developers are always open to growing their knowledge and their skills. This is at the same time, one of the most exciting and one of the most daunting things about this field.
Is there something I didn't cover in this post that you have a specific question about? Feel free to email me and ask away. I love talking with new developers and helping them get started along the same path that I've been on for more than a few years now.