September 04, 2016

Teams—a previously underappreciated and unloved feature on Exercism

The teams feature on Exercism started off as an afterthought. Even that is giving it more credit than it deserves, because "afterthought" has the word "thought" in it. It was more like a muscle spasm. An accident that somehow made a team-like thing work on Exercism. And by "work" I really mean "kind of barely work if you squint your eyes really hard and hold your breath".

That was the state of things for the first two years.

But people used it, because it let them do something that was useful: it let them get notifications about new comments and submissions within a small group. People they worked with, or collaborated with, or met at a meetup, or were teaching, or mentoring, or just plain cared about in some way.

In March this year I reworked teams somewhat so that instead of getting random notifications, you were given a proper activity stream. Something that you can filter by user or language or both.

Teams are slightly different from the rest of the site. Usually, if you haven't submitted a solution to an exercise, you can't see anyone else's solution to it. On a team, however, you can see anything that anyone on the team has submitted, in any language. This makes it easier to collaborate—especially if there are mentors involved who don't necessarily want (or need) to do the exercises in order to help people out.

The activity stream was better, but nowhere near good enough. One problem was that if you were looking at a stream that included multiple languages, there was no way to tell what language each exercise was in. Brad Hoover fixed this, adding the language icon to the team stream.

More generally, though, teams have just not gotten much attention. They work pretty well (now, finally), but they're basically undocumented. Most people don't know they exist. And even if you do know, there's no obvious way to find or join an interesting, relevant team.

It would be so much better if you could search for teams by topic or keyword, and request to join them—at least if the team admin decided that the team shouldn't be private and invite-only.

Norbert Melzer posted an issue in June making some suggestions about improving the discoverability of teams, and since then Bernardo Araujo has been crushing it, submitting one pull request after another, improving the teams feature.

It's not quite done, but so far, team maintainers can add a description and tags to their teams, and decide whether or not it should be public. And you can search for teams... but you still can't ask to join them yet, so we've not linked the search page up to the rest of the site yet, and right now all of the teams are private.

If you have a team, start thinking about whether you want it to be publicly discoverable, and how to tag it and describe it. If you don't belong to any teams it won't be too long until you can join one. Until then you'll have to create your own.