We started a code club at work last November. You may know that I’ve written about the formation of the club and I have offered my opinion on how to start your own club but otherwise I haven’t shared much. That’s a bummer because we’re doing some good stuff and I should be more out in the open about it.
Anyway, we’ve been pretty consistent with meeting every Wednesday at noon. Sometimes we’ll have a small group of three people and other weeks, like last week, we might have eight or nine attendees. I like the larger groups, but even with a few people, I can still take away a lot. And if I start introducing this stuff to my blog, I might take away even more thanks to your contributions…
What have we been doing? We have been focusing on a single language for 8-10 weeks at a time:
- Our first language, Python, was a big hit. After all, everyone loves Python, right? Seriously, everyone really does love Python, yes? It has great IDE support (if you’re into that sort of thing), lots of online tutorials and documentation and, man, it is very intuitive. Last year, I spoke with a couple of the Reddit guys at Stackoverflow DevDays in LA. From what I remember, virtual no one on their development team had any experience in Python when the decision was made to switch the platform from Lisp to Python. I had to ask how everyone got ramped up with the new language. They basically replied by saying they just started writing code. The answer seemed a little oversimplified to me at the time, but now having dabbled in Python, I completely believe them. What a great great way to kick off the club.
- At work, there are more than three Java developers for every .NET/C# developer. This, coupled with the fact that Scala and functional programming get a lot of attention, made Scala a great second pick. Yes, Scala kept everyone’s interest for a while but attendance started to peter off towards the end. If I had to bet, I think wrestling with functional style coding eventually wore people out. Both Scala and Clojure are trying to fill that functional programming space in the JVM and I’m looking forward to seeing how both of these languages evolve. I don’t think I’ll ever be a Scala code, but I really like the language and I think it could go far.
- Next up? F#. If I had to categorize our time with F#, I would deem it a colossal failure as attendance and interest was very low. I dig F# and functional programming but it didn’t turn a lot of the group members on in the same way. When it came to choosing our next language, F# was the highest vote getter at the time. I guess the idea of learning F# is more appealing than the learning itself. Maybe it was just bad timing for F#. After all, we had just finished grokking functional programming with Scala. Did the fact that the group is made up of a bunch of Java folks who work on Macs contribute to the lack of interest? Maybe, but more likely the fact that F# is magnitudes harder to get ones head around than Python or Scala probably weighed more heavily into the equation. All the same, I learned a lot and it was really great to compare/contrasts the functional aspects of Python, Scala and F#.
- After F#, we all needed a bit of a break so we solved puzzles in the programming language of one’s choice for the next few weeks. We called it code golf even though we weren’t concerned with code length or speed. We’re tricky that way. I solved each problem in C# which still makes me feel like a cheater. That said, I was able to make some new language discoveries and it gave me a chance to show off C# to the Java heads so it all worked out. What kind of problems did we solve? We generated and solved a maze, created an anagram solver, generated magic squares, coded Conway’s Game of Life and we played out multiple games of Set. If you’re interested, I’ll provide links in later posts.
- And now we’re into our fourth language, Ruby. Although I have only been working with Ruby for a little more than a week, I think it’s my favorite. For the other languages, we’re been solving Project Euler and S-99 problems. Admittedly, I may be slightly influenced by the Mike Moore, Jeff Cohen and Scott Bellware’s recent Ruby conversation on Herding Code, but Ruby is fun and productive and really easy to get one’s head around. And the way I can easily add methods to existing objects makes me feel like I’m breaking all sorts of rules…but I know I can get away with it. Fun.
Which leaves me with my earlier comment – I should be more out in the open about code club. My plan is to post my Ruby solutions as I tackle them over the next weeks. As for the stuff I’ve already done in other languages, I’ll post those solutions too. But I’ll take my time and pepper them in over the next month or so.