About four years ago, when I started at Etsy, I built a product called Etsy Prototypes, which let our users opt in to more experimental features. It was my way of hacking the product process—anyone could easily write a feature, put it behind a feature flag, and launch it as a prototype team that users could join or leave whenever they wanted. You (generally) didn’t have to ask anyone for permission to see if your idea was worth investing more time in.

In and of itself, this wasn’t a particularly novel idea—Google pioneered the concept 2 years earlier with Gmail Labs, similarly allowing users to opt in to features, and lowering the barrier for developers to launch new features.

That said, after reading a transcript of Ian Malpass’s talk on dealing with failure (definitely worth reading if you’re not familiar with Etsy’s development processes), I was reminded of one of the fundamental difference between Gmail Labs and Etsy Prototypes:

Etsy Prototypes is fundamentally about community-driven product development in a way that I haven’t really seen since, due to a few small product decisions. It wasn’t difficult to build (I built it in a hack week), but it ended up being fundamental to how a lot of Etsy’s products are built today. The seller team alone has created over 100 prototype teams and as of this year, there were over 50,000 sellers in active prototypes.

How Etsy Prototypes work

When I created Etsy Prototypes (initially motivated by wanting a better outlet to try out new ideas), I decided to reuse Etsy Teams. There’s a lot I can say about teams, and I think they're one of the most interesting parts about Etsy, but suffice to say the product part of it is similar to Facebook or Google Groups and any user can create a team, invite members, and have discussions.

Although I didn’t fully grasp the importance at the time, this seemingly small product decision had a deep impact on how we developed features and were able to interact with our users.

When Gmail Labs launched, their stated goals were to “build a more open connection” and allow users to “submit feedback directly to the developers themselves.” Etsy Prototypes delivered on both of these ideas, but the addition of a community discussion forum completely changed the interaction between us and our users. Rather than releasing a feature and soliciting feedback after it had already been built, or running a closed beta group where only developers could see the feedback, we created an open forum where everyone could see the discussion, we could share our thinking behind decisions, and users could help each other.

Interestingly, Gmail Lab's Send Feedback link doesn't appear to work anymore—clicking on it redirects you to their main help center…

Developer notes

As I mentioned earlier, I was able to build Etsy Prototypes in a few days by reusing two features we already had—Etsy Teams and feature flags.

In order to create a prototype team, you’d create a team through the main site, and if you were a staff member, you had an additional option to make a team a “prototype” team. All this did was add it to the list of public prototypes on etsy.com/prototypes, although you could turn on a feature for any team (which we also heavily did by leveraging private teams within Etsy, with all the same benefits).

Once you did that, you could add a feature flag to turn it on just for that team. Something like this:

  "amazing_feature": {
    teams: [1234]

Where 1234 is the ID of the team.

The future

Although the introduction of a discussion forum and leveraging feature flags is a pretty simple idea, it’s one that I hadn’t seen before, and haven’t seen since.

When I left Etsy, the process was still pretty clunky—creating a team through the public interface took more time than it should and closing a prototype was non-trivial, but the benefits far outweighed the cost.

We haven’t introduced it at my new gig (yet!), but if you have the pieces in place (community forums and feature flags), I think it’s something you should try. It’ll completely change how you build features by reducing the friction for both developers and users.