Disclaimer: I have no background in education. I’ve just been a programmer for 7 years, interviewed & hired programmers, and care about the future of the industry.
Today, to break into software development you have two main options, a 4 year degree or a 3 month bootcamp:
The CS degree is expensive, long, and gives you a “deeper” background 1. The bootcamp is 12x shorter, comparatively cheap, and aimed at getting you a job by getting you coding small projects in modern technologies.
Because it gives you > 0 experience, the bootcamp is often comparable to a CS degree in interviewing for entry-level jobs! CS majors have a slight leg up over bootcamp grads, but hiring managers I’ve talked to say bootcamp grads are more motivated, and they expect to have to teach new developers a lot anyways.
Aside: The best possible option (if you can get it) is a CS degree with a co-op program. Coop grads are consistently the highest quality grads I’ve seen. They have it all: a solid foundation, but also three to four ~6 month stints in industry. They’d be in the top-right of this diagram.
The CS degree teaches a solid foundation and covers a lot of ground, but not the skills that the programming job needs. The bootcamp give you more real-world experience building projects and using tools of the trade, but it’s extremely short and usually requires a lot more learning and hustling afterwards. Why are the only options 3 months or 4 years?
What could an ideal program look like?
Let’s consider “vocational” training, ie training that is meant you get you a job. Bachelors’ degrees happen to do this, but that isn’t their goal (nor should it be). What would the ideal learning program be for people who want a programming job?
It would definitely be longer than 3 months. Bootcamps are only that long because that’s the amount of time career switchers feel like they can take off work. 1-2 years sounds reasonable: people often do 2 year master’s degrees to switch fields. It’s not out of this world.
Let’s keep the 8hrs a day schedule of a bootcamp compared to the more relaxed “15 hours/week of lectures, theorically 30 hours of work per week” aspect of university. The 8hrs/day version is more focused and parallels better what it’s like to code from 9 to 5. I’d wager that by switching to this schedule and removing the electives you could significantly accelerate the required CS material of a 4 year degree, possibly into a year. For example, Scott H Young taught himself the entire MIT CS curriculum in a year (including electives) 2.
Let’s also assume that we are helping people get jobs building websites, and not embedded, numerical, or algorithm heavy software. (We could run this thought excercise for those subfields separately). The vast majority of tech jobs are in website/app building and bootcamps already make this assumption. We could easily cut half of the material in a CS degree and replace it with actually useful skills to web development.
Pardon the reductiveness in these diagrams, but if a college degree and a bootcamp look like this:
Let’s ignore some of the theory and instead teach the skills I teach juniors every day:
Bootcamps today might cover one or two of these topics, but they don’t have time to fill out the set.
The skills I’d teach aren’t especially at the language/library/framework level, but instead about “what goes on around the code”. A typical junior dev thing to say when you point out a minor inefficiency is “let’s spend two weeks implementing this nifty algorithm I learned in school”, not realizing that the implementation cost would be $10k to save $5 a month in cloud computing costs, and the better answer is “bump the number of retries from 3 to 6, we’ll revisit in 6 months if it gets worse”.
Both bootcamps and CS degrees lack the entire minsdet around the Software Development Life Cycle: code review, monitoring, prioritizing, etc. I believe you can teach these pretty quickly because I teach them every day to junior devs.
You couldn’t build up “true senior devs” and there would be skills you can’t teach, like how to disagree with a coworker productively or communicating about tricky code. But you’d be able to show students more hard cases compared to a bootcamp grad only being trusted to churn out simple components for the first year and half of their professional experience.
Conclusion
I’ve sketched out what some features of what a vocational web dev program could look like, but honestly I have no clue if it’d be feasible over the all dimensions it would need to be to succeed. I’m just pointing out a gap. The longest bootcamp I found online was HackReactor’s 19 week program.
I used to want to build something in this Missing Middle by starting a consulting company consisting of ⅓ senior+ devs and ⅔ entry level employees, with the explicit goal of bringing experience and mentorship to the junior devs. The senior devs would be there to set up the learning tasks on real projects and to step in if anything got too hairy. I don’t have the network nor the attitude to constantly sell projects to clients, but would be interested in hearing from you if you are trying it.
What other possibilites exist in this Missing Middle?
-
It’s about a mile-wide and an inch deep, but at least you learn what a DFA is. ↩︎
-
Scott says he worked 60hrs/week at the beginning, then 35hrs/week later, but he took electives and graded his own work, two things we could remove in my scenario. Looking at another example, the CS major I took was only 63 credits, which is 4 semesters of a normal 15 credit courseload without electives. That’s 16 months of 30 hours/week, so I think you could handwavingly crunch that to a single year at 40hrs/week. ↩︎
comments powered by Disqus