2010-11-25

Getting started with Usability and User Centered Design - Part II

Some time ago we detailed the first steps to start including User-Centered Design in your software development process, presenting to you the most easy-to-integrate techniques, but there is more than that if you want to get the best out of User-Centered Design

User research

Doing user research is the core of User-Centered design because it's the best way to understand the user goals, needs and context. It's hard to integrate it into a company's design & development process, but once you get started paying attention to your application's users, guidelines are not enough: you need to know better your audience, and the best way to do it is through a research process.

Ethnographic Interviews:
explore your user's world from an anthropologic point of view. Make interviews registering the context around them, so you can learn about their daily life, how they use their workspace, their problems and needs, how they think about technology, how they use similar and related products. It's very enlightening to learn about real problems of your potential users, once you have do it, you'll probably start thinking in possible solutions and design directions. But first you need to systematize what you've learned
Personas construction:
summarizing what you've learned in Personas will help you to communicate easier your findings about your potential users and their different needs and goals. It's a design tool: all the team can benefit from having fictional users extracted from the interviews. With Personas, people working on the project start talking about well-known characters instead of talking about "the user" without knowing who he is.
Scenarios building:
to build an escenario is to put your Personas in action, narrating the situations in which they will use your product. It's a creative task that helps designers to see the process from the user's perspective (with their goals, needs, and context) and to improve it as well. It also helps them to see the big picture and to be focused in the most relevant tasks. This tasks could also be split into user stories to integrate this phase with the scrum process
Requirements and Use Cases:
Based on the scenarios you can start extracting the most important requirements and building Use Cases. The main difference with other processes is that you have a clear path to follow based on your research.
Usability tests:
once you've designed some screens, you can conduct this kind of tests by asking some potential users to follow a set of predefined tasks in your application or site. You''ll be able to find problems and concerns they might have by observing them while they execute the tasks you asked for. This technique helps you to known better how real users understand your site and what sections of your product needs to be improved or changed.
Card Sorting:
This technique can be useful to give an structure to your site that reflects the way your potential users think about it. You simply need to ask them to organize a bunch of labeled post-its, in a way that makes sense to them. Then you can compare the different answers to find coincidences.
A/B tests:
A/B tests are useful to optimize a section of your application by testing two or more different design options against a large number of users. Then you can know which one works better by analyzing conversion statistics.

Recommended reading

After this short introduction to User Centered Design, you can keep on learning by reading some of the most important books on this subject

  • Design of Everyday Things, by Donald Norman, is about the philosophy and basic rules of Usability. Actually, Don Norman isn't a designer, he is a psychologist, and the first edition of this book was called "Psychology of Everyday Things" [Amazon]
  • Don't Make Me Think, by Steve Krug. Althought it's a bit old, this book explains in a very practical and easy way how to design a site thinking of users. [Amazon]
  • About Face 3, by Alan Cooper, is one of the most detailed books about the whole process of designing an usable product. [Amazon]
  • Emotional Design, by Don Norman, is a book about how emotions and aesthetics can be part of Usability that is a very rational approach to design. [Amazon]

Staying in touch with the community

It's better if you have someone who can guide you through this process, but... how to know specialists in this area? IxDA is a global community of interaction designers who take care of usability (among other very related subjects like information architecture, interaction design, user experience and accesibility). It has a lot of local branches that organize events and can help you through your process. We are assisting to events organized by IxDA Buenos Aires

If you want to know more about this subject, you could also visit our User Centered Design section.

2010-11-19

Zauber @ QCon San Francisco 2010

This month we participated in the 4th annual QCon San Francisco. This conference is held by InfoQ in several cities all over the world, and the SF edition was a meeting point for over 80 speakers and 500 attendees. It included several tracks related to software architectures, agile software development, IT operations, NoSQL, applications security and more.

It was really hard to choose between 5 different tracks at the same time, mostly because they were all interesting.

You could find people from all over the world, most of them highly technical developers who wanted to learn state of the art techniques. It was amazing to find out about architectural solutions from Facebook, Twitter, Netflix, eBay to keep their systems up serving millions and millions of users.

