January 25th, 2019
Welcome to the second official entry of the Self-Taught Developer's Survival Guide! Today I'm going to compare and contrast the major methods of learning how to code, and how to discern which method best fits your situation.
College can obviously open a lot of doors for you. There are still companies that won't even look at a candidate without a college degree, and if you have a degree from an institute like MIT or Stanford, you're going to turn some heads. Computer science basics like data structures or algorithms will be well-covered in most CS or software engineering programs, giving recent college graduates an advantage on the interview process, since these topics can come up frequently. If you're reading this and in high school, you should strongly consider college a top option.
What's the downside? Plenty, as it turns out. College has gotten extremely expensive over the years, making it easily the most costly to learn coding. Something else that has happened to college over the years is that it isn't the walled garden of knowledge that it used to be. The internet has clearly democratized lots of information, and that makes it hard to justify shelling out for even community college tuition, let alone the $70k someplace like Harvard would cost. Compounding this is that most CS programs have curricula that are fairly dated, and prepare students more for the theoretical aspects of CS versus learning how to code well. This gets even more skewed when you consider the rapid pace of web development, something academia can't begin to keep up with. Finally, there's time: while it's pretty feasible to attend classes online/part-time while working full-time,it's going to take a while, even if you're just getting an associate's degree.
The explosive need for coders and the time that getting a college degree takes led to the rise of the coding bootcamp. Bootcamps definitely excel at several of college's weak points at teaching coding. For one thing, the curriculum is more focused on material that's more directly useful in production environments, and that curriculum is more current than what you'll find at university. The intense pace, schedule, and practice working with others will be invaluable experience. Bootcamps often have agreements with tech employers, and other valuable networking resources. If you are transitioning from another career (like medicine or law) and you have a good amount of disposable income sitting around, this is arguably your best option.
You probably noticed that the key demographic to benefit from bootcamp that I cited above was very specific, and here's why: bootcamps can cost a lot of money, and they have the most rigid time requirements of all the options listed here, often 40 hours a week for six or so months. Because of this, you need to drop basically EVERYTHING when attending bootcamp, and forgo income for that time. Another theory that's probable (but difficult to definitively prove) is that bootcamps fluff their job placement rates after graduation by selectively admitting only candidates that demonstrate sufficient aptitude to learn coding and get a job without the help of a bootcamp. Because of the intense time and money investment, prospective students must vet programs very carefully. I suspect there are more good than bad bootcamps, but a college degree from even a mediocre school is more generally useful than graduation from a bootcamp, at least from the perspective of some employers.
Teaching yourself how to code has some strong advantages over college and bootcamp. While not as fast as bootcamp, this route is drastically faster than college, and a lot cheaper. This path affords the student the most flexible and up-to-date curriculum. Flexibility of schedule is perhaps the biggest advantage, and what makes it the most attractive (or only) option to many adults who want to switch careers. This is vital to those who can't afford the time, schedule or money investment that college or bootcamp requires. Something like one-third of programmers are self-taught, so you would be in good company.
Clearly, there are a lot of personal factors that go into deciding which method of programming education is best for you. The cost of college might be mitigated by an employer that offers free tuition, or the lack of guidance present in the self-taught path could present problems if you have a hard time learning without a concrete path. The TL;DR looks something like this:
College: Good for legitimacy in job searches, CS basics. Bad for cost and time efficiency.
Bootcamp: Good for teaching a skillset that's genuinely useful on the job, networking, getting good fast. Bad for ease of scheduling and for cost.
Self-Taught: Good for flexibility, staying current, low cost. Bad for clear structure and guidance.
I hope this helps you out if you're been trying to decide which learning method is best for you. For more discussions on this subject, freeCodeCamp founder Quincy Larson breaks this down quite nicely on an episode of the Engineered Truth YouTube Channel, and John Sonmez does an in-depth look at these paths in his book The Complete Software Developer's Career Guide. I hope to see you here in two weeks, when I'll be discussing the qualities that enable success for self-taught developers!