The Importance of Software Apprenticeships

Addressing social responsibility in the field of software engineering

Rockets launching

The tech industry deserves a harsh slap in the face. While it professes to value “diversity and inclusion,” it continues to require a credential that has an average cost of $127,000 as a prerequisite for employment. Simultaneously, the institutions that issue said credential abandoned their primary mission of innovation in favor of outputs. Of course, I’m speaking about the American university system and its partnership with corporate America. Big tech is addicted to a system that produces poor outputs at obscene cost, and this cost is a barrier that millions of people can not overcome. If we want to increase the accessibility of careers in software engineering, the first domino to fall must be the cost of entry.

Student debt is a serious issue in the United States, reaching 1.4 trillion dollars in 2019. It is the second leading category of debt in the United States, second only to mortgage debt. The vast majority of people taking on this debt are between the ages of 18–29. While government-backed loans represent the lion's share of the credit source, the second largest is credit cards, followed by home equity lines of credit. These latter sources are hazardous and much harder to pay off. Parents often find themselves risking their homes to put their children through college. In fact, computer science undergraduates have the highest drop out rates. Coupled with big tech’s love of the most expensive places on Earth for their corporate headquarters, the average CS graduate can expect to be counting pennies and sharing apartments for a large part of their young adult life. A first-year CS graduate's average salary is roughly $68,000, basically at the Bay Area's break-even point. In point of fact, it will take the average college graduate ten years to pay off their student loans. It will likely take an equal amount of time to climb the pay scale as companies in the tech sector consider graduates almost unemployable for the first three years.

As someone responsible for cultivating talent at my organization, I can personally attest to just how woefully prepared CS graduates are. Our open positions generally have the words Software Engineer in the title, not Computer Scientist. When we need scientists on staff, the requirements almost always include a doctorate in math or computer science. Two years of concentrated study with abysmal knowledge retention doesn’t qualify you as a subject matter expert in anything, much less scientific research. This should underscore how systemically broken our current engineering pipelines are. By requiring a degree in Computer Science, we do three things:

  1. Issue the wrong credential to associate software engineers
  2. Betray the mission of the university by focusing it on outputs instead of innovation
  3. Erect a financial barrier to entry

The American university system plays an enormously important role for all of humanity. It protects the institutions and knowledge that propels the human race forward. To do so, it must value research and invocation wherever it leads. It must not devolve into a customer service role for human capital. The high cost excludes potentially millions of talented young minds that have a bright future in software engineering. The university pipeline is systemically broken. The good news is we already know how to fix it.

Over the past five years, software apprenticeship programs have emerged as an alternative to the traditional college track. The Microsoft Leap program was launched in 2015 and is perhaps the most mature of all apprenticeship programs. IBM has several apprenticeship programs you can view here. Google and Facebook dipped their toes in apprenticeship tracks, but it’s not clear if a CS degree is a prerequisite (the listed requirements are vague). As a whole, the tech sector continues to lag behind other industries where apprenticeship is the norm. There is a certain elitism at work in big tech, and it needs to be crushed so the industry can evolve.

Numerous false premises support the reasoning that two years (the first two years of a four-year degree is all general education) of computer science courses prepare you for a career as a software engineer. The first is that software engineers actually engage in something resembling science. They do not. They use the tools developed by focused subject matter experts such as Presto, Big Query, S3, Angular, React, etc. The vast majority of software engineers use industry-standard tools to build best practice (hopefully) systems. They operate at a high level in the stack, which doesn't require advanced mathematics or computer science. The only prerequisite to learning these skills is pre-algebra, and possibly some geometry for advanced front ends. This resembles more of an electrician's mastery of using a multi-meter or applying wiring diagrams. The only real difference is that electricians actually have a tangible mortality rate that is substantially higher than that of a software engineer.

The second false premise is that two-year computer science degrees prepare you for software engineering. Once again, they do not. Graduates are not educated on cloud platforms, they do not demonstrate mastery of popular application frameworks, they do not understand microservice architectures, and they are clueless about operational excellence. Many do not even have moderate Linux, git, and agile software development skills (foundational). Universities are consistently three to five years behind current industry trends. This isn’t the university's fault (again, its core mission is advancement in the field). It’s the fault of companies that have substituted four-year degrees for an IQ test.

To effect change, I have created an open-source curriculum designed to serve as a prerequisite for entering an apprenticeship program. The Open Source Software University heavily inspires it. I’ve also created a LinkedIn group where employers and engineers can collaborate to launch apprenticeship programs. My reimagining of the engineering pipeline includes graduates of apprenticeship programs learning computer science (using the OSSU curriculum) and applied mathematics as they make their way down the stack in the course of their career. I want every bright highschool graduate anywhere in the world to have access to careers in software engineering. As the project evolves, I hope it will become a certified prerequisite for existing apprenticeships at IBM, Microsoft, Facebook, and Google.

Why can’t a bright high school graduate walk into a software apprenticeship program the day they graduate highschool?

They most certainly can. By denying young people this opportunity, we delay financial independence, enrich corrupt institutions, and exclude huge population segments. Apprenticeships in software engineering must replace the four-year degree to deliver on the promise of accessibility. Please help me make that world a reality.

I’m an early to mid stage start up warrior with a passion for scaling great ideas. The great loves of my life are my wife, my daughter, and surfing!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store