CompSci 408
Fall 2025
Delivering Software:
From Concept to Client

Getting Started: Design Thinking, Persona, and Usability

Want your users to fall in love with your designs? Fall in love with your users. — Dana Chisnell

All software creates experiences for its users and every developer (most likely) has good intentions, wanting to provide the best experience possible. Now that software is just about everywhere, that means it has very real affects on their lives (both positive and negative) — so part of the point of this course is to understand why making software is about so much more than just writing code.

Your ultimate goal should be to create software that provides value to users.

For these activities, brainstorming means focusing on the quantity of ideas over their quality by practicing “Yes, and” to build on what another person shares, rather than objecting to or tearing ideas down the idea. Other suggestions to help you ideate include:

Part 1: Experiencing Software as a User

Try to think as broadly as possible about the software you interact with regularly: such as the OS, desktop software, web sites, mobile apps, search engines, cars, appliances, security systems, sensors, smart homes, etc. Likely you use bad software because you have to and use good software because you want to. Likely you also been excited about new software or a new update only to be disappointed and, perhaps, stopped using it all together. Take this time to think about what differentiates those experiences and how you can learn to develop software that provides value and users enjoy using it.

Users have a range of feelings about the software they use that exist in many dimensions. For this exercise, consider the following:

As a team, discuss your software usage experiences following the steps below:

You may also want to take some time to consider how you get your software: open source, free (but at some external cost), subscription based, paid for, included with the purchase of something tangible, etc.; as well as with how much control the End User License Agreement (EULA) (you definitely read :) leaves you. Any whether or not that impacts your feelings about its value.

Part 2: Design Thinking

Design Thinking is a methodology to innovation that emphasizes understanding of the problem you are trying to solve, empathetic understanding of the people you are trying to help, and an iterative process. You can better understand the human behind your next product, method, service, or process idea using design thinking exercises during any phase of your project.

The five steps of the Design Thinking Process:

  1. Empathize – Understand the perspective of the target audience/customer/consumer to identify and address the problem at hand.
  2. Define – Define the problem statement clearly.
  3. Ideate –  Brainstorm ways to address identified unmet needs.
  4. Prototype – Identity which of the possible solutions can best solve the identified problem(s).
  5. Test – Test the product with your target audience to get feedback.

Design Thinking is both a mindset and a process to generate bold and innovative ideas that are designed with the end-user in mind.

Use these exercises to help you better understand the problems your app is trying to solve and think of different ways to solve those problems:

Part 3: Personas

Personas are hypothetical archetypes of actual users, used throughout the design process to help you understand the humans your product is for so you can build features your users will value. Although they are imaginary, they should be defined with significant rigor and precision. Actually, they are not so much 'make up' as discovered as a byproduct of the investigation process (although their names and personal details are definitely made up).

Using personas helps you develop empathy and prevents you from designing for yourself.

As a team, discuss who might use your app and what problems it will solve:

Part 4: Brainstorming

In turns, for each Persona's needs: