Tag Archives: development

User-Driven Development

It’s one thing to put yourself in the shoes of your potential customers and think about how to solve their pain points but it’s entirely something else to pretend that this product already exists and think about how you would market it.

This is the approach at Amazon and I think it’s quite effective. It’s something they refer to as, Working Backwards. This is the process of definition which helps clarify needed features (and their priority) before coding has even begun. I’m a big believer in hacking together working prototypes and tend to jump right in. This approach is more nuanced and helps shake off any geek-halo in the code-first approach. From Werner Vogal’s (Amazon’s CTO) post:

  1. Start by writing the Press Release [1] Nail it. The press release describes in a simple way what the product does and why it exists – what are the features and benefits. It needs to be very clear and to the point. Writing a press release up front clarifies how the world will see the product – not just how we think about it internally.
  2. Write a Frequently Asked Questions document. Here’s where we add meat to the skeleton provided by the press release. It includes questions that came up when we wrote the press release. You would include questions that other folks asked when you shared the press release and you include questions that define what the product is good for. You put yourself in the shoes of someone using the product and consider all the questions you would have.
  3. Define the customer experience. Describe in precise detail the customer experience for the different things a customer might do with the product. For products with a user interface, we would build mock ups of each screen that the customer uses. For web services, we write use cases, including code snippets, which describe ways you can imagine people using the product. The goal here is to tell stories of how a customer is solving their problems using the product.
  4. Write the User Manual. The user manual is what a customer will use to really find out about what the product is and how they will use it. The user manual typically has three sections, concepts, how-to, and reference, which between them tell the customer everything they need to know to use the product. For products with more than one kind of user, we write more than one user manual.

[1] Ian McAllister, who also works at Amazon, posts on Quora about “working backwards” (it’s via this Quora post that I found Werner’s post, thank you!). He writes in more detail about how to structure the mock-press release.

  • Heading – Name the product in a way the reader (i.e. your target customers) will understand.
  • Sub-Heading – Describe who the market for the product is and what benefit they get. One sentence only underneath the title.
  • Summary – Give a summary of the product and the benefit. Assume the reader will not read anything else so make this paragraph good.
  • Problem – Describe the problem your product solves.
  • Solution – Describe how your product elegantly solves the problem.
  • Quote from You – A quote from a spokesperson in your company.
  • How to Get Started – Describe how easy it is to get started.
  • Customer Quote – Provide a quote from a hypothetical customer that describes how they experienced the benefit.
  • Closing and Call to Action – Wrap it up and give pointers where the reader should go next.

and most importantly:

Oh, and I also like to write press-releases in what I call “Oprah-speak” for mainstream consumer products. Imagine you’re sitting on Oprah’s couch and have just explained the product to her, then you listen as she explains it to her audience. That’s “Oprah-speak”, not “Geek-speak”.

You need a foundation before you take out the walls

I’m a web guy. I have been working on web products and web sites for many years and have grown used to the tools and platforms available to web developers. The mobile web is different. There are so many layers of technology which are still evolving. The layers of abstraction which make web development easy don’t exist in the mobile world so it’s difficult to unify experience across devices. I’ve been trying to put my finger on an easy to way to illustrate this and today I was pointed to a post by Mike Rowehl (who runs the Silicon Valley Mobile Monday events) that hit it home for me.

If I was looking to develop for PCs and had to join Dell’s developer program to get into about developing for Dells, and then Gateway’s developer program to make my app work on Gateway, and then Toshiba to make my app work on Toshibas – and then have to worry about differences between Comcast and Savis and Internap at the network level. Nothing would ever get done.

This is the current state of the mobile web if you’re a developer. It’s too damn difficult and if you’re trying to reach a global audience, you really need to pick and choose your platforms carefully to avoid death by one thousand exceptions. Thanks to the iPhone we can see the benefits of a tightly defined ecosystem. While I don’t believe in the restrictions the iPhone places around its device and data you put onto it, I hope that Apple’s example gives everyone a taste of what’s possible so that consumer demand will drive the industry towards common APIs that will make greater cooperation and thus innovation possible.