I volunteered heavily for Railsbridge from about 2009 to 2011, and intermittently since then when I had time between projects. When I “tuned in” again in fall of 2013, I found the organization has been tremendously successful: over 70 workshops executed, chapters all over the world, a streamlined setup process (Installfest), a homebrewed replacement from the original flawed organization software (BridgeTroll), an excellent curriculum and ongoing support in the form of weekly study groups (Ruby Tuesdays, Women who Code). Despite this, from talking to fellow graduates, I noticed that many of the aspiring coders who were attending workshops were unable to make the transition to a career in software development – even though many of them had been attempting to make the transition for a long time.
The problem is that becoming a software engineer requires more than just study. It requires practice. Based on my own experience and the structure of commercial enterprises that produce software engineers (Hackbright, etc.), I estimate that it takes about three months (or 400 hours) of practice to develop enough skill to become employable. The reason these students aren’t making it, I’m convinced, is because they aren’t getting enough practice.
But getting enough practice is difficult. First of all, like any other complex skill, writing code when you are not very good at it is frustrating. Second of all, many students are putting in most of their hours alone. Very, very few people have enough self-discipline to put in 400 hours of study if they have no (or only sporadic) support from a classroom or work team. And truly entry-level opportunities are scarce. Few businesses can afford the time and effort required for an internship. In fact, most companies struggle just onboarding experienced engineers.
This limits opportunities to people who have already “made it”, thus exacerbating the lack of diversity (and growing unfairness) of the tech industry and society in general. It also gets in the way of our evolution. Our world desperately needs people mastering the evolving technologies and economic environments characteristic of the twenty-first century on an ongoing basis. And we need it at scale.
Around this time, I flew down to San Diego to study Mob Programming with Woody Zuill. You can read about that visit in this previous post. My experience convinced me that this group approach was not only incredibly effective for developing software, but was one of the best possible learning environments for newbie and aspiring software engineers.
For a while, I became obsessed with the idea of “Mob Apprenticeships”: self-organizing teams of novice programmers, working on actual products for actual customers (probably local non profits or small businesses). I even went so far as to draw up a business proposal and start pitching to developer bootcamps. I wasn’t successful, but I haven’t entirely given up on it. Maybe in the next recession when there are more idle people and finding space isn’t so difficult.