Sunday, December 10, 2006

The Theory of User Motivation: Applying Maslow’s Principles to Build Better Software Products (Part 1)

Ever been part of a software project where you have had to choose between time to market (read ‘schedule’) and the right thing to do (usually translated as ‘content’)? I’m sure you have. It’s a tough decision, and most people just follow their gut (also known as ‘top management’) and go one way or the other.

How else does one go about in a situation like this? Can any tools be used? How can one arrive at the right course of action?

In this article I would be proposing the use of ‘User Motivation’ as tool to evaluate a situation such as this.

What is ‘User Motivation’: Motivation generally refers to the desire or willingness to get tasks accomplished. It is generally identified by initiation, direction, intensity and persistence of behavior that will lead to the completion of the desired task.

Similarly, user motivation can be referred to the desire or willingness to use a particular piece of software in order to complete a specified task.

Readers familiar with the theories of human motivation would be familiar with Maslow and McGregor’s theories of ‘Human Motivation’. The theory is based upon the ‘Hierarchy of needs’, and it argues that as humans meet their basic needs, they go on to seek and fulfill higher needs one after another. The human needs as per Maslow’s hierarchy start with physiological needs, safety needs, enjoyment needs and going up to esteems and actualization needs. This hierarchy is usually denoted in the form of a pyramid as shown in the diagram.

For the sake of defining ‘User Motivation’ we can use Maslow’s hierarchy as a basis for defining the progressive set of needs user look to when it comes to a software product as well. This ‘Hierarchy of user needs’ is what forms the basis of evaluating ‘User Motivation’. For each level in Maslow’s Hierarchy, there is a corresponding set of software requirement. Let’s start at the very bottom.

Physiological Needs (Functionality): This is the most basic of human needs and takes the utmost priority as far as humans are concerned. Generally this consists of the need to breathe, eat and anything else that is almost important for us to survive. The corresponding category of needs in ‘User Motivation’ would refer to the basic software functionality. Without meeting this need every other need takes a lesser priority. Let us take the example of a user who wishes to use a word-processing document to write an article. Suppose instead of being provided a word processor, the user is provided with a best of breed image editing software with one piece of functionality lack: The ability to set text. This would be a case where the user has been deprived of the most basic functionality; that is word processing. Note here that the user would hypothetically be able to use tools from the image editing software to draw text, but it would require an inordinate amount of time, that would not justify the use of computer for the purpose. Hence the basis for satisfying user needs has to be that the goal that the user wants to accomplish should be easier to accomplish than it would be without the use of computer system.

Identifying Physiological needs: There are a number of methods and processes that can be followed to identify these needs for the particular software. The most common one is to do a competitive analysis of other software that are available in the market. However this is not often a reliable method as most people tend to over-design and it does not give an idea as to what is the bare minimum feature set the user is looking for. A far more effective tool would be to conduct a contextual enquiry and arrive at the bare minimum feature set that the user would require to complete the task. This would need to be updated frequently using either surveys or other voice of the customer techniques.

Safety Needs (Trust): The Human need for safety corresponds to the user's need to be able to trust the system. Generally trust is built by having a stable software product that is free of defects and does not crash inordinately. If the nature of the software involves the privacy of the user's data, then security also plays at this level. Taking the same example of the word-processing need, a user would only be compelled to work at this level if the software satisfies the functionality need of being able to type words and is also stable and defect free. Given the choice between a bug free product and one which is still alpha code, the user will choose a bug free product. Apart from traditional functional defects, at this level, users would like the software to be free of usability defects as well, though they would not lay an emphasis on ease of use.

Along with a stable product, documented and live customer support also works at this level, providing users with a sense of security that they have help available. But there is an exception that can be made for the early adopters who can be made to use the software with minimal support or documentation.

Checking for the level of safety: A formal QA process along with a Beta testing process will ensure that most of the safety needs for the software are met prior to release. Apart from this, including usability techniques like card sorting and usability testing into the development process ensures that no blaring usability flaws are present in the system which might cause the user to perceive the software as being possibly defect prone.

Belonging Needs (Social/Responsiveness): Software that satisfies the first two levels of needs, now has to vie for the next level which is that of social acceptance. A software that is used by a number of highly visible people in the community makes it more acceptable for the user. Thus building a user community and a way for users to share experiences and learn from experiences of others plays an important role at this point. If the software tool is aimed at technology savvy community, exposing APIs is also a good way of building up the community.

Apart from this need to be part of a community, at this level, the user expects the software to be responsiveness as well. The is where qualities like performance and slickness of the design in terms of handling user errors comes into play. Software scalability also works at this level.

Easy ways to fulfill this need: Today engaging the user community is an important part of any software, and a simple effort like having a corporate blog that communicates and receives inputs from the users goes a long way in building this kind of a relationship with the user.

Esteem Needs (Experience): Most software available today, do well with the earlier three sets of needs and it is at the next level that they tend to falter. At this level the user expects the software to provide them with an end to end experience, right from the point of purchase up the point where they are ready to go up to the next level.

How to get there and measure the experience: Developer and user conferences are a a good way of engaging the user community at this level. If the software is in the enterprise space, then customer relationship management plays an important role and customer satisfaction surveys play an important role in measuring the effectiveness of efforts put into meeting this level of user needs.

Self Actualization (Pride): The last and final level is the holy grail of software development, where the user no longer needs any more motivation to use the software, but with each use, there is an actual sense of pride that is associated with the use. At this level, the users will come back and give feedback on the software without the developer actually having to make an effort.

Having understood these levels of user needs it would be easy to prioritize the software requirements so that depending upon the urgency of the time to market, one can actually analyze and decide upon which pieces of functionality can be taken up. In the next part of this article we will take a look at how we can take those decisions.