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
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.
Coding Bootcamp
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.
Self-Taught
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.
The self-taught route has some significant disadvantages that come with its powerful advantages. The student bears all responsibility for curating their learning material, staying on-track, and evaluating their progress and adjusting their approach as needed. There are plentiful opportunities to get distracted by the width and breadth of technologies to learn (looking at you, JavaScript!), and to get overwhelmed by that. They have to work much harder to ensure that there aren't large gaps in their knowledge that more formal education would have provided. They will have to put more effort into marketing themselves to compensate for the lack of a degree or bootcamp program when looking for jobs. It can be isolating and lonely for those that don't seek out a supportive community like freeCodeCamp or Dev.to.
Why I ultimately choose the self-taught route
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.
Which is best for you?
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. I hope to see you here in two weeks when I'll be discussing the qualities that enable success for self-taught developers!
Top comments (7)
Awesome summary, thank you. On top of further education, boot camps and self teaching, another route which I have found people have taken is using these graduate level apprenticeships. You’ll leave School, and straight out of school have an apprenticeship as a software dev, and they can start to be trained on the job. Certainly the few that I have spoken to who have opted for this route were absolutely delighted by the opportunities and experience it had given them so quickly after school. Anecdotal, but seems positive!
We are so lucky that there are so many possible routes into our beloved field, so people can find the right route for them. I’m excited to live in these times. I chose university, but I am regularly doing talks in High schools explaining that this is not THE path in, but rather is A path.
For sure! There is no "one size" here that is always best, just what works best for your circumstance!
I got lucky being self taught. My technical training in the military in electronics set me up, electronics gates translate well into binary thinking. After my time in the Navy I tried going into college with family and full-time work it was extremely difficult. On top of that as you mentioned I was learning faster with books on my own, so college was no go for me. Working in Industrial automation software it really open my eyes in the software engineering world. It does take more effort being self taught but at the same time you can do whatever you want and there's a ton of information online.
Self-Taught: Good for flexibility, staying current, low cost. Bad for clear structure and guidance.
I love how the start-up scene in my country is providing avenues for more self-taught individuals. I find that structure and guidance can be provided by the right employers and/or by the right teams as long as they knows where you're coming from.
Also one other plus for self-taught developers, I believe they are also very self-motivated!
Agreed! If you can make it the self-taught way, you can do pretty much anything. It's been hard, but that difficulty has definitely gone into making me a better developer.
Most should teach you both, as a Computer Science is theoretical. My debt was nowhere close to $70k, not even half of that. Although I do agree, the demand for developers greatly surpasses the throughput of college CS grads.
A four year degree will help you understand what / why you're writing certain pieces of code, and also help with problems you may be having.
Not saying you can't achieve these by yourself / with a bootcamp, but a deep dive into computer science theory is extremely helpful.
Thats fair, but thats a matter of doing research first, no? Web development was an elective at my college and was fairly arcane as well, learning jQuery, PHP, etc.
Agreed, all developers should spend time with CS basics, and at the very least understand the data structures available to them, and how understanding the strengths and weaknesses of those structures helps them write better code.
As for research, I had been assured before signing up for the program that Flash and other deprecated technologies like .NET (YMMV on how deprecated that is.....) were being struck from the curriculum and replaced with newer tech, but 2 years later, ¯_(ツ)_/¯ was the only answer that the dept head had for me. Even with more updated curriculum, I would be deeply skeptical of most traditional college's ability to teach web development well. Software engineering is another matter since the tools don't move as fast.