How We’re Building an Internal Scala Culture at Janrain

No doubt about it: Scala is a hot commodity these days. Its development has strong institutional backing from TypeSafe, it’s being used in more and more heavy-duty production environments (Twitter, LinkedIn, and many others), and emerging tools like the Play! framework, Akka, Spray, SBT, Scalaz, and others have made Scala poised to become a force to be reckoned with in major enterprises and potentially everywhere else.

At Janrain, we’ve been investing more and more trust in Scala over the last few years. We started using it several years back when we decided to begin porting our social login and sharing platform from Ruby to Scala (a transition still in progress). Today, Scala is being used on a number of internal projects, some of which will become major public- and developer-facing components of our Janrain User Management Platform (JUMP).

Months ago, some of the Scala developers at Janrain, led by Thomas Lockney, Leif Warner, and others, decided that if we’re going to be making Scala an integral part of our engineering culture it’s simply not enough to hire people and have them learn Scala in a sink-or-swim fashion. Instead, they chose to create an active culture of Scala-related inquiry and discussion within the company.

This meant obvious things like buying Scala books. You’ll see our shelves littered with Scala books of all sorts, from Scala in Action to the now-classic Programming in Scala to Actors in Scala and beyond. We also host the PDX Scala meetup group at our headquarters and will be actively involved with the Pacific Northwest Scala Conference coming up in October (our very own Thomas Lockney will be the main organizer and Janrain will be an official sponsor).

But fostering a strong Scala culture also meant doing less obvious things, like our Scala lunches. Twice a week, Janrainers get together over lunch (usually drawn from Portland’s extensive food cart ecosystem, about which I’ve written previously) and talk about anything Scala-related that comes up. Attendance is non-mandatory but nonetheless strong. Here’s a group of our Scala enthusiasts in action:

The Friday lunches tend to revolve around more general Scala-related topics and are more beginner-friendly (which is great for me, as I begin slowly easing into Play!, Akka, Spray, Scalatra, and other corners of the Scala universe).

The Tuesday lunches, on the other hand, tend to be a bit more intense, because they focus on functional programming in Scala (with a heavy emphasis on Scalaz). Scalaz is a broad-based effort to expand some of the more raw functional capabilities in Scala to include some of the more advanced capabilities found in pure functional languages like Haskell (which we also use extensively in production at Janrain), such as monads, monoids, lenses, functors, and trees.

Beginning this week, the group will begin a deep dive into the Functional Programming in Scala book. I plan on having my mind slowly deconstructed and then rebuilt on new foundations by the entire process. Should be fun!

The lunches are well attended by an ever-shifting assortment of Janrain engineers, and the conversation leaves this attendee feeling like he has his fingers continuously on the pulse of the broader Scala community.

The end result: Scala is growing at Janrain, our engineers are making more informed decisions about how to use it, and our engineering team is making its presence felt in the ever-expanding Scala community outside of Janrain.

We strongly urge you to try out a similar strategy. It might even work for not-so-”niche” language communities…

1 comments