So after starting a Continuous Learning Program at my current job I figured it could help to share the facets of the program and how to get one started.
First let’s start by defining what a Continuous Learning Program is:
A continuous learning program is a set of clubs/groups that meet with the explicit goal of expanding their skill set.
Pretty simple, but let’s look at the different types of groups and what their specific functions are.
Lunch and Learn⌗
This one is less of a club and more a weekly/bi-weekly type meeting and odds are your company is already doing it! The idea here is that anyone in the organization can volunteer to present on a topic during a group lunch. We usually try to keep these meetings at around an hour in length and keep the topics open to whatever the presenter wants to share. Some examples of topics we’ve had in the past are “The Magic of Git Bisect”, “Book Review: The Economics of Open Source”, “Refactoring Patterns: Class Extraction”, as well as an assorted bunch of different productivity hacks. The goal is to allow the presenters to showcase whatever knowledge it is that they have, whether it’s directly related to software development or not. This can also lead to some extensions such as “Summer of Code”, where anyone in the org puts up on a spreadsheet different topics they would like to learn more about, and then other members can volunteer to research and present on them.
The first club we’ll be discussing is the one that requires the least amount of commitment from its members: Video Club. The basic outline for Video Club is that the club meets once a week to watch a conference talk and then discuss their thoughts on the content of the video. That’s it. This is the club with the least commitment from the members because all they have to do is show up and watch a video. Odds are this will be the club with the highest attendance, as the other clubs require a bit more of a time commitment from the members, though this club lays the groundwork for the rest. This club will serve as a way to plant the ideas and concepts that the other clubs will go into more depth on, as a conference video can only go into so much depth on a particular subject.
Next up we’ve got book club. This is a step up in the amount of time required of its members as this requires some at home reading. The idea here is to pick a book on software developement (or software adjacent, books on complex systems and risk in complex systems are always a good choice) and read about a chapter a week outside. This allows for the entirety of the club meetings to focus on discussion of the book, and allows for the group to go into more depth on the particular topics and applications from the reading.
Now there will be those that are not able to or want to commit to reading an entire book. A small adjustment that you can make to the format is to introduce a section to read blog posts, articles, or CS white papers. Our current format is that we spend about 3/4 of the time discussing the book (so about 45 minutes), and then take the last 1/4 (15 minutes) to discuss the paper for that week. This gives people who are interested but don’t want to commit to an entire book and easy way to be involved on their own schedule while also garnering interest in potentially participating in the next book.
While book club requires more time commitment outside the groups meetings, Code Dojo requires more commitment from the members during the groups meeting. During Code Dojo we take the ideas gathered from Video Club and Book Club and put them into practice through different exercises. The idea here is to engage in Deliberate Practice so that the information gained through the previous two clubs becomes part of our process used to solve problems. Ideally the problems are solved in groups, either through splitting off into pairs or the group collaborating as a whole. This is done so that if a single member of the group is particularly skilled in the type of problem being presented, their knowledge can be shared with the rest of the group.
This is the final link in the chain and aims to take the learnings from the previous clubs and incorporate them into your actual code base. The basis for this group is to split into small groups and refactor parts of the existing code with the knowledge and skills gained from the previous clubs. The Refactory is probably the most intense in terms of commitment as members are expected to come ideas in mind of where they will be refactoring code, so that the majority of the groups time is spent on performing the actual refactors.
So that wraps it up for the actual clubs that consitute my Continuous Learning program. One thing to keep in mind is that these clubs should be open to everyone, not just the engineering organization. We’ll go into more detail as to why in a future post on selling Upper Management on implementing these clubs, but the general idea is tha we want as much diversity in background/thought as possible in these clubs: the more viewpoints/ideas the better!