I previously noted that we started a language club at work. You know, I searched around but I couldn’t find a copy of the How to Organize a Programming Language Club Handbook. Maybe it’s sold out? Yes, Stack Overflow has quite a bit of information on how to learn and teach new languages and there’s also a good number of online tutorials which provide language introductions but I was interested in group learning. After two months of meetings, I present to you the Unofficial How to Organize a Programming Language Club Handbook.
1. Gauge interest. Start by surveying prospects. “Excuse me, smart-developer-whom-I-work-with-and-I-think-might-be-interested-in-learning-a-new-coding-language-with-me. Are you interested in learning a new language with me?” If you’re lucky, you work with a bunch of really smart folks who aren’t shy about teaching/learning in a group setting and you’ll have a collective interest in no time. Simply suggesting the idea is the only effort required. If you don’t work in this type of environment, maybe you should consider a new place of employment.
2. Make it official. Send out a “Welcome to the Club” email:
There’s been talk of folks itching to learn new languages – Python, Scala, F# and Haskell to name a few. Rather than taking on new languages alone, let’s learn in the open. That’s right. Let’s start a languages club. We’ll have everything a real club needs – secret handshake, goofy motto and a high-and-mighty sense that we’re better than everybody else. T-shirts? Hell YES! Anyway, I’ve thrown this idea around the office and no one has laughed at me yet so please consider this your very official invitation to be in THE club.[Insert your ideas about how the club might be run, solicit feedback and suggestions, ask what other folks would like to get out the club, comment about club hazing practices and talk up the T-shirts even more. Finally, call out the languages you are interested in learning and ask the group for their list.]
3. Send out invitations to the first meeting. Don’t skimp! Hallmark greeting cards for everyone. Personalized. Hearts over the I’s and everything. Oh, and be sure to include the list of suggested languages with vote count. Here the list of languages we are interested in:
Python 5 Ruby 4 Objective-C 3 F# 2 Haskell 2 Scala 2 Ada 1 Boo 1 C# 1 Clojure 1 Erlang 1 Go 1 Pi 1 Prolog 1 Qt 1
4. At the first meeting, there must be cake. Lots of cake. And you should tackle some very important questions:
- Which language should we start with? You can immediately go with the top vote getter or you could do as we did and designate each person to provide a high-level review of each of the proposed languages over the next two weeks. After all presentations are completed, vote on the language. Our high-level review consisted of answers to a series of questions.
- Decide how often and where the group will meet. We, for example, meet for a brown bag lunch every Wednesday.
- Decide how you’re going to learn. We determined that the best way to learn is to just dive in and write code. After choosing our first language (Python), we talked about building an application, or performing coding katas, but we ultimately choose to complete a series of Project Euler problems. We kept it simple – each member works out the same two problems each week in preparation of a code review the following Wednesday.
5. Code, Review, Learn. Prior to the weekly meeting, everyone uploads their solutions to our internal wiki. Each Project Euler problem has a dedicated page. In the meeting, we use a really fancy HD projector to show off each member’s solution. It is very important to use an HD projector. Again, don’t skimp! Each code author speaks to their solution, everyone else comments, applauds, points fingers and laughs, etc. As much as I’ve learned from solving the problems on my own, I’ve learned at least twice as much at the group code review.
6. Rinse. Lather. Repeat. We’ve hosted the language club for 7 weeks now. The first meeting just set the stage. The next two meetings provided a review of the languages followed by a first language selection. The remaining meetings focused on Python and Project Euler problems. Today we took a vote as to whether or not we’re ready to switch to another language and/or another problem set. Pretty much everyone wants to stay the course for a few more weeks at least. Until then, we’ll continue to code the next two solutions, review and learn.
Again, we’ve been having a good time with the programming language club. I’m glad it got off the ground. What do you think? Would you be interested in a language club? Any suggestions on what we might do better?