A recent search on Career Builder, found that out of over 12,000 software development positions, only 120 of them were tagged ”entry level.“ With a growing shortage of good developers, it is surprising to see that only 1% of companies are willing to take on someone without experience.
The professional networking site, Linkedin, is another indicator of just how starved the market is for experience. I get so many messages from recruiters trying to fill “experienced” developer jobs that I finally turned off my notifications from the site. These recruiters can be persistent, and occasionally poorly informed. In 2009, I received a job posting that required 10 years of Ruby on Rails experience. In case you are not familiar with the history of Rails, it was open-sourced in 2004. The creator of Rails didn't have 10 years of Rails experience in 2009.
Why is experience so important to recruiters and the companies that use them? From what I have seen, the only time that software needs to be built is right now. Once the funding is in place, no one wants to wait to get started. Since projects are almost always behind before they ever begin, hiring managers think that they need highly experienced developers to “hit the ground running.” They don't have time to wait for someone to learn anything.
Not only do companies need qualified developers right away, but also they have no good way to establish the qualifications of a particular candidate. Software is an industry without a widely accepted professional credential. There are no required board exams or mandated residencies. IEEE does have the CSDP, but it is not widely known. I only found a single job posting on Career Builder 1 that even mentions the certification. Number of years of experience is the only easily accessible metric to determine if a programmer has any idea what he or she is doing.
It turns out that experience can actually be a poor indicator of future success. It's possible that a programmer has “experienced” the same year for 15 years running. Software tools and processes move rapidly. A programmer could still be using the same tools and techniques he or she used in the first year on the job. I've been in places like this and watched the same developer make the same mistakes and excuses year after year. It is entirely possible in some companies to hold a job as a programmer and simply stop learning.
The US Bureau of Labor Statistics expects 253,200 jobs to be added in software development, computer programming and web development in the 10 year period from 2010 to 2020. According to the National Science Foundation, 65,000 students will graduate from Computer Science programs across the country this year. How will those graduates get the experience needed to grab one those 12,000 open jobs? Who will train these graduates to become professional software developers?
What we've been doing at 8th Light is investing in people via apprenticeship. We put people on the payroll for months without being able to bill out their work. They work hard, but don't often touch client code. Their days are full of learning projects and exercises designed to provide a pathway into professional software development.
Apprenticeships are a bit like internships, but there is a key distinction in the value proposition. Most internship are focused on what a company can get out of a student who is willing to make very little money. Interns get stuck working on the tedious tasks that no one else is willing to do until the term ends and they move on to something else. Alternatively, apprenticeships value not the work product, but rather the work process. Apprentices work on projects designed for the apprentice's own growth even if the code produced is of little value to the company. Sometimes, apprentices do build very useful applications, but that comes as a side product of their learning. It is not the goal.
Our company was founded on this idea of apprenticeship. A mentor and his apprentice started 8th Light in 2006. Since then they have apprenticed dozens, and their apprentices are now taking apprentices of their own. In our growing little company of 34 craftsman, 28 entered the company via an apprenticeship. We've seen those graduates consistently outperform individuals with much more “experience.” They are more professional, write better code, and deliver more frequently. We could never have built the incredible team we have today if we had tried to just hire 28 more highly experienced software developers. We simply could not have found them.
For us, the investment in apprenticeships has paid off big-time, and I'm convinced that it is a investment that will pay off for others as well. Just imagine what might happen if companies across the country reallocated what they're paying that recruiter to harass me on Linkedin into a program that will generate a sustainable pipeline of great developers for their companies and our industry.