Integration of Usability Practices into Software Development Process

The key for a successful software product is fulfilling the user’s needs and desires to solve a concrete problem and also those software products have to provide user interfaces that allow the users to perform a task in an easy and efficient way.

To increment the usability level of the software products, the development team has to add the usability vision into the whole development process. Currently, the usability perspective is very important in the software production for obtaining a product that can be more appreciated by the users and contribute to an effective and easy form to interact with the software.

In the industry, there are different methodologies and development techniques but most of them do not include any phase especially dedicated to solve usability issues. The two approaches, usability and software development, must be performed side by side to generate a product with better quality and more oriented to the user’s side. Many times, the software is excellent but the interaction between the users and the product is complex or the UI is too difficult to understand and to use.

For integrating the usability techniques to the software development process, some changes have to be introduced to the phases of the different methodologies for obtaining more benefits in each phase.

  • Analysis: Interviews, surveys, focus groups or field studies can be used to determine the real needs of the users and to obtain feedback to complement the design.
  • Design: To test the design with the users and to obtain feedback the designers and developers can use prototypes, participatory designs or usability tests.
  • Testing and Deployment: In the testing phase, there has to be guaranteed that the product doesn’t have bugs but also the usability must be tested in order to ensure that the users can work with the product; usability evaluation and surveys are some examples of the techniques that can be used.

The development process and the schedule of the development of a product must consider the times required to implement the usability techniques and to analyze the results and implement the corresponding changes. Also, it is recommended to use an iterative approach in order to be able to implement the changes associated to the obtained user feedback to the product.

Including and involving users to the development process can help to understand the real needs and to improve the design of the final product to generate a better interaction as well as being more efficient. But most of the organizations are incredulous about it because they have stereotypes and barriers like delay on the production schedules or that the usability tests will increase the number or requirements or even increase the budget. The solution to these problems is to analyze better our users, obtain feedback and plan in advance how to introduce usability in the development process to reserve enough resources to put it in practice.

Finally, adding the usability practices into the software development process can bring many benefits to the development teams and the companies including quality, easiness and usability to their products. On the other hand, implementing usability practices in a large company with a defined software development process required time to train the developers and also a specific budget to apply the techniques and to hire usability experts to be part of the team.

Sources:

Image Sources:

 

Internationalization

In these days, business and applications have a lot of markets that they have to cover that is why the internationalization of the contents is very important. It’s well known that the content is the most important thing for catching the attention of the customers and that fact is true, but also it is important that the customer can actually access and read the content.

The important problem is actually applying that theory and make it possible from the technical point of view and also the other problem is how to communicate the user about the internationalization and location options.

The most used techniques used are:

  • Using flags to show the different languages on which the content is available or for describing the different regions.
  • Use a link to change between different languages. Sometimes those links can be difficult to find for the users or can cause confusion.
  • Other technique is to adapt the website, the app or the software to the different countries and cultures but sometimes it is not possible to create so many different versions or costs too much money.

flags

Youtube.com shows the different languages with the associated flag

grooveshark

Grooveshark (a site for listening music online) provides its content in different languages and also encourage users to help with the translations to generate a more accurate dictionary.

elpais-ed

El País offers differnt editions of the newspaper for their multiple audiences.

So before going “International” some decisions and directions must be taken into account:

  1. Define user requirements: Determine the target and what the needs of the user are.
  2. Create Proper Organization: Content organization and display, also the navigation variances based on the different regions or languages on which the product should be available.
  3. Focus on User Experience: Try to create a special user experience that matches with the culture of the customers. For example writing from right to left.
  4. UI guidelines: The layouts and the display of the contents should consider the different language variations and also have to adapt the navigation, the images, icons and colors to be neutral for the different cultures and regions.
  5. Shopping Habits: They are different depending on the culture of the customer and that can affect to the internationalization of the software. If the software provides an e-shopping functionality those aspects have to be considered too in order to produce a better user experience and also to obtain profits.
  6. Different levels of respect in the relationships: Depending on the culture and the languages, there are some manners at moment of addressing to somebody that can be considered rude or not polite.

The following images are an example of the IKEA website in English  and the IKEA website in arab for the IKEA stores in the United Arab Emirates. The content and the display is adapted to the different audiences.

ikea - eng

ikea-ar

As a conclusion, there are many different ways to address an international audience with a software product and they are related to the cultures and language of that audience. First some research on the background of those behaviors of a determined culture. Also many different aspects have to be considered as part of that Internationalization process in order to obtain as a result a product that is trustable, user-friendly and familiar for the customers of different regions and languages.

