Payday loans are small, short term, unsecured loans that can provide a borrower with quick cash in exchange for a fee that is far more expensive than a traditional loan. While ostensibly for one-time or infrequent shortfalls, the majority of borrowers use these loans for normal expenses, which can lead to a cycle debt while enriching the lenders. For-profit code schools are software development's version of this model.
Proponents argue that payday loans serve a need. They can provide emergency money and, being unsecured, the borrow does not risk losing their car or other hard valuables. However, fees for missed and delinquent payments cumulate, further pressuring a large percentage that use these loans to cover for recurring and common household expenditures. The end result is a cycle of indebtedness and dependency on expensive forms of credit.
Most people going through a career change do not have thousands on hand, so in essence the promise is the same.
Code schools also serve a need. There are plenty of people stuck in dead-end careers and the world continues to need more programmers. In exchange for 12 dedicated weeks of time, and thousands of dollars in fees, the code schools will instill enough practical skills to earn the attendee a job in technology. Not mentioned is that most people going through a career change do not have thousands on hand so in essence the promise is the same. Take this debt one time and your problems will be solved.
The real long term risk for the attendee is the hyper-emphasis on "practical skills." While useful for landing the first job, anyone that has been working in technology for more than a few years quickly comes to understand how short a shelf-life practical skills have. Today's hot technologies will only be suitable for dinosaurs tomorrow, and those that only know the specific technology will struggle to find a job. Hopefully they paid down enough of their initial debt to to take on a new round for the next buzz-word compliant tech class.
Employers are not blameless
In both cases it is also fair game to take employers to task. Payday loans (you have to have a job to have a payday) are a necessity for some because employers do not feel market or regulatory pressures to pay a living wage. Code schools can place candidates on practical skills because too many tech employers look to employ skills, not people, as is witnessed with the traditional whiteboard interview.
Someone looks to code school to learn how to write AngularJS, gets a job writing AngularJS, and then gets spit out when the company starts their React initiative. Nowhere in that process did anyone take the time to teach the most valuable lesson: the key to a good career in technology is learning how to learn about tech.
The key to a good career in technology is learning how to learn about tech.
This cannot be learned in 50 - 60 days of intense classwork, multiple frameworks, environment issues, and class projects. There are, however, two silver linings to this cloud. The first is that a four year degree from a rigorous program pretty much teaches this skill. The second is that some of the best developers out there have had very little formal training, so learning this on one's own is very possible.
The better code schools do understand this and message appropriately. It's the second tier that takes advantage of the naivety and promotes an unrealistic ideal.
Careers in software development are worthwhile
The hidden reality of code schools, and the reason they are popping up like wildfire, is that learning to code is a low-entry cost activity. All that's needed is access to a reasonably recent computer and the internet. Almost every major language has complete documentation, online, for free. There are hundreds of sites with courses and tutorials available for free. If one desire something more curated, most programming books are less than $50, so not free but also not expensive.
Almost every major language has complete documentation, online, for free. There are hundreds of sites with courses and tutorials available for free.
There's value in the peers that come from the classroom setting, but once again any major metropolitan area will have a collection of meetups for all the popular languages, frameworks, and methodologies. There will inevitably be a few groups and events targeted for the benefit of total beginners that are staffed by very friendly volunteers with incredible patience that just want to help someone get going in the right direction.
If there is a code school available nearby, these groups are guaranteed to exist. A vibrant community that includes beginners is a strong sign of the demand that the code schools seek to supply. They can't make money teaching to an empty classroom.
And while we're on the subject of logical conclusions, what don't you normally see in a code school class? Experienced engineers looking to develop new skills. That's because there are a lot more cost and time effective ways of learning this stuff, all the way from the resources mentioned above to being paid to teach a code school course. The bottom line is one cannot build a successful career being dependent on paid-for classroom instruction.
What am I going to do about it?
It's one thing to write a blog post with a click-baity headline. It's another thing to call out employers. It's a third entirely different thing when you have to admit that you are an employer and should at least attempt to provide a solution.
The first step is to realize that junior developers aren't inexpensive versions of senior developers, but people that are going to require help and space to learn. For new college grads, this might be walkthroughs on practical things like Git and IDE's. For code-school grads, it's filling in the gaps in the fundamentals pertaining to the hows and whys of the languages they use. This also makes business sense since having a better understanding will increase the productivity of the team.
A second, much more difficult step, is that I would like to start identifying people that have learned enough on their own and just need a little help connecting the dots to be "employable." We already have a repeatable process to set up an environment, an onboarding program, and tasks separated out by difficulty. I have a hunch, currently unproven, that both the company and the person would be better off with 12 weeks of "this is how we build software with AngularJS/Ruby on Rails/Whatever" rather than what the code school thinks is important.
Code schools market themselves as a jump start for a career in software development. A lot of people have had success, but this is not universal. The biggest risk is falling in the middle, where code school does just enough to justify paying for more code school. Just like payday loan vendors, code schools benefit greatly from this cycle of dependency.