Monday 20 March 2017

Combining Agile Software Development with User Centred Design

I found myself in an interesting situation this semester - two of my classes involved team-based development and collaboration. I took CSC301 which is a software engineering class as well as this class. What's more notable, however, is that in both classes, I was developing products that were aimed at a specific user-base and required very systematic approaches in order to create products that were compelling and useful to the target group.

In this class, my group and I are working to build interactive technologies for the homeless. In CSC301, my group and I are building HCI tools for people who don't have hands and arms. Dealing with marginalized groups in both classes meant that I was in a unique position to take my understanding of each class and apply it to the other class.

After 10 weeks of CSC318, I have found some of my opinions to have changed. Before, I was fairly confident that I knew a lot of things. I knew what users wanted. I knew how to make good apps. I knew good design from bad design. But after doing this class, I have found my own knowledge and opinions challenged many times.  I thought I knew what was best for users, but that isn't true. There have been multiple occasions where user research, usability evaluation and literature review revealed the flaws in my own understanding.



So, I wanted to take the tools I acquired from CSC318 and use them in CSC301. If I am making interactive technologies for a select group of people, it would make sense to believe that user centered design is an ideal approach to the development process.

There is one problem, however: in the fast paced world of agile development (or to be more specific, scrum development which is what is practiced in CSC301), how can we take the time to formally conduct user centered design? I thought about this for a long time, but I came to a simple answer: you don't. It is important to realize that in the real world, it is very difficult to do things in a way that is 100% consistent with the theory. The theory very specifically states how user centered design is conducted across the development lifecycle, but the reality is that few teams will have the resources and time to follow this approach so perfectly.

Therefore, I realized that it may be more useful for me to take the most important things I learned from UCD and then somehow incorporate them into the agile process. Here is what I did:

- during the design stage (please see the diagram of agile development above to see which stage this is), instead of solely focusing on software specifications, UML, technological constraints and other things like that, also incorporate usability research and user research. Allocate some resources to find out what your users need and what the problem is. What are they lacking currently? It is very important to know before you spend resources on development whether your product is actually useful and whether people actually want it.

- during the build and configure stage, always keep your user research in mind. This may sound simple, but what I mean is that, very often, when software teams start development, they will become highly preoccupied with technical issues, technical research and all the other intricacies of developing highly complex software systems in the 21st century. It is easy to forget what your research showed you in the beginning. I believe it is very important to consistently keep the research in mind, because the final product must be a reflection of what your users actually want, not what you were realistically able to build after constantly changing the target product because of technical difficulties.

- during the testing stage, bring in actual usability testers instead of just unit testers or code readers. This is EXTREMELY important. If the people who are testing the code are people who have been involved in the software development process, chances are, they know too much about the code to judge the product in an impartial way. It is very, very important that the product is tested upon actual users before release so that your team does not end up releasing a product which the actual users do not like.

These are some of the observations I have made over the past couple of weeks as I have been involved in both HCI design and Software design. I hope you, the reader, learned a thing or two from reading this.

Pic sources:
https://image.slidesharecdn.com/edsusergrouppresentation-160206105225/95/user-centred-design-and-students-library-search-behaviours-3-638.jpg?cb=1455237084
https://lh6.googleusercontent.com/o_QZmtpH3XrDabJmS6CUQfOySx7dMGlWT0hKH-HL3OfMWazMHDyMffRRR1GZd2aPMpXqjnwmrto1eCQQ_BSbRui11820xRA0qeu2YZ9CqNUeWHqdwToSk5fdRVQT4vXy9A

No comments:

Post a Comment