I came across this post today that seems to be making the rounds on the Internet’s great assembly places: Twitter and Hacker News. As someone who graduated from one of the developer bootcamps that the writer talks about, I felt compelled to chime in and offer my two cents. I’m not writing this as an explicit statement in opposition to or in support of bootcamps, but rather hope it will contribute to the necessary and vital discussion about their value to students, companies and society as a whole. And just so there’s no confusion, “Dev Bootcamp” in the title refers to the generic term, not the dev bootcamp actually called Dev Bootcamp (of which I have no specific opinion).
My perspective stems primarily from my time at Flatiron School. I’m convinced that you need to evaluate these programs on a case-by-case basis. Saying that all developer bootcamps are like this or like that is like saying all colleges are alike, and that’s clearly not the case.
TL;DR
Most developer bootcamps that I am aware of are not a scam. As an alumnus of the Flatiron School, I can earnestly say that I would not be where I am today - a professional developer at a storied institution with a great developer culture - without Flatiron. That said, developer bootcamps are not for everyone. They are intellectually challenging, require many hours of work and do not guarantee immediate employment. Anyone doing a developer bootcamp should enroll for the sake of learning the skill set, not to get into the start-up world, not to make a million dollars, not to sound smart and trendy at parties. If you want to do all of those, go into finance for a few years, then jump over to a VC firm (I’m only partially kidding).
Okay, now onto the details.
Are developer bootcamps a scam?
Like colleges, not all developer bootcamps are alike. This is a lightly regulated industry, and my understanding is that few (if any) are currently accredited by an external standards body, and so there is a very real and legitimate concern that some of the bootcamps springing up are less-than-honest about what they offer. Whereas colleges have accreditation bodies to legitimatize the work they are doing (whether that accreditation is meaningful or just a rubber stamp is another debate), programming schools do not, and so the barriers to entry for aspiring dev schools is relatively low.
Yet while there is the possibility of that individual schools are scams, its not fair to cast such a generalization on all developer schools. What this means is that before applying to any bootcamp, do your research. Like any product or service in a competitive marketplace, there is bound to be a dispersion in quality between programs. Talk to alums, speak to people who have hired or worked with alums, go online and read commentary or the many blogs that bootcamp students have started chronicling their experiences (ooh, pick me!). Speaking from experience, I can say that Flatiron School prepared me reasonably well to go forth into the intimidating world of software development, and while I definitely did not know all there is to know about development (who can after 3 months?), I felt confident that I could get a job as a junior developer. Looking back at the sales pitch that they have on their website, I can see elements of marketing speak in what they’re promising, but in many ways, that’s just how the world works (who among us hasn’t exaggerated a bit in our resume). For example, I was disappointed in the amount of Javascript training I got at Flatiron, which, to their credit, they seem to have addressed with a full-time Javascript instructor.
Do developer bootcamps provide the skills necessary to get a job?
Could I have learned development skills on my own? Probably, but that’s beside the point since people can learn a lot of things on their own if only they have the time. Those who know me know that I’m generally a self-starter, eager to learn and explore. The problem, though, is that those motivations often lead me onto various unfocused, wildly divergent paths such that I can spend time one week really into practicing guitar, then the next week really into learning Photoshop or Illustrator and the week after that reading up on portfolio management. What Flatiron did, and what I imagine other bootcamps do as well for their students, was focus my attention like a laser on learning something well enough so that I could continue learning that skill set for a living. In a sense, it got me over the threshold of a junior developer skill set so that I could be self-sufficient and learn indefinitely into the future now that I have a paycheck that supports my code learning habits. If I hadn’t gone to Flatiron, I could have spent many more hours working on learning code but never quite getting to the level where I would have been employable as a developer.
There is a lot (A LOT) that development bootcamps don’t teach you. Then again, these are the things that nothing - not a 4-year degree, not learning on your own, not pairing with friends - can teach you except for a real-life job as an actual developer. Things like writing Puppet scripts that configure servers in multiple environments, optimizing static asset delivery through a CDN or caching system or learning how to balance a desire to adhere to TDD best practices with the need to simply get a feature semi-working so that another team’s workflow can begin. Flatiron did not teach me these things, but I wouldn’t have learned them regardless without an actual job.
What will I learn at a developer bootcamp?
I find it particularly telling that Ruby is the lingua franca for these bootcamps. Coming out of Flatiron, I was a little worried that I would be dismissed as a Rubyist and belitted as a spoiled hacker (“why bother coding? just bundle install a gem that does the job for you”) who didn’t experience the syntactical struggles of a statically typed language, learning code in a social environment intead of by toiling away in a basement alone well into the night. And while I’ve thankfully found my colleagues and fellow developers to be much more supportive and encouraging than I may have thought, I’ve realized that there is more out there than Ruby. Since starting at the NYTimes, I’ve come to realize that the default Ruby stack (Ruby, Rails, Postgres, etc) is just one of many, many tools used in the real world to solve problems. Thus, I made it a priority for me after Flatiron to learn more Javascript and branch out into other languages. I dabbled some in Objective-C and recently have been getting into server-side Javascript with Node and Mongo.
I believe Ruby’s syntax is intuitively easier to grasp for non-technical people than a language like Objective-C or Java (even as a developer now, I’m still bewildered by the syntax of functional languages like Haskell or Erlang), which makes it a sensible starter language for beginners. The danger in this is becoming too comfortable in the encapsulated little world of Ruby and Rails, despite the fact that most software is not written in Ruby. Case in point: I was listening to an NPR Planet Money podcast the other day that mentioned that the American financial system for transferring money via ACH is still written in COBOL (the podcast is great, by the way, everyone should give it a listen) . COBOL! I wonder how quickly the developer bootcamp “bubble” would deflate if everyone started offering COBOL classes. Realizing that Ruby is just one language in the vast world of software helps provide perspective, but it can also be challenging for new developers comfortable with Ruby syntax to branch out.
The relatively simple syntax of Ruby has helped bring non-technical folks into the development fold, which is a great thing, but these bootcamp programs need to convey to their students that Ruby is the exception rather than the rule. And even if you end up working at a start-up that is a Ruby shop, that fact could change over time. At the NYT, we’re starting to add Go into some parts of our platform, and have always been a multi-lingual organization. My team (New Products) and the Interactive News team use Ruby, but the core website is written in PHP, our R&D team writes a lot of Python, our video platform uses Javascript, and many other pieces of software within the organization are written in Scala, Java and good ole C++. What matters more than the actual language is the thought process and problem structuring that is fundamental to being a developer, regardless of language. Practically, this means understanding concepts like composition, inheritance and encapsulation (basically, the stuff in POODR). Whether specific bootcamps teach these universal software patterns well is hard for me to judge without having attended them (personally, Flatiron did a decent job of it, but probably could have been better). The language of choice ends up being an (albeit important) implementation detail rather than the problem definition at large.
What matters most in the face of near-certain change, then, is to be adaptable. For software, this usually means building loosely coupled software components that minimize dependencies and leakage into the global scope, and generally not doing more than what’s required while maximizing space for future changes. For humans, that means being good at learning things. And, ultimately, that’s what these developer bootcamps are for, to produce solid learning fundamentals so that you’re not afraid to continue learning long after the 3-month program is done.
Is attending a developer bootcamp a good idea?
This is impossible to answer with any certainty without knowing a person’s full life circumstances. Can you afford to be without income for the duration of the program plus a few months spent looking for a job? Can you relocate potentially to a new city? Can you get to where you want to be career-wise without going to a dev school? Are you okay spending 60-hour weeks for several months focused on learning a skill set? For me, I believe going to Flatiron was the best choice, for a few reasons.
First, I could afford to live without income for a period of time, mostly because I’m single, my family is healthy, and the biggest recurring expense I have now is a bedroom in the East Village (which, admittedly, isn’t cheap). In developer speak, I had few dependencies that I needed to manage. Second, I had been doing a good deal of Excel work in finance, writing macros, building data models, that sort of thing. I saw a solid Excel skill set as building on the same fundamental problem solving, data structuring and process-oriented skill set that good developers have in spades. Third, Flatiron was in New York, so I didn’t have to relocate, which meant that the rest of my non-work life (i.e., my life) could continue. Finally, Flatiron’s second semester was set to start in early February, which meant I could leave finance on a high note after year-end and jump right into development. I was very fortunate and blessed that the timing worked out well for me, but that’s not always the case. I know of friends that would have loved to have the opportunity to do a developer bootcamp, but they couldn’t for various financial or life reasons.
Coding is a hard skill set to learn, and a very hard skill set to master. Its important not to diminish the amount of effort required to learn how to code, but I’m convinced that effort is more efficient when made in a collaborative learning environment like a bootcamp. I started to learn how to code on my own about 9 months before starting at Flatiron School using many of the online resources and tutorials that everyone is familiar with (e.g., Codecademy). The biggest stumbling block for me turned out to be understanding the terminal, Unix commands, text editors that aren’t Microsoft Word and how the Internet works (a series of tubes!), basically all the stuff necessary to be a developer but is not actual development. Learning through Codecademy left me with a bittersweet feeling; while it was great that I was technically writing HTML, CSS and Javascript, I was doing it entirely in a sandboxed web browser that I knew was not equivalent to building an actual application. Yet if I tried to learn the same front-end technologies entirely on my own for real (e.g., installing all the necessary dependencies, using a text editor or IDE) from the get go, I may have given up due to frustration trying to get my $PATH variable set properly before I even wrote a line of actual code.
What I cannot stress enough is that these programs are not for everyone. Not everyone is meant to be a developer, just like not everyone is meant to be a banker, or a painter, or a doctor. Unfortunately, I feel that what makes coding so alluring now is that it seems like a one-way ticket to the glories of the start-up world, where you can add value to society by solving real work problems while also hoping for a solid payday. But that assumption is dangerous. Most developers are not at awesome start-ups with boundless potential. I don’t have actual statistics, but I imagine that the vast majority of developers in New York are working for faceless corporations like banks or advertising agencies and not the hot new start-up. Therefore, the primary motivation of attending a development bootcamp should be to actually learn to code, not as a pathway to start-up heaven.
Its critical to be honest with yourself and think deeply about whether you are interested in these programs for the sake of the skill set or if you really just want to be part of the start-up scene. If its the latter, that’s perfectly fine, but in my opinion there are easier and smarter ways to do the start-up thing without going to a developer bootcamp. A good thought exercise is to imagine that you come out of a bootcamp and you get a job as a developer (hurray!) but at some unsexy company (boo!) like a mid-market regional bank or an information processing firm (not even sure what that is but it doesn’t sound sexy). Would you still be okay with that? Would your love of code and solving problems in and of themselves be sufficient to get you through the day? If so, then coding may be a good path for you since you simply love solving problems, wherever they are and despite the unsexy-ness of those problems. But if not, then your interest in code may stem more from a desire to get into the start-up world than for the inherent problem solving abilities that coding affords. If that’s the case, then maybe product management or business development at a start-up is a more viable option.
If you don’t know if you want to be a developer, then go and find out however you can. Go shadow a developer, or go check out hackathons or meetups and talk with people that build software. Even if you end up not becoming a developer, I imagine that spending the time before you make a decision either way to understand what developers do on a day-to-day basis will be time well spent. For me, I went into a hybrid legal / finance role out of college in large part not just to find out what I wanted to do, but also to discredit possible paths that I was considering (like law school!) yet had no actual understanding of. Discovering with reasonable certainty what you don’t want to do is in some ways just as valuable as discovering what you truly love, assuming, of course, that you learn from your past experiences along the way.
What’s the value in these bootcamp programs?
I told myself that I’d refrain from quoting the post, but here’s one line that I wanted to explicitly refute:
“The bootcamp model gives you an ‘intensive’ course good enough so that you’re able to build a shitty web app, and then they hopefully place you in a job needing a code monkey.”
If this were the case, I would agree that they would be a scam. The point is not to get you a job as a code monkey, since the competitive advantage developers that come out of these programs have is not that they’re code monkeys, but rather that they’re critical problem solvers that happen to have a technical skill set. If I were looking to hire a code monkey, I wouldn’t hire someone out of Flatiron. I imagine that I’d be more likely to go to a large company and find someone who has had more real-world experience as a developer. However, if I’m looking for someone who can diligently thread the needle between developer and product thinker, or someone who can work with the business/product side to refine a feature request before actually prototyping something, then a bootcamp seems like a reasonable recruiting ground.
The goal of these programs (well, of Flatiron, at least. Its a bit disingenuous for me to group all them together) is to build up developers who are problem solvers that are technically inclined, not just technical problem solvers. Sure, this requires programming ability, but it just as much requires soft skills, like empathy for customer problems and a deep desire to understand how people interact with technology products. In fact, I’ve found that in my experience as both a user and builder of large-scale software projects, there is a gap between the people building software and those using it that can be bridged by those with a technical skill set and a user mindset.
As a developer, I’ll often build software as I imagine users will use them, but then when they actually get their hands on the software, they end up using it in ways I had not even contemplated. This isn’t a matter of who’s right or wrong, but that what’s needed is a conversation between both sides so that the actual problem at hand can be addressed. When I worked in finance as my team’s business liaison to the tech team on an enterprise software system, I often saw frustration on both sides that often emerged from a tendency for tech and business to talk past each other. The hope that the people who run Flatiron have for their students is that they can find careers in the chasm between users and builders of software products. For me, Flatiron did a great job in that regard by helping me build the technical skills to actually solve problems.
The desire to be a developer for the rest of your life is not a prerequisite to determining whether it would be a good decision to attend a bootcamp. Personally, I’m not even sure I want to be a developer for the rest of my life. I went into finance thinking I would go to either law school or business school, and I still haven’t entirely ruled out business school (I have ruled out law school). What I do know, though, is that I do want to practice problem solving for the rest of my life, and it just so happens that the best way to solve the problems of this globalized, information-rich world is to have a developer’s skill set. But even if you don’t want to be a developer for life, you should hope to be a developer for a few years after a bootcamp experience in order for the skill set to really sink in. 3 months is not enough to really, truly know a skill like coding, but I believe it is sufficient, if executed properly, to set someone on the path where they can continue to learn code for a living and be a lifelong problem solver.
Okay, I lied. One last quote from the post:
“These bootcamps then train their hopefuls to pass these [technical] tests by drilling them with engineering questions over and over.”
I’m not sure how other programs are structured, but Flatiron definitely did not teach in this way. In fact, it was the opposite. The last week at Flatiron, our instructors gave us the heads up on computer science weed-out questions that we might get in a technical interview (e.g., what are linked lists? compare/contrast a bubble sort versus a merge sort, etc.) as something of an afterthought because they correctly realized that those questions have little to do with actual programming ability, but that in a world of imperfect interview processes, we were likely to get them. Thus, instead of training us to answer those silly technical questions as a way to get the job, Flatiron taught us to know enough to get past those questions so that we can move onto demonstrating our actual programming skills. The instructors didn’t want us to get jobs because we could fake our way past some inane technical questions; in actuality, they wanted us not to be disqualified by those questions so that we could get the job based on actual skill instead.
What should these programs charge?
Sure, I would love it if these programs were free. But I’m also willing to pay for a good education. Talented, honest people eager and able to help train good developers should earn a decent living doing so, since the quality of education I get will likely be better than what I can find online in that its more efficient, more social and generally more enjoyable than learning entirely independently. Whether that break even point is $4,000 or $16,000, or whether the best tuition system for aligning interests is a recruitment fee paid by or a flat fee, is entirely up for debate, but I do think that there is value worth paying for in having a structured program led by talented developer-teachers.
The thing that worries me about these programs is when they try to grow too fast and increase their tuition simply as a way to balance supply and demand. In any economic process, bubbles occur when there is information asymmetry between buyer and seller, and prices spiral upwards as herd behavior leads buyers to perceive value in an asset in excess of its intrinsic worth. I hope the increasing demand for these types of schools instead leads to a refinement of student quality rather than just an increase in price. Meaning that those leading these bootcamps become more critical and aware of what makes a successful developer rather than just seeing dollar signs in each eager-eyed student that shows up at their doorstep.
And as for those marketing pitches that promise an $80K to $90K starting developer job out of the program, they need to stop. Not because they’re not true in that many people do get solid, well-paying jobs out of these programs, but because that’s not the reason people should be attracted to the programs in the first place (Flatiron School does not make such a promise after graduation). Do not go to a developer bootcamp for the promise of riches at the other end. If you want to get rich, there are easier ways to do so than through developer bootcamps. If you’re smart enough to be a developer, you’re probably also smart enough and have enough hustle to get into high finance, where you can make more than you would as a junior developer when bonuses and all that is factored in. But from my experience, being a developer is more rewarding than working in finance, in all the non-monetary facets that are way more important. Facets like job satisfaction, work-life balance and professional culture. Countless studies show that happiness and money lose their correlation after an annual salary of $70,000 - $80,0000, which can buy the basics with some left over for savings in most cities (if it can in NY, then it probably can anywhere). What matters most to happiness after that base salary level is professional fulfillment, and, more importantly, solid relationships and community.
What I fear is that the “start-up cool” factor that seems to float around these bootcamps will lead them to emphasize creative marketing or add “instructors-at-large” to the payroll that give off the air of legitimacy without providing real, underlying value to students. I liken this latter phenomenon (which I sense is starting to happen but I’m not entirely sure) to how top-flight universities might pay a lot of money to snag a well-regarded research professor that, while smart, is not actually a good teacher and doesn’t spend time with students. You shouldn’t have to sell an arm and a leg just to learn how to code, but if you want a guided, structured experience, it makes sense that you would be asked to pay.
At the end of the day, these bootcamps need to be judged individually, and any person interested in attending needs to consider the question in the context of their own personal circumstances. Evaluating the value of developer bootcamps depends mostly on how you take advantage of the opportunity as a student.
…and for the record, I do not besmirch the finance or legal professions. I live with two law students as roommates and have many friends who work in finance. I just think software development is better. :)