"Do what you want": building great products through anarchy

How can you build better products that involve everyone on the team? The Workflow team tried developer anarchy and found it a great way to build software

Alastair Jardine

Published on Monday, 9 February 2015

Computing   Software  

Very early sketch exploration of the Workflow product
Very early sketch exploration of the Workflow product Photograph: Alastair Jardine

For the past six months, the Guardian’s editorial tools team has been building a product for the organisation to manage its digital content through the production process. Called Workflow (yes, it’s unimaginative), the tool tracks content from inception through to publication. We’re not going to explore the tool itself. Instead, we’re going to look at the way we built the product, as I believe there is a lot to show about the way the team has worked together. The team was comprised of three developers, a UX architect, a UI designer, a QA, an agile project manager, and a product manager, all with a broad range of experience building software.

The workshop

Workshop
Capturing the scale of the problem in a user story generation workshop. Photograph: Alastair Jardine

Before the team had even come together, we held a workshop in the Guardian’s UX studio to understand the scope of the problem. The workshop was structured so that everyone had an opportunity to contribute. The attendee list was deliberately chosen to maximise the range of opinions and depth of experience, from both an editorial and development perspective. It passed the ‘sensible people test’: remember, we were trying to understand the problem, not necessarily the weight or validity of each opinion at this stage. The range of user stories that were generated was staggering in both volume and range of thinking.

A chunk of cards containing user stories
A chunk of cards containing user stories. Photograph: Alastair Jardine

We’d generated over 150 user stories , many of which were epics, and so would naturally break down into more granular stories. Some examples:

This volume of stories covered all aspects of the publication process, from story planning, through to post-publication promotion. David Blishen—our group product manager—slimmed down the cards into a core set of ‘stuff’ which represented our minimum usable product.

Bring the anarchy

The first meeting as a team was to decide on the way were were going to structure the way we work. Agile was the obvious choice, right? Think on. Our lead developer Stephen Wells pitched a number of methodologies to us, and the one that stood out was ‘developer anarchy’. Broadly speaking, developer anarchy works on a belief that if you let a sensible development team understand the business problem—in our case, managing content through a production process—then you’ll end up with a quality product. We’d all worked in teams where a sense of problem ownership was low and we wanted to see what would happen if we took a bit more control. Thus: the team became anarchistic in its approach.

We decided pretty early on that we would forgo traditional rounds of flat designs, and build a prototype product that we could test with our editorial users. I took the time to build a clickable HTML/CSS/JavaScript prototype, which allowed us to quickly get something on screen that felt real and proportional.

Much to my surprise (and to be fair, theirs once they looked at my code!) the developers on the team took this work, and hooked up a back end. The working prototype was rough, but it did one thing: track a piece of content from inception to publication.

HTML prototype
HTML prototype to explore how the tool could work. This was actually hooked up to a back end. Yikes.

The goal of this working prototype was to test concepts and execution to learn about what worked as a team. We learned really quickly (our editorial colleagues aren’t a shy bunch) where functionality was lacking, and what we’d missed. Our decision to test ideas and concepts meant we were testing questions and hypotheses against the product, and capturing that learning so we could iterate and refine. Some concepts were thrown out, or just didn’t work as expected. But as a group, how did we most effectively learn and understand the problem at hand?

Everyone on the same page

One of the main challenges I’ve seen in my time doing UX is “moderated access” to users. It’s my belief that all members of the team should know the users, be able to speak to them, collate problems and understand the problem space in which they are operating. As UX people (and product people are also guilty of this), it’s tempting to be that bridge between users and the development team. You know how it goes: have a conversation with a user, understand the problem, hive oneself off, then pitch a solution back to the team. But there’s a real issue with this. By not having a developer in the conversation, you end up being the arbiter of all knowledge, and contribute to the marginalisation of understanding. You quickly arrive at a situation where the whole team doesn’t see the full extent of the problem, and so the technical solutions are always going to be predicated on a subset of knowledge. The other consequence is that the team don’t have a full sense of ownership, and so motivation can often suffer. We worked really hard in the Workflow team to have a developer at every conversation and session where we were speaking with users. Similarly with training, we always had a developer there, or indeed, no UX person at all.

Stand ups Sit downs

It’s fair to say that during the early phases of the product when the team was in the “build, test, learn” phase, our daily stand-ups were actually spent sat down talking about what we’d all learned the previous day, and what we might want to do about it. The daily sit downs were effective. Everyone knew everything that was going on. Developers having a sense of ownership of the problem was powerful – they would pick up a piece of work that was both important and would solve a problem we’d identified as a team, irrespective of whether it was user-facing or not. We also did away with sprints, not least because it was obvious to everyone on the team what the next thing to be tackled should be.

But what are the implications from a user experience perspective?

By getting everyone onto the same page, it made my job an order of magnitude easier

It’s been a product-creation epiphany. By getting everyone onto the same page, it made my job an order of magnitude easier. Why? There was almost certainly a developer present when a problem or opportunity is spotted. I’ve spent too much of my time pitching legitimate problems (and solutions) back to development teams in the past, attempting to get “buy in” for problem (or solution). By having everyone on the team be part of the earlier stages in that process—the problem identification bit—the end result has been excellent. The what, when, why is just obvious (even if the solution isn’t).

It’s important to remember this works particularly well when you’re working in the same building as your users. When they’re not in the same building, it can be a challenge. I wouldn’t suggest this is easy when they’re not co-located, but the same principle applies: in any research, get the whole team involved in the process, and get them to know your users without the lens of a UX person filtering out.

Where did we end up? Here’s a screenshot of the current product, which is being happily used by our editorial colleagues:

Screenshot of Workflow
Screenshot of Workflow. Illustration: The Guardian

Lessons learned

The biggest lesson learned is that giving people the ability to work on a product in a way that they see fit is a liberating and ultimately rewarding way to develop a product. It absolutely requires the team to understand the problems that are being solved. By empowering the team to speak to people directly, you end up with a greater corpus of understanding, which leads to better decision making. You might disagree about the solution, but you know that the problem is shared.

And as a UX person? We need to champion whole team understanding and user engagement, and not get in the way. If you’re doing research and playing it back to the team at a later date using a presentation, you’ve probably just disconnected from the team. If you work in the same building as your users and team for eight hours a day, then the ‘playback’ is the ongoing conversation with users and the team. You might need to formalise things occasionally, but it should be as a last resort.

One excellent example of team ‘connectedness to the problem’ is features requests: it’s been rare that we’ve not discussed or suggested features in advance of our users actually requesting them.

A final thought. To make this work, it does require an engaged development team with a certain level of maturity and confidence, so bear that in mind. It won’t work for all teams, but where it can, embrace it.

Continue reading

All the news that fits to print What to listen to next? jq to the rescue!