= Start Group
Alex Miller
2015-01-01
:type: community
:toc: macro
:icons: font

ifdef::env-github,env-browser[:outfilesuffix: .adoc]

== 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:


. *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.
. *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.
. *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.
. *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

* Google Calendar - http://www.google.com/calendar[http://www.google.com/calendar]
* Wordpress - http://wordpress.com[http://wordpress.com] - free blog and web site
* Meetup - http://meetup.com/[http://meetup.com] - meeting discovery, calendar, user network (75% discount available)
* Google Groups - http://groups.google.com[http://groups.google.com] - free mailing list
* Yahoo Groups - http://groups.yahoo.com[http://groups.yahoo.com] - free mailing list
* YouTube - http://youtube.com[http://youtube.com] - video hosting

== 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__ (http://mitpress.mit.edu/sicp/[SICP]) or some other http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH[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?
