webdevjeff.us

Web Developer Jeff George

Blog

Developing developers

Apprenticeships may help address shortage of qualified developers

Oct. 4, 2015

We're all aware of the huge projected demand for software developers in the next few years—if we weren't, I wouldn't be a student at Dev Bootcamp, and Dev Bootcamp wouldn't exist. That demand reflects an expanding marketplace coupled with insufficient capacity of traditional educational avenues to provide enough qualified graduates to fill the available jobs. Four year colleges just can't crank out enough programmers to meed the current demand, and that demand is growing faster than colleges can expand their output.

Coding bootcamps are one response to this problem, but they aren't the whole solution. Whether people are preparing themselves for careers in software development through a traditional college CS program, through coding bootcamps or online training programs, or simply through self-study, employers are frequently not finding among applicants people who bring the appropriate mindset, attitude and skillset. One strategy some tech companies are experimenting with today is the paid apprenticeship. In preparation for this assignment, I read a series of interviews by Ruby developer Joe Mastey with employers and former apprentices about how developing apprenticeship programs has benefited their companies and their cultures. In these articles, Mastey interviewed Coraline Ada Ehmke, formerly of Instructure; Blake Thomas of Enova, Amelia Padua of Trunk Club, and JC Grubbs and Dayton Noland of DevMynd.

Based on the experiences of the interviewees at four very different tech companies, an apprenticeship is a paid, salaried opportunity for an emerging developer to grow their skills and experience under the guidance of the engineers and management of a company that sees in them the strong potential to become a valuable contributor to the company's business and culture. Apprentices are chosen not so much for their existing skill set, but rather for their personality and potential—they show a passion for software, and a strong drive to learn, to grow, to solve problems, to create, to contribute, to collaborate, and to communicate. They typically are not coming into their apprenticeships from a four-year CS program, but are career changers, sometimes from another department in the same company! In any case, they have demonstrated a consistent pattern showing both interest in software development and drive to learn more about how to do it.

Enova Senior Manager of Software Engineering, Blake Thomas, told of the heartbreak he'd felt when interviewing candidates for developer positions who showed "the right behavior, the passion, everything," but lacked the specific skills required to succeed in the job. Thomas' recalled one such person, a call-center service representative at Enova, who was learning software development on her own. "This person&hellips;taught themselves ruby using tutorials, pushed code to github, was going to meetups&hellips;" So Thomas arranged for this call-center employee to have access to the engineering department's tech talks and library, arranged pair programming sessions for her with staff engineers, and "...generally tried to make resources available, as much as I could." Over a period of weeks, when they realized that this person was coming in on her days off to attend tech talks, the company realized that "this is the kind of person we want to hire, and we can teach them the rest." From that realization, Enova's apprenticeship program arose.

This story is typical of the kind of person that becomes an apprentice, and the benefits companies see in developing apprentices into developers. Apprenticeship programs are typically 3-6 months long, and involve a blend of training and education, independent projects, and development work on the employers' "real" software. Having an apprentice program frees the company from having to hire from a short list of candidates who meet specific technical requirements, regardless of their attitude and cultural fit in the company—they can hire the kind of people they want to be their developers, and teach them the technologies the company actually uses.

Employers find that having apprentices in their engineering departments has a positive affect on collaboration and cooperation among all employees, not just the apprentices. When apprentices are around asking questions and listening to answers, everyone becomes more comfortable asking questions and sharing knowledge, leading to a more open and collaborative culture throughout the company.

Having an apprentice program also makes a statement not just to the apprentices themselves, but to all employees, that the company has a strong, long-term commitment to its employees. Corporate loyalty to employees began to erode sharply in the 1990s, when it seemed that engineers were easily replacable. When circumstances in the job market shifted in employees' favor a decade later, the employees' loyalty to their employers plunged as well, leading to the current climate of head-hunting, poaching, and job-hopping. Some companies today are learning that the best way to never be short on senior developers is to invest in the development of entry-level and junior-level talent, both as engineers and as partners in the company's long-term success. When employees see the company developing talent from within, over the long-term, their trust in and commitment to the company typically grows, which improves the productive, financial, and cultural stability of the company.

The bottom line is that twentieth-century models of preparation for careers in software development are no longer capable of meeting the personnel demands of the twenty-first century software development industry. A variety of innovative solutions—like boot camps and apprenticeships—will be necessary to be sure the number of qualified devs available comes anywhere close to the number of qualified devs needed.