Those who are looking to start a career as software engineers or web developers are almost immediately faced with the question of whether they should teach themselves, attend a coding boot camp, or go to university and pursue a degree in computer science. This is also a rather controversial topic of discussion for those that are already established in their careers. The reason is that each of these three methods can lead to success, but there are indeed advantages and disadvantages to each of them. So, instead of telling you what the "correct" path is, I'm going to outline these advantages and disadvantages and tell you the path I took. From there, you can make a more informed decision based on your own personal learning style, what you are actually looking to get out of learning this new field, and other circumstances that are personal to you. My number one suggestion to all new developers though, regardless of which route you choose to learn your craft, is to get involved with your community. Whether that's in class, in the cohort that you are in for the boot camp or on social media and discord channels. Getting involved and networking will save you so much time and allow you to build yourself a nice little support group within that community that will help you learn, grow, and even get a job when you are ready.
What's Your Passion?
First, I want to give a bit of a disclaimer. You have to find something in this field that passionate about in order to really stick with it and become successful at it. You don't have to be a genius, you don't need to be highly skilled in math, and you don't need to be the best logical thinker you've ever met in order to be successful as a software engineer or web developer. That being said, getting into and being successful in this field is NOT easy. It will take some hard work and long hours studying, perfecting your craft and even preparing for job interviews. Make sure you take this into account when deciding to pursue a career in software. Spending thousands of dollars and several years learning something is a very expensive way to find out you don't actually like coding or building and designing software/web applications.
How I Got Started
My path to learning is little of both the self-taught route as well as getting a bachelor's degree from university. I have a Bachelor's of Science in Mechanical Engineering, but no formal computer science training was included as part of the curriculum for that degree. So, when I started learning web development I had to start from scratch. I primarily used Udemy because I could buy full-length 20-40 hour long courses for $10-$20 and even have tutorial projects that I could go back and reference later. I also used a combination of a lot of free resources like YouTube, FreeCodeCamp, and others. I then started building website for friends at a really cheap rate or even free, just so I could put them in my portfolio.
Self-Taught
Now, let's talk about teaching yourself to code. This path can be a bit overwhelming, especially if you are completely new to the field and have no idea what you would actually like to do for work. For example, just within web development, you have front-end developers, back-end developers, and full-stack developers each of which can be broken down even further into more specific roles based on the primary technology or language they use (i.e. Java, JavaScript, Python, React, PHP, etc). If you do already know what you want to do, then self-teaching becomes a lot easier. Self teaching is also the fastest way in my opinion, but only if you are disciplined enough to stick with learning everyday. You can learn HTML and CSS, in depth, in a few weeks. Then you can spend a few more weeks learning JavaScript. So after 4-6 weeks you could be totally equipped to build your own static web applications and host them live for the public to see. In another few weeks you could have a nice little portfolio with a few personal (or freelance) projects. This may not be enough to get you a full time developer position, but it is enough to get local businesses to trust you with building a static website for their business, thus further expanding your portfolio.
Coding Boot Camps
What if you have trouble learning on your own? Well, I will say, you will need to get better at it, because the learning never stops, but there are two other options that require you to do a lot less individual learning. The first of those options is the coding boot camps. The median cost of a boot camp is around $13,000, and they usually take about 16-17 weeks to complete. There are cheaper options like NuCamp here in Memphis, TN where you can take their Full-Stack Web + Mobile Development course for around $2,200 over 22 weeks. There are also more expensive options and options with shorter timelines. Either way, these boot camps are focused on teaching you exactly what you need to know to start a career in tech. Your broader computer science knowledge will not be that of someone who has a degree, but you will know what you need to know to get the job done. It's also a lot cheaper AND faster than going to university. Your direction will also be a lot more focused than if you were to go the self-taught route because you are more likely to get distracted by new technologies and never truly learn any one thing. The special advantage to coding boot camps is that usually they will even help you land your first job after graduation. This may come at an extra fee, but still an advantage either way.
University Degree
Getting a degree from a university is definitely the more traditional way to go. This route will definitely cost more, but it will also provide you with a much broader knowledge of the computer science field. Instead of just touching on everything you need to know for web development, data science, or machine learning it will cover a much broader spectrum of everything computer science. Also, there is a huge benefit to having a degree from an accredited university. Especially because some of the larger companies may require at least some bachelor's degree in a computer science or engineering field. This is a much more popular route for someone who has or can get some scholarship money or grants because the cost isn't as high that way. It is also popular among those that know they want to be in computer science, but don't really know what specific area.
Summary: TLDR
In my opinion, getting a degree makes things a lot easier. Even my degree in mechanical engineering has helped make it way easier for me to land jobs as a software engineer. However, there is something to be said about those who have learned everything on their own. When you find a self-taught developer who has a nice portfolio and really knows their stuff, you know they worked very hard, and they show a ton of passion and commitment. The key takeaway here is the less money you spend on your education, the harder you will need to work to acquire it. The education itself is no different in my opinion. You just have to know how to sell yourself. Whether you are talking with clients or potential employers, it's all about making yourself valuable to them. In the grand scheme of things, it really doesn't matter whether you are self-taught, boot camp taught, or university taught. What WILL matter are your own individual achievements. So if you are just about to graduate high school and have some scholarship money to help with tuition, go to college. If you're 40 with a family and a full-time job, maybe being self-taught or a attending a boot camp is the best bet. Just know that either route, with enough passion, dedication, and discipline will ultimately get you to the same place!