Sources:

Image sources:

Usability for Mobile Devices

In these days almost everybody has a smartphone and therefore the mobility is becoming bigger and keeps growing. That is the reason why designers and developers have to consider several aspects when it is mobile time.

According to the article “10 principles of mobile interface design” by Jonathan Stark for the Net Magazine, “the analysts predict that for 2015 mobile phones will overtake desktop computers as our primary means for accessing the internet”. Based on the information provided by this article, I would like to include some reflections about several topics that I found interesting when we have to design or develop a product oriented to the mobile market.

Mobile is different: There are several differences between smartphones and desktop computers. These differences can most be considered when developing for mobile devices and if is necessary change the development process completely. Some specific factors with pros and cons must be taken into account and carefully considered in order to generate a great product.

Mobile Mindset: The design most be focused on satisfying one specific need, also the main purpose of the application must be useful and help the users to solve their problems. Having a lot of functionality is not always the best idea.

img

Interfaces:  The interfaces and the interaction points must be based on the platform’s guidelines and also on the interaction that the user is used to. The response of the application must be really quick and react immediately when the user does something.

The interfaces and interactions must be “Thumb Friendly”, this means that the interaction points and the gestures to activate them must be big enough to use different finger sizes. Sometimes it is also called the “Fat Thumbs Problem”.


Also the content should be the main purpose and the interfaces should be simple and minimalists because if the physical space, the priority should be the content and the simplification of the interactions.

Impact the user: The first impression is crucial. The first time a user opens a anew app is very important because it depends on what our user sees to create a “love” or “hate” relation. If the main page is confusing or the application is very difficult to understand and use, maybe our user won’t come back.
Also another point of impact is the icon, as Jonathan Stark mentions in his article; the icon will be the business card. It has to show the purpose of the app, also a neat and clear icon suggests a neat app. So the creation of an icon for the new app must be done very carefully and thinking in details.

Communication: The application has to be informing its state to the user always. Also must provide instant feedback. There are several ways to show the feedback not necessarily has to be in text it could be vibrating or visual pointing out the selection of the user.
It is not recommended to introduce alerts for information purposes; they interrupt the user and must be just included when necessary.

Another important point and when it is necessary to include alerts is the confirmation. When the application needs a decision from the user, the text has to be clear and concrete to avoid confusions. Also, the “safest” action should be marked by default, the software must not decide for the user.

As a conclusion, designing and developing for mobile devices includes a learning phase when the designers and developers must get used to the technology and be in touch with the new environment for their applications. Many factors have to be considered while creating a product for mobile devices and can condition the design because it has to respect and be aligned with the platform guidelines or with the environment guidelines to replicate what the user is used to interact with.

Image Sources:

Interaction Design Guidelines

There are some factors that need to be considered in the moment of designing and developing a software product. This factors or guidelines are recommended by different authors with the aim of improve the user experience by making the application interfaces more learnable, intuitive, helpful and consistent throughout the software.

From all the interaction design guidelines, I would like to address the topic of the error messages and error prevention. I consider that both are very interesting and have big impact from the user’s side.

Error Messages

The error messages have to be clear and written in user language in order to be understood by the users and help them to recover from the error doing the necessary changes. If the message is too technical, the users will not know the cause and also the effect of their actions.

                         Do not disturb the user!!!

Also error messages must be clear and visible without disturbing the user but being noticeable enough to indicate the users about the error.

                       Noticeable Error Messages

The error, confirmation or alert messages MUST NOT be confuse. This means that the question for the user must be understandable enough to facilitate the decision and also is very important that the options offered are clear and simple.

               Try to take the correct decision!

Also if the user has done an error, the response of the program should be the error message and also point out in a noticeable way where the mistake from the user has occurred; doing this the user will be able to introduce the correct values and recover from the error.

Error Prevention

First, the aim of the software systems should be to avoid the user’s errors and this can be done by a correct prevention. The system should provide help messages or examples of the values or actions that the user has to do in order to complete a task.

       Information Messages to Prevent Errors

Sometimes, the values should be fixed and just proved the user a method to select among them and not type them for guarantying that the introduced information is valid.

Also another option is to provide the user with specific fields to prevent failures while introducing data. For example, in a telephone number field should be 2 or 3 small textboxes to separate the prefix from the actual number or also provide some “artifacts” to help on introducing data like calendars.

      Calendar Field

