The swift rise of coding bootcamps -- accelerated vocational schools that prepare students to become professional software developers -- has understandably raised concerns about what it means to be a properly trained software engineer. Loyalists to the CS degree believe that these coding newcomers lack the theoretical background to sustain a long-term career in the industry. They also perceive 'bootcampers' to have inferior programming skills when interviewing for developer positions. These claims seem to reflect more on us (programmers) as a culture than on the results that bootcamps are actually achieving -- it's a simplistic way of understanding how many experienced programmers were trained and what approaches will be effective at creating/upgrading the modern technology workforce. Because bootcamps address many of these issues, bootcamp graduates are often better equipped to become lasting developers than CS graduates and will only continue to surpass their CS counterparts.
How Programmers are Made
The idea that university CS programs are taking bright young minds and fashioning them into algorithm and data structure whiz-kids defies the observations of almost any incoming CS student or their instructor. Many CS freshmen enter college already having a passion for computers and likely a privileged amount of access to technology and mentorship. Like myself, they were given computers as children by parents who were themselves close to technology. They have computer usage skills (how to configure your machine, how to fix basic computer problems) and have parents (or tutors) who introduced them to programming. For those without that background, freshman CS can prove very challenging. Not only are they being introduced to arcane ideas and vocabulary, they're competing against the curve with that previous group and rarely given the psychological or instructional support they need to catch-up (Harvey Mudd has done some research in this area and found that separating out these two skill levels at first produces much better results down the line).
The bottom line is that we can't expect to create a scalable and competitive workforce of programmers if we're limiting our pool to only those who have enough passion to survive the weeding-out process common at many top universities. Bootcamps have proven to be much more effective at closing the education to employment gap in technology because bootcamps provide a more holistic type of training that's required to be successful in the field. Bootcamps often focus on group work, pair programming, test-driven development, project-based assignments and empathy/psychology training. Impostor syndrome is a huge problem in the field (even for CS grads), largely driven by the 10x engineer stereotype popular culture has created: The young (male) programming genius writing complex code without needing any help, dropping out of Harvard to build Facebook or Microsoft. How many Intro to CS classes try to address or mitigate imposter syndrome? (Hint: not many)
Theory Versus Practice
The most frustrating and persistent of all the tropes surrounding CS graduates versus bootcamp graduates is that CS graduates are better theorists than bootcamp graduates. Perhaps more accurately we can say that software engineering as a discipline has finally matured and there needs to be two distinct paths just as there are for physicists and civil engineers. While I wouldn't want to traverse a bridge built by a Civil Engineer who didn't understand any physics, there are clearly topics in physics that have very little use to someone who's building a bridge. Culturally, I've seen little evidence that as an industry we've addressed this disparity, and yet many interviews are still two people discussing graph algorithms on a whiteboard.
Another reason I've grown cold towards too much theory early-on is that the magic of a programming education is the sense of empowerment it enables through creation. This learning/application/empowerment cycle is what motivates students and makes bootcamps work so well. It's much more fun for a student to learn a topic like compilers, graph algorithms or database performance when it's applied toward a problem they're currently struggling with rather than simply another part of a four-year theoretical education. In short, I think it's just more fun to place theory onto a scaffold of practice than vice-versa, and computers are the perfect environment for enabling that.
Reservations and Further Questions
However, an endorsement of the accelerated learning model must come with a few reservations. Like CS programs, not all bootcamps are created equal. It is important for prospective students to consider a school's admissions selectivity, the relevance of the curriculum in the industry, and where graduates have successfully secured jobs. Reach out to alumni on LinkedIn and ask them how their classmates are doing in the job search. If you can, visit their campus and see what students are working on. Just because the bootcamp model has been successful for some of the top brands doesn't mean that it works automatically--students need to be diligent in their research and selection.
Students also should understand that the reason bootcamps work is that they provide the ideal environment in which you can do your hardest and best work. Bootcamps provide an incredible learning environment, a tested industry-focused curriculum, and great instructors, but they are very demanding on student time, energy, and dedication. There are bootcamps exploring more self-guided models but the early results have been mixed. It's never been a better time to enter the technology field but it also remains extremely demanding and rapidly-changing field.
The Shortage is Real
There are many times more programming jobs to fill than there are programmers to fill them. Admirable strides are being made in K-12 and college CS education to close this gap but those investments will take years to pan out and fill the shortage of qualified candidates. The bootcamp model of education has proven so valuable that many universities are supplementing their CS curricula with credit-awarding, bootcamp-style offerings. Immersive coding bootcamps provide an innovative and sustainable solution to the developer shortage but also the most compelling path into the software engineering industry. Companies like Google, Microsoft and Facebook down to early-stage startups have woken up to this new stream of talent and are modifying their hiring processes to account for people who are passionate and practical.
As someone who's worked with hundreds of bootcamp students, I'm also incredibly excited by the diversity of background and interests. The next phase of the software revolution will be it's expansion--how software is fundamentally changing so many industries. We'll need people with deep knowledge in the fields of law, social work, government and education to understand the technological tools that are available to them. The software engineering field should welcome this new group and recognize the energy, passion, and external knowledge that they'll infuse into our industry and society.