05/23/2014 03:43 pm ET Updated Jul 23, 2014

The Solution of Hacker Schools

Adam Milligan wrote a post yesterday called "The Problem with Hacker Schools." In it, he questions the value of programs like Flatiron School, of which I'm the founder and dean. His arguments revolve around our immersive model, where students learn one thing - how to build web applications - all day every day for 12 weeks.

After reading and re-reading his post, it isn't entirely obvious to me where we disagree, except for that it isn't the traditional path to a career as a developer. Let's talk about that before we address the questions he raises. How do people become developers?

1. Traditional Computer Science Education

You got to school and majored in computer science. Your entire education was front-loaded. You learned almost every concept in computer science, from functional programming, to object orientation, to distributed computer, to operating system design, and a lot more. You spent four years doing that, studying the material, passing the tests. If you were self-motivated, maybe you even shipped some actual software into the real world, but that wasn't a course requirement. It is entirely possible that you got a computer science degree and never wrote a piece of software that had a user, that existed in the real world. If you were well connected and knew how to network, maybe you even got an internship at a software company one summer. But the point is, there was no formal requirement in the majority of CS programs that required you to actually ship software. After spending $100,000-$250,000 and four years, you then started a job as an entry level developer somewhere. If you're lucky enough to work at Facebook or Google after college, you might have made $120,000 starting salary. For most other places, you would have made around $75,000. On that first job, you would have learned a lot about how to actually ship software, how to use frameworks, how to work in teams, and how to contribute value.

2. Self-Taught

The other way to become a developer is to start teaching yourself. It's the path I took. I started learning to code at 11. Throughout my life I constantly pushed myself to ship products. I built a blog engine in High School (because none existed) and learned PHP, CSS, Javascript, and SQL. I spent the summer of my sophomore year of high school responding to want ads in the paper for programmers and eventually landed a job at I learned ASP there. I spent almost every weekend in high school alone in my basement struggling to learn how to code. I read every programming book I could get my hands on, often reading entire books in the stacks of Barnes and Noble over the course of weeks (I couldn't afford to buy programming books). This was easily the darkest time of my life.

Learning to code in this trial-by-fire manner was devastating for my social life and my emotional health. But it led to something pretty amazing.

In college, where I studied creative writing and film, I also contracted for a hedge fund. My sophomore year of college, I wrote and sold them an Investment Management System that tracked average outcomes of personal injury settlements and collected data for them to invest in personal injury loans. Three months after that, they offered me a full time job and I dropped out. A year after that I was promoted to Chief Technology Officer. I learned a ton working at the hedge fund. I built a VoIP call center using something called Asterisk. I built a national advertising campaign manager that tracked over a million dollars of ad buys over radio, television, and the web. My software managed over $100,000,000 invested in over 20,000 lawsuits. I managed a team of engineers, all of whom were older than me and had college degrees.

After four years, I left the fund. I was 24. I had zero debt. I had a good amount of money saved. I shipped more software then I can remember.

The problem is, learning to program is too important for two myopic paths to be the only ways. There have to be more ways to learn to code. The entire world needs to learn this stuff. It's important! Two paths are not enough - people are different. That's what we're trying to build at Flatiron School. An alternative that speaks to a broader audience and is as effective.

There should be a path to these skills and career that doesn't require you to go into massive debt by front-loading your education with a bunch of stuff that you may never need, might be outdated by the time you do need it, and more likely, will have decayed in your mind by the time you need it so you'll have to relearn it anyway. And it doesn't even guarantee you are hireable or can actually build things the market values.

There should be a path that doesn't require you to take a massive risk, sacrifice so much of yourself, work hard enough to create an opportunity where someone will pay you to learn more, and then just keep your head down and code code code until you're good.

That's Flatiron School. A way that is engaging and exciting, that is filled with community and collaboration, with a curriculum that directly address market needs for entry-level developers. Our expectation of our graduates is that they are life-long learners, and that they will develop mastery over time, just like everybody else, just like Adam says.

So now onto the questions Adam raises in his post.

1. Do students actually learn to code?

Yes. They build things with code. They ship software.

2. Is our program more effective than traditional programs?

Well, it is a fraction of the cost with a fraction of the time with better results. We have 99% placement with average salaries around $75,000.

3. How will this affect the overall level of talent in the software development industry?

This is an interesting question. Adam discusses the need for more mentorship. He says that we need more senior developers to mentor all these junior developers. This is a classic chicken egg. How do you think senior developers became senior developers? Certainly not via a traditional computer science degree, but rather, as Adam says, through being a junior developer working on teams with senior developers. We make junior developers. Pivotal Labs, where Adam works, has a lot of senior developers. This seems like an obvious solution to his problem. Pivotal Labs should follow the footsteps of other forward-thinking software companies that have apprenticeships, like 8th Light, and all of our 100+ hiring partners. Pivotal Labs should hire all of our junior developers and pair them for a year with their senior developers. That will ensure a vibrant community where knowledge is transferred and shared. Adam, please contact to be part of the solution.