Even when I was in school—over a decade ago—there was this tension in the Computer Science department between academia and industry. Everybody knew from the dotcom days that the Computer Science major (along with EECS, and even Applied Mathematics and Cognitive Science) was to software engineering as pre-med was to medicine: software companies recruited heavily on campus, while they complained to professors about how their curricula became increasingly irrelevant to the profession.
Nowadays, potential students are coming to the same conclusion, and there’s been the rise of coding bootcamps, focused entirely on building commercial apps to emulate the current startup frenzy. They have enough prominence and student demand to charge MBA-style prices1, which in turn pushes up the need for the means to pay for these schools, culminating in the expansion of the federal student loan program to cover unaccredited coding schools.
They’re probably the closest to what I see as the missing middle ground between complete self-education and a framed college degree. In the past century of work, we’ve somehow lost apprenticeships: paid, on-the-job training which eventually converts into a regular full-time position. Potential employees self-select as apprentices, who care less about the academics of the science of computing, while employers bring on hires who ought to be less mercenarial as they’re receiving education as well as employment.
And this is essentially what companies do when they look for new college grads anyway. All these rigorous technical interviews tech companies employ are a filter for general intelligence and understanding of basic computer science concepts, but everybody also understands that the interviews bear small semblance to actual work. Internships and co-op experience are better indictors of on-job performance, which is why schools with strong industry programs are so heavily recruited2.
So bring back the apprentice! As long as we don’t go down the path of medical residency hazing, it is a good way to solve for our short-term programmer supply problem.