validation example

      Separate textfields for the telephone numbers

As a conclusion, there are different kinds of guidelines to facilitate and make easier the interaction between the users and the products; these guidelines depend on several factors like the technology used, the platforms, the devices, etc. The designers and the developers should consider the corresponding guidelines for each development with the aim of improve the user experience and provide a better quality. The main idea is first to think about the possible errors or problems that the designing decisions can create for our future users.

Sources:

Paper Prototyping 2

In this post, I want to include some examples of the real usage of paper prototyping. The following videos show that a paper prototype can be very useful and it can help to show the users or stakeholders how the application or the product will be and to test if the interaction between the product and the users is fluid and easy to learn and understand.

Paper prototype of an app for University Students

This video shows clearly how the app will be and some of its functionalities. The designers can perform a test with real users to see how they respond and interact with the application.

Paper prototype for

In this video, there are some specific scenarios for the product and the user has to perform an specific task.

Paper prototyping is a powerfull tool to present to the stakeholders and users how an application or a product will look like and how will be the interaction between the product and the users using low cost prototypes that can be refined as needed before actually coding or manufacturing the final product. The application of this technique can reduce costs and produce very useful information and feed back from the users.

Sources:

Paper Prototyping

Creating prototypes to your software can be very interesting and useful to the designers and developers. Instead of wondering if the users really need or understand their proposals, the implementation of prototypes can provide them some valuable feedback from the users early in the project also the stakeholders or customers can compare if the software meets the specifications and if changes must be made, the developers can manage them on time and not at the end of the project when everything is almost done.

One of the techniques used to prototype and to test the usability of an interface is the Paper Prototyping. This is an interesting technique that basically consists on creating a paper version of the interface manipulated by a person who ‘plays’ as the computer and a real user.

Paper prototyping has many benefits that can help the developers, designers and companies to produce and generate products with more quality and generate user satisfaction. On the other hand, this technique has some factors that can be considered negative or not well seen.

Pros

  • Allows changes on the interfaces before actually implementing it.
  • Not code required to implement a mockup of the interface.
  • Low cost
  • Finds a variety of problems before writing a single line of code.
  • Be creative and experiment with different ideas before choosing the definitive one.

Cons

  • It doesn’t generate code.
  • Users can react different to a paper prototype than a real software interface.
  • Designers and developers can be worried that the customers and users think that they are unprofessional.

In my opinion and after reading information in different sources I think that this technique is very useful to obtain feedback on time from the users about the design and also the implementation is quite simple, easy and low cost. But the designers and developers should be very careful, because low cost and simple doesn’t mean that the paper prototype would be a not understandable drawing or an ugly drawing without any kind of correspondence with the future real software.

The presentation of this kind of prototypes should be very clear, neat and correctly distributed in the space for not disturbing the mind of the user or be a negative factor in the interaction between the users and the actual interface.

As a conclusion, paper prototyping may not be the most accurate prototype of the “real final product” but it is fast, low cost and can generate important benefits to the organizations to settle correctly the scope and the final designing decisions of the project before start coding, this can save a lot of time and money. So the recommendation would be to encourage people to use paper prototypes while designing their products.

Sources:

Wide vision about usability

There are several aspects and concepts in which most of the people doesn’t think about when they are designing and developing a product, in our particular case: developing software.

The main objective should be create a great product that fulfills all the stakeholder’s requirements and has the best quality possible; the problem is that this approach sometimes DOES NOT take into account the satisfaction of the user or the accessibility degree of our product.

The factors mentioned in the last paragraph (satisfaction, accessibility) and some others factors can transform a simple product into a COOL product. The definition of a cool product is very wide and difficult to explain but the result of having a cool product is that the users identify with it.

To design something “cool” but at the same time useful and accessible is not always necessary an extraordinary idea or to create something of another world; sometimes simple things can make the design correct, easy to understand and also “cool”.

Simplicity is a factor that at first glance has nothing to do with cool products or successful products but in reality the simplicity or just having the meaningful things on your product is the best approach for a “cool” and successful product. Why? Because it is easy to understand and to easy use and therefore the public will prefer it over some other products of the same kind but more complex to understand.

     

Another factor that must be considered is the context of use. If one product can be used in several and different contexts is accessible for more people and can reach a bigger market. To make it accessible for many people and in different context of use, the designers and developers of the product have to think in different scenarios and consider several possibilities in order to create a product that can complete its functionality but at the same time can be used by many different people.

