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 such as data structures and algorithms will be well-covered in most CS or software engineering programs, giving recent college graduates an advantage on the interview process by having these frequent topics fresh on the mind. If you're reading this and in high school, you should strongly consider college a top option. Also, having a degree can make the process of finding work in a different country less of a headache.
What's the downside? Plenty, as it turns out. College has gotten extremely expensive over the years, making it easily the most expensive way to learn to code. 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 instead of 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 a university. The intense pace, schedule, and practice working with others will be an 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 or more hours a week for 3-6 months. Because of this, you need to drop basically EVERYTHING when attending bootcamp, and forgo income for that time. Another theory that's likely (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 to code 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. The 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.
After some online experimentation with sites like Code Academy and Treehouse, I enrolled in a web development program at a local community college. I never finished college when I was younger, so I wanted the legitimacy that a degree would lend. What happened was that while I did learn some useful things while I was taking classes (SQL, Linux) and had some surprisingly great elective courses, the core curriculum was very dated. How dated? Flash was still listed as required material, and the most recent tech in that curriculum was jQuery.......in 2016. Adding to that the costs of tuition, lack of class availability and difficulty in scheduling, and I knew I had to find a better way. Boot camp was laughably out of the question because of my financial situation, so self-taught it was.
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 skill set 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!