For the past month, I’ve been helping to organize a Lambda Lounge chapter in Detroit. The original Lambda Lounge in St. Louis is a user group “organized loosely around the idea of exploring dynamic and functional languages.” The idea of creating a Detroit chapter came up at the recent Great Lakes Functional Programming Conference, and I was too excited to not participate.
The Drawback of Specialist User Groups
I’ve been thinking a lot recently about what I want from a user group. In the process of helping to start our Detroit office, I’ve been to a number of Detroit and Grand Rapids user groups. They were all well-run and fun, but each invariably focused on a specific technology (Ruby, .net, web development, and so on). Despite having a good time at these groups, I ultimately found them unsatisfying.
It’s certainly important for Ruby or Java or Web developers to hone their skills and master the tools of their trade, but ultimately those things are the details that change from year to year and fad to fad. Furthermore, focusing discussion around particular ecosystems keeps the conversation on low-order concerns.
Specialist groups, to accommodate a range of experience levels, are biased toward focusing on grammar (writing the code) not ideas. There’s a point every software craftsperson reaches where the grammar is no longer the biggest obstacle. What’s hard is coming up with a sound, flexible set of concepts from which to compose your software.
Generalists Groups Teach New Ways of Thinking
What’s needed are more generalist user groups, groups that focus on big ideas. Big ideas provide new ways of viewing problems or new primitives with which to construct solutions. Your next project may not be in Ruby, but you can apply the principle of “convention over configuration.” Your next project may not be lisp, but the lessons it teaches about code and data will help you notice situations in which shifting your perspective (“Oh! I should think of this as data, not code!”) can lead to a cleaner solution. Specialist talks tend to be more interesting to specialists, but generalist talks have lessons to teach everyone.
Detroit Lambda Lounge is a generalist user group. Not a group for generalists, but a group that focuses on timeless, portable big ideas. At DLL, expert developers from a number of backgrounds can come together and cross-pollinate, hopefully coming away from each meeting with a new and relevant lesson. Those with no intention of learning Go can still learn from that language’s approach to concurrency and its background in CSP. Java developers won’t have to sit through a specialist talk about what’s new in C# version X.Y, but can learn a new perspective on the relationship between subject/observer and enumerable patterns (at least, they can if someone volunteers to give that talk).