There is no 100% successful solution to create a product that is always “cool” but the correct combination between great visual design, good usability and accessibility can upgrade your product to the “cool” level and also have a bigger market and happy customers.

Image Sources:

Importance of visual design in software engineering

One important part of the development of a new application of software is the visual design. Mostly our users don’t know or don’t understand about the programming part or the logic followed to develop an application, they only care about their user experience and part of this user experience is the graphical interface.

From the point of view of the users, the design or the distribution of the elements that are used for the new software interface have to be easy to understand, follow a logic (standards of the industry, the OS, etc) and be related in some way to the real world in order to facilitate the understanding process of our new user. The icons have to simple and related to the actions they perform and the distribution of the components in the layout must be clear and understandable.

From the point of view of the developers, the impact of visual design and graphic design is very important and can be a headache sometimes. The most common “war” in this area is between the graphic designers and the developers because sometimes the design is really beautiful, the static is perfect but the big problem is that it is not possible to implement or some changes have to be made on it to include the required functionality. On the other hand, when the graphic and visual designs are correctly and cleanly structured can be very useful for the developers and solve or make easy to implement some functionalities.

Good Practice: Create Mockups!!

So the impact of graphic and visual design has a big impact on the results of our final product. As software engineers, we cannot say “I program and then somebody else figures out what it should look like”. As mentioned before, both parts the programming (functionality) part and also the static (visual or graphical) part are related and are part of our product; both should be correctly designed and developed.

Successful software is the one that fulfills the requirements, is available when needed and provides a good user experience.

Sometimes is better to design first

Image Sources:

3D Interaction

3D Interaction represents the classical human computer interaction but adding a new concept, this concept is space. This means that users are able to perform their tasks directly in a 3D spatial context.  The idea of using this kind of interaction is to allow the users to obtain real-time visual feedback and to allow the use of natural skills in a realistic way.

The scenarios and the level of interaction can be different depending on the context and the purpose of the system. They can be immersive (completely inside the 3D world) or semi-immersive (interaction between the 3D world and the real world) and the user abilities inside of those environments can be natural (real movements) or “magical” (flying or transporting) to allow the users to perform their tasks and achieve the purposes of the system.

A key point in on the design of 3D environments is the devices used for create or allow the interaction between the computer and the users. There are different devices and different degrees of interaction so the challenge for the designers is to obtain a good combination of those factors in order to encourage the potential users to interact with the software and the environment. Another factor that should be considered is the tiredness or fatigue; after a long period of time doing real movements of the body to interact with the system, the users will be tired.

3D Interaction 1

The interaction and the techniques used may vary according to the system purpose but something should be considered: they have to be creative but simple at the same time. This means that even if the system becomes complicated to implement and has very advanced technologies to understand the movements of the users, the learning process should be simple and the users should understand easily how to interact with the system efficiently.

The interaction with the 3D technologies is very interesting, challenging and can be very useful for many different fields, the users can feel more included inside the system and the management of the different information could be done in a natural way with movements and felling that the digital information or documents are really part of our daily life.

Image sources:

Design

Design is a creative process on which aspects like functionality, easiness, concept and usability must be considered to generate a practical solution that fulfill the customer needs and also add an extra value.

Sometimes the design of a product is wrong and difficult to use, the result of a bad design is that people must change their “natural” or “normal” behavior to adapt and use a bad designed product. Maybe would say “It’s obvious” but the things that are obvious to some people are completely wrong for other people so a good design is not only pretty and beautiful, the objective of the products must be that people feel comfortable to use them and those products must be useful instead of causing more troubles.

Which is the correct button ???

Souce: http://shreevatsa.wordpress.com/2010/06/29/examples-of-bad-design-2/

There is one time when all companies must update, change or reestablish their designing process in order to generate products with an extra value that will be appreciated by the users. As Matias Duarte, Director of user experience in Android mentions in a video of Google fixed its design process and started making beautiful apps  “Design is not just about making things more useful, is not just about making things more beautiful… is about figuring out really figuring out what is the real thing to make and how to make it right.”

Good design, easy to understand.

Souce: http://www.flickr.com/photos/feureau/3683133183/

I think that the process to improve and adapt a design to a different environment depends a lot on the goal that the designing team has in mind. For example, in the video about Google, the changes were done by many people in different teams working together and pursuing the same goal. The feedback is very important if we want to improve our design.

Now the question is how to avoid making the same mistakes in our designs? The answer is not easy or already established but some the most important thing when designing a new product is to make it functional and be sure that your product generates a great user experience!!