Wednesday, May 06, 2015

Discussion of software apprenticeships at All Girl Hack Night

At the March meeting of All Girl Hack Night, a startup founder Diana Griffin and two women developers -- Tricia and Autumn -- talked about software development apprenticeships they did at Diana's startup, GirlsGuild.

A startup's decision to take apprentices

GirlsGuild is a startup that matches women makers (they didn't want to call them "masters", as that might sound too intimidating) with apprentices who want to learn a skill or a craft: leatherworking, chocolate making, graphic design, or many more. So it is only natural that its founders wondered how the notion of apprenticeship would extend to software development. In the software world it is also known as eating your own dog food. Having only recently learned programming, GirlsGuild founders Diana and Cheyenne built GirlsGuild web app themselves, with the help of more experienced Ruby on Rails developers. So they also wanted to give back and teach other women what they knew of programming.

Thus they announced apprenticeship positions. They view them as different from internship. They expected that apprentices were completely new to programming, and that they might not know much at all.

In Tricia's case, it turned out to be true. She went into apprenticeship to gain experience she couldn't gain otherwise.

Reasons to become an apprentice

A beginner developer who wants to get a job in the industry must demonstrate some kind of credentials or programming ability to potential employers; if you don't have computer science education, that can be tricky. It is a chicken-and-egg problem, getting experience without already having experience. That's where unpaid work, such as an internship, can give a foot in the door to a beginner programmer.

And that's why when Tricia heard about an apprenticeship opportunity with GirlsGuild, she applied. It helped that she knew Autumn, who was already working there as an apprentice. Up until that point, she had taken some Java courses at the Austin Community College, but had no programming experience in the industry. Without it, or a degree in computer science, she didn't see how she could ever get a job as a software developer.

At first she worried that GirlsGuild won't accept her, but she was determined to come back again and again, and become impossible to get rid of.

Left to right: Tricia, Diana Griffin, and Autumn
Left to right: Tricia, Diana Griffin (cofounder of GirlsGuild), and Autumn at the All Girl Hack Night discussion of software apprenticeships. More pictures from All Girl Hack Night events are in my photo gallery.

Autumn admitted that she worried about that too, even though she is an experienced software engineer, and her reasons for going through an apprenticeship were different. She was working in a well-established organization with a large team of developers; as typical for a large institution, it had complex processes and procedures in place for everything, such as testing, doing code reviews, and deploying to production. Autumn, however, wanted to experience working in a startup, where processes are minimal, red tape almost nonexistent, developers have very close interaction with business owners, and large influence in the product.

Neither of them needed to worry about not being admitted to an apprenticeship, because GirlsGuild was happy for every helping hand they could get.

Structure of an apprenticeship

GirlsGuild founders Cheyenne and Diana got together with Tricia and Autumn for 3-4 hours a week. At first they walked them through the code, examining various use cases, a la "When a user clicks this button, here is what code gets executed in the background". They gave Tricia and Autumn full freedom of bugs and issues to work on. They were happy to have anyone to work on them, even beginners. (I didn't ask if they were ever concerned that a beginner would inadvertently make the product worse, e.g. by fixing a bug's symptoms rather than the underlying cause, and making it more difficult to fix the cause afterwards.)

Meetings with Diana and Cheyenne was just a small part of the time both apprentices invested in their work. The meetings took only 3-4 hours a week, but Tricia and Autumn spent much more time than that studying the code on their own. To every meeting they came prepared to implement what they learned. And after a while they didn't need constant hand-holding from Diana. They would work independently and only come to her if they got stuck.

Making it easier for a startup to foster apprentices

It helped that ever since its beginning, GirlsGuild kept a detailed list of code issues in Github. It also helped that they didn't have any other deadlines to meet except self-imposed ones; there weren't any investors breathing down their neck to implement features faster. GirlsGuild, as I understood, is funded entirely by the owners, both of who have full-time jobs outside of GirlsGuild. This gives them a lot of freedom to implement features at their own pace.

Another thing that helped was that their users were so forgiving. There weren't too many users to begin with, and they didn't tend to get upset by errors. Plus, error messages were quite funny, said Tricia, so that went a long way to give the users enjoyable experience even when the application didn't work right. They had a simple, direct process of fixing user-reported bugs: the user would call them, and they would get on fixing the bug right away.

Comparing apprenticeships to other ways of gaining programming experience

The audience wanted to know how apprenticeships compared with other ways to learn programming. Was it a better or worse way than, say, taking self-paced courses at Codecademy? College courses? What about intense development bootcamps, such as MakerSquare?

According to Tricia, who had previously taken some programming courses at Austin Community College, an apprenticeship teaches you very different skills than an academic course. Most programming classes, in her view, might teach you concepts of programming, but not how to write an application from scratch. What's more, they won't teach you other crucial aspects of being a software engineer, such as how to collaborate with other engineers, or use tools (e.g. Github) effectively. So, for a taste of real-life software engineering, apprenticeships are invaluable.

It so happened that towards the end of her apprenticeship, Tricia entered the full-time Makersquare development bootcamp, and Autumn took Makersquare part time courses in the middle of her apprenticeship. So they could not really compare the experience they gained from it to the experience gained from the apprenticeship, but they both thought they would have been much more valuable to GirlsGuild if they had come to it after Makersquare. Diana assured that they were very useful anyway, and that if they had come to GirlsGuild after MakerSquare, they would have been leading the apprenticeships!

Tricia says most prospective employers valued her apprenticeship almost as much as an experience at a paid job, because it showed that she could take a project, persevere, and complete it.