I chose most of the software architectures and NoSQL talks and I wanted to share some highlights about them:

  • Twitter has many problems scaling data, so they went through a series or incremental iterations until they found a good solution using MySQL with partition + replication + indexes + memcache. Also they are currently using NoSQL for data mining, geo indexing and real time analytics. As Ryan King suggested in his talk, there is no database that fills all the gaps, because they tried to use NoSQL to store tweets and they didn't succeed. Ryan also talked about some ad hoc frameworks developed by twitter, like Gizzard, Haplo, Rainbird, Cuckoo and Snowflake.
  • Facebook showed how they scale their social graph using MySQL and PHP. Their secret is using MySQL not as a RDBMs but as a schema-less key/value datastore, and compiling PHP to C++ (yes!) for better performance.
  • eBay has several systems and thousands of machines running their business. Randy Shoup explained many good practices for addressing problems at that scale like partition everything, asynchronous connections everywhere and incremental system change.
  • Netflix is running almost all their infrastructure in the cloud. That was a big shift in their paradigm because they moved from a company that rents DVDs to a company that streams content. Adrian Cockcroft said they are working close to Amazon because they are pushing AWS to its limits!. He also suggested several "cloud patterns" like no sticky session, no chatty protocols (use Apache Avro) and NoSQL.
  • Jason McHugh from Amazon S3 demoed how they can handle 30000 request per second on S3. His solution includes distributed hash tables and two level caches, one in webservers and the other over storage, both communicated using a protocol that allows high traffic distribution in order to avoid hot spots. All these solutions were described as resiliency techniques.
  • Ryan Dahl, node.js developer, gave a great talk about server performance and asynchronous purity to build scalable network programs.
  • Erik Meijer blow up our minds demonstrating that SQL is equivalent to NoSQL. This was the first time he talked about this out of his lab, so it was an inspiring moment.

  • LMAX described how they can handle over 100k concurrent transactions per second with less than 1ms latency. They even optimized code so it can be stored efficiently in CPU caches, and worked with ring buffers for processing huge amounts of transactions. Other techniques included reducing I/O, removing concerns from code and designing a perfect object model.
  • Ron Bodkin from Quancast described how they can process 300 billion events per month using Hadoop + Map/Reduce. After that they do data mining with Greenplum. Also he gave a good piece of advice: "start with small datasets so you can understand what is going on, then scale"
  • Ralph Johnson, one of the famous "Gang of Four", gave a talk about Parallel Programming Patterns. He talked about Fork-Join (hopefully deterministic, no I/O, no locks), Data Parallelism (deterministic, i.e. Map/Reduce) and Actors (not deterministic, good for I/O)
  • Java 8 is going to include project lambda, so Alex Buckley from Oracle explained how Java is going to take advantage of multiple cores.

Also there were four keynotes:

  • Patrick Copeland (Google Director of Engineering): this keynote was really inspiring. Patrick talked about the innovation culture at Google and how they develop products. All his ideas are expressed in the Pretotyping Manifesto.
  • Dan Ingalls (Principal Architect of Smalltalk): Dan taught us how you can do incredible things and have fun developing software. It was a pleasure to see one of the founders of software as we know it.
  • Randy Shoup (eBay Chief Engineer): in this keynote we learnt best practices on being elastic in the cloud.
  • Martin Fowler (Chief Scientist at ThoughtWorks): He started talking about his most recent research: DSL. After that he talked about two of his most well known patterns: Continuous Integration and Event Sourcing. Martin is a great speaker and engaged the audience with his huge experience and anecdotes.


As a conclusion, I found some recurrent themes in many talks:

  • Using the right tool for the job: at high scale projects you have to try and try different solutions, keep your mind open and choose the right tool. Here is where engineering shines and you can find state of the art solutions.
  • Eventual consistency: almost in every talk I heard that phrase. New data models are arising and consumer are multiplying everywhere, thus the web is pushing databases to its limits and here is the price we have to pay. I predict exciting times ahead related to NoSQL vs. SQL and distributed data processing.

Being part of QCon SF 2010 was an incredible experience. Congratulations to InfoQ and QCon for this great event. Zauber will be there again next year for sure!