When we set out to build Aardvark, we made two decisions:
- we wanted to be user-driven — that is, we wanted to be informed by the interests and needs of people who were actually using Aardvark; and
- we wanted to stay nimble with our engineering by being highly collaborative and adaptive.
There are various Official Approaches for achieving these goals — such as User-Centered Design and a variety of Agile Engineering methodologies — and in fact, combining those two was the subject of a panel I participated in the other week at the Web2.0 Expo.
We’ve found that the two can go together quite nicely. This post is about our best practices for combining some elements of User-Centered Design and Extreme Programming (a type of agile engineering), which we’ve developed by iterating on our process design the same way we iterate on our product design. This is a single process we use for *product development* — as opposed to using separate processes for design or engineering.

Learn From Users
On a regular basis we invite a dozen users into our office to chat about their Aardvark experiences, and one or two interviewers will sit with each of them for about an hour.
In these interviews we’re trying to do three things:
- identify problems or needs that Aardvark users have;
- identify opportunities for Aardvark development; and
- solicit ideas for ways to address these problems and opportunities.
The main deliverable is a presentation to the team that is primarily written with actual quotes from the interviews.
In addition to these regularly scheduled sessions, we also have ongoing processes to gather direct feedback, external comments (on blogs and Twitter), internal comments (from team members), and factor these into our learnings.
Design
We then set out to design possible features and solutions in response to these learnings. The full team is sometimes involved in initial brainstorming; then a smaller group takes responsibility for actually working out some proposed designs. We end up with a few options that seem to us internally to be good candidates for addressing what we’ve learned.
Sanity-Check With Users
This is part of our process that few other startups do.
After whittling down the list to the most compelling ideas, we validate them by manually simulating the feature in our product and seeing how people react.
- For website features, we can test an idea by creating a paper prototype and showing it to someone in our office. These sessions are closer to guided interviews than traditional usability studies because the goal isn’t to perfect the user-interface yet, the goal is to see if the feature is understandable and appealing.
- For features involving IM or email, we can simulate it “live” to people using Aardvark with an infrastructure that we’ve built just for this purpose. Shortly after testing a feature live (and seeing how people behave), we follow up with all of the users who encountered it and ask them about the experience, with tremendous response rates (people are very responsive to requests for feedback!).
Design Review With Team
At this point in the process we have a series of new features and tweaks to existing features, all of which respond to actual user needs and have been vetted by our users. (We have yet to do any significant “ready for prime time” engineering.)
One of the special characteristics of Aardvark is that all of the people who work here are power-users of the product… we all have strong opinions about Aardvark’s design, because it’s a part of our everyday lives. So at this point we do a full-team design review (on a weekly basis) where we go through all of the designs ready to be implemented the following week and gather team input. The team has been involved up to this point, but this is a final review before committing more engineering resources to a project.
Implementation Notes
Every week our engineering team sits down and prioritizes the work for the following week’s release as per an Agile methodology. We use Pivotal Tracker to manage the process. Most of the time, if our process is working correctly, all of the work being discussed has gone through this design process over the course of a week to a month, and the engineers are familiar with the designs.
Instead of having feature documentation, the engineering team briefly discusses the implementation of the feature and writes up implementation notes.
Implement
We implement most of our work in small chunks that output some measure of user value. Chunking our work for implementation allows us to stay on the same page internally (engineers know almost exactly what they need to do), and it allows us to release quickly to users so we know whether we’re succeeding. We usually release after a week of engineering work (for most bite-sized features), and then begin again… follow up with our users, see how the feature has been received, identify problems and opportunities…
That’s a very rough outline of how it works at Aardvark, for now at least. It’s proven to be very effective at letting us move quickly+responsively, while keeping everyone involved — both our team, and our users. In some ways, it can feel like a lot of process, and a lot of attention to maintaining process; but we feel it really pays off in the end and significantly reduces the risk of building the wrong thing.
We’d love to hear if any of these resonate with other startups, and we’d love to learn what additional practices are working for other teams, so we can continue to improve our own process.
12 Comments
So where is web analytics in this proces?
Hi Martin - we use analytics at two of the stages:
(1) at the end of the process, after a feature has been released, we’ll run analytics to see how it is performing. For each feature or tweak we have specific goals, and we measure against those goals.
(2) we also use analytics in the first stage, in learning from users. There, we try *not* to do too much “exploratory” analytical analysis, like browsing through data to see what we’ll find. Instead, we usually ask very specific questions that have clear actions as consequences, and run a variety of analytics to answer those questions.
Design must be simple and clear. It’s my opnion.
I just want to say thanks to the owner of this site. This information is very useful for my interests. Big thanks 2 uKeep going in that way.
Learn from users is very clever !
Thanks for the very useful info!
Thanks for sharing, really interesting and inspiring!
Go where he will, the wise man is at home His harth the earth, his hall the azure dome.
Your articles above are very thoughtful and insightful. As ceo of pre-startup net business, I can appreciate and feel the energy of intellect behind it all.
Thank you soo much
Nick
Your articles above are very thoughtful and insightful. As ceo of pre-startup net business, I can appreciate and feel the energy of intellect behind it all.
Thank you soo much
zaleon
Can’t answer but know someone who can? Send the question their way! Just type ‘refer:’ followed by the person’s name – or email address if they’re not on Aardvark - and they can go to a customized web page to try to answer.
I love Aardvark,
and now i’m even using its main idea for my graduation project on helping people conserve energy at their households. Once people get feedback from their energy meters, they want to do stuff, but often they don’t know where to start from while the web it’s too overwhelming…
6 Trackbacks
[...] entire ordeal seems to be a far cry from Aardvark’s self proclaimed “approach to design and development processes“: When we set out to build Aardvark, we made two [...]
[...] Here at Aardvark we use Ruby on Rails (RoR) and embrace the ecosystem around it. This allows us to move fast, with agility, while keeping bugs and production incidents rare. (Read more about our approach to engineering.) [...]
[...] You may have noticed that we’re constantly soliciting your feedback here at Aardvark. This is because we strongly believe that Aardvark should be a user-driven company. After all, Aardvark wouldn’t work very well without you. (You can read more about our approach to design and development here.) [...]
[...] you take a blue print for this process – I like the way the guys at Aardvark lay it out – you can easily see how this can be applied more broadly to a small business (you [...]
[...] written previously about how we incorporate user research into our development process and how we manage user feedback. Recently we’ve been asked to delve into more detail about [...]
[...] Na Aardvark, o processo de design e desenvolvimento é a coisa mais importante para a empresa. Todos têm a responsabilidade de parar regularmente e discutir o resultado dos experimentos e aprender coletivamente. Para cada iteração, eles procuram identificar quais são as hipóteses-chave ou os problemas que estão incomodando mais e projetam uma solução para testar aquilo, buscando validar o design com usuários antes de investir recursos de engenharia na funcionalidade. O gráfico abaixo ilustra o ciclo de desenvolvimento de cada lote. [...]