Clojure

Start Group

Tips on Starting a Clojure User Group

Starting a user group is a great way to improve your Clojure skills and find others interested in Clojure in your area. If you’ve never run a user group before, that’s ok! Anyone can do it.

A user group needs the following elements:

  1. A meeting place. Finding a regular meeting place is sometimes the biggest hurdle a group faces when getting off the ground. Often the ideal option is finding a company that can host a group after-hours. If that’s not an option, some other choices include libraries, churches, or coffee shops.

  2. A meeting time. It’s important to establish a rhythm to keep a group going. Pick a night (like the 2nd Tuesday of the month) and try as much as possible to have your meeting on that same night every month.

  3. A home on the web. It’s important to have an address on the web that can be found by a search engine. There are lots of ways to put together a web page for free or cheap - see below for some tools you can use.

  4. People! You can’t have a meeting without people. Ask around at other mailing lists or user groups in your area for people that might be interested.

Tools

Common problems

"We have a group but it’s hard to find enough speakers." or "The same people always give talks."

Not every meeting has to have a speaker that gives a prepared talk. Think creatively about other ways to have a meeting that gives value. Some ideas:

  • Lightning talks - do 5 or 10 minute talks on small subjects. Paradoxically, doing more shorter talks at a meeting is sometimes easier than scheduling one big talk. Each presenter has to prepare less material and meetings have a smaller risk of a bad meeting due to one inexperienced speaker. Try doing two or three talks per meeting.

  • Live coding session - start with a small problem (it’s hard to start too small for this) and let the group drive the evolution of the solution.

  • Code review - bring some code and walk through it. Explain the code, take comments on style, performance, etc. Rewrite parts of it to make it better.

  • Contribute - pick a bug from the Clojure bug tracker and work on it together. Or review the documentation and figure out some improvements. Even providing a list of things confusing to newcomers is useful.

  • Review a paper - there are tons of great books and papers on Lisp, Clojure, functional programming, persistent data structures, etc. Pick one and lead a discussion about the merits or flaws of the paper.

  • Book study group - review a classic book like Structure and Interpretation of Computer Programs (SICP) or some other classic

  • Competition - have everyone bring a solution to the same problem in Clojure or other languages and compare the result.

"We have a mailing list but no one ever uses it."

The best way to get people talking on a mailing list is to talk on it yourself. Post your meeting announcements, meeting recaps, articles of interest, code snippets, etc. Ask people to introduce themselves on the list - people love to talk about themselves. Mailing lists require some bootstrapping. Eventually, the mailing list will become self-maintaining but it takes some work at the beginning or if there is a lull.

"Recruiters have joined our mailing list and keep posting job ads."

It’s important to have a policy for recruiters and job postings. Decide on your policy, document it, and refer people to it. Some common policies are: "job postings are allowed", "only job postings pertinent to the group are allowed", "only approved job postings are allowed", etc. Some groups have a separate mailing list only for jobs and recruiting.

"I can’t find enough people to have a meeting."

If you can’t find enough people to start a Clojure group, perhaps you can broaden the scope to find others that might like to talk about Clojure some of the time. Are there people interested in a functional programming group? A programming languages group? A JVM-based languages group? A programmer’s club?