Human Centred Development: Writing code with the user in mind
The term “Human Centered Design” describes a process of creative problem solving, keeping the users needs at heart. This is my take on how to translate it into the world of Web Development.
“Human Centered Design is a process that starts with the people you’re designing for and ends with new solutions that are tailor made to suit their needs.” (IDEO.org)
One might be inclined to place the task of building a digital product into the implementation phase. I beg to differ! Read on to learn how I see Human Centered Development going through each of the steps, explained by using a Case Study.
📷 The three steps of the Human Centered Design approach
One of our clients approached us to redesign their marketing website. The site is the main driver for new client acquisition and plays an important role in their sales channels. Our client requested changes in the design and the messaging, but also in the way the website is technically build because the current Content Management System (CMS) was frustrating to use internally.
Who are the people we are designing for?
In Human Centered Development we also have to start with this question. We are not only building a digital product for the people who eventually experience it in their browsers (e.g. potential customers), but also for the clients who use it internally (e.g. content managers, marketing team) as well as for other developers.
📷 Our users are not only the people who see the site on their screens.
Once we made ourselves aware of the different user groups for our digital product, we can kick off the three phases of Inspiration, Ideation and Implementation.
I. Technical Inspiration - Grasping the product domain + requirements
In order to technically immerse ourselves, we look at the systems the client currently uses, which pain points exist and which restrictions we have to deal with.
In our example this could lead to interviewing internal teams to understand their struggles with the current CMS, running a performance audit of the current website, having a conversation with the internal IT team to understand the technical landscape and making ourselves familiar with the existing code-base.
A list of initial requirements for our digital product. Which changes are necessary or would be desirable to make our users more happy?
II. Technical Ideation - Prototyping and proof of concept
In Human Centered Development we want to think contrarily to Resume Driven Development. The technical solutions we choose should be balanced between all of our users needs and not follow personal preferences of single developers.
Prototyping technical solutions does not always mean that we have to write code. Depending on the digital product these solutions could manifest in User Flows, Process Diagrams or Data Models. All of these have the purpose to be discussed + amended in collaboration with future users.
In our example this could mean that we create an overview of the new CMS data models + editor fields to receive feedback by the clients content managers. We would also create a proof of concept test application with the new Content Management System and the front-end technology we want to use.
III. Technical Implementation - Collaboration and compromise
The implementation phase works best through very tight collaboration between design and development. Often compromises have to be made on the way from visual designs to technical execution — alongside time, budget and resource limitations.
When following an approach of Human Centered Development it helps to make these compromises while thinking about the people who will use our digital product. Does the higher effort to implement solution A, compared to solution B, create equally more benefit for the user?
Using the users needs as currency can help to prioritise tasks, discuss on a common ground between disciplines and maintain focus within the team.
What do you think?
Human Centered Development is about rethinking web development from being the final step of a production process to being run in parallel with all other disciplines.
Web Development is not another step but rather another perspective while achieving the same goal: Creating digital products which people actually want to use.
What’s your take on this? How do you make sure to maintain user centred while writing code?