My Design Process
My process depends on on the problem that needs to be solved and circumstances it needs to be solved in. However, I generally follow a user-centered design approach that emphasizes empathy, iteration, and collaboration. I find that this is most effective when you can directly observe how people interact with current and future solutions.

Discovery & Research
Three questions are critical at the beginning of any project:
- What problem are we trying to solve?
- Who are we solving it for?
- Why is it important?
While this provides a solid starting point, diving deeper is frequently necessary because problems are
more nuanced than they first appear. Spending resources without understanding if there is a root
cause can lead to effort wasted on superficial solutions that don't address the underlying issue. To
get to that core of a problem, I find the following activities to be highly effective:
- Obtain or document the current user flow and identify pain points.
- Watch users interact with the current solution to observe behaviors and frustrations.
- Conduct user interviews to gather qualitative insights.
- Ask users for insights on their process and ideas they have for improvement.
This phase can involve many other activities like competitive analysis, stakeholder interviews, and market research. It's critical to share the findings from this effort as they are foundational information that sets product, design, and engineering teams up for success and create shared understanding.
Define & Ideate
Figjam (Diagrams, Card sort activities etc.) is my favorite tool to visually represent ideas and validate them when you are attempting to define a solution.
Card sort activities
Particularly for complex problems or roadmap planning activities, card sort exercises are a great way to collaboratively come up with ideas, understand how those ideas are related, gain alignment on what those involved believe is most important, and prioritize what to focus on first.
Diagrams (user flows, journey maps)
Most experiences are not a single step. They involve a series of thoughts, actions, needs, and sometimes multiple personas. Being able to quickly visualize, and iterate on, how the experience flows also makes it simple to understand the pages, modals, components, tables, and other UI components that will likely be necessary. This sets you up for success in the design phase.
Iteration
With boxes and arrows, it's easy to make adjustments and explore multiple approaches. This encourages creativity and helps in identifying the most effective solution before moving into design. In essence, the fidelity of the design should match the fidelity of thinking and Figjam does an excellent job of helping people focus on processes, needs, and ideas before getting stuck on high fidelity details.
Functional Prototypes - AI Assisted
In the past, I wouldn't recommend jumping into prototyping this early. However, with AI tools like Github Co-pilot, it's possible to provide high level prompts that are a summary of your potential ideas and create functional prototypes that allow for a very early gut reaction. In some cases, AI comes up with "intuitive" needs that expose additional experiences that haven't been thought through. You can also easily apply themes using modern frameworks to strip out colors and make the prototype feel neutral or even more wireframe like to avoid introducing biases.
Design & Prototype
Design systems that have Figma libraries or Code components are essential for rapid design work and a functionally and visually consistent application users can trust. I've used Powerpoint, Photoshop, Omnigraffle, Axure, Sketch, and Figma to design software. With AI assisted coding, I believe design can be more efficient when you act as both designer and engineer. Many of Figma's greatest features like auto layout, variables, and components have direct analogs in code but have significant limitations when compared to a state based, component-driven modern application.
My current opinion is that trying to get to a functional prototype as quickly as possible is the best way to validate ideas. Not just for others, but myself. You get to experience a perfect simulation that exposes nuances that can frequently be overlooked in a clickable Figma prototype. Further, the historical need and expense of creating a code based prototype is significantly less relevant and I would argue that robust variable driven Figma prototypes are more time consuming to create.
Depending on the situation, I choose one of two routes: Leverage AI (Github Co-pilot) to create functional prototypes to get an immediate feel for ideas, or spend time in design tools like Figma when precision and fidelity is a critical consideration or when you expect to need offline users to interact with visual artifacts and leave comments on them during a review phase.
Test & Iterate
When I follow the process outlined above, testing and iteration become natural parts of the workflow that happen continuously on user flows, experience, visuals, and prototypes. However, nothing compares to analyzing repetitive real user data with a solution. I also find that metrics are often indicators but insufficient to understand the full picture. At the same time, usability studies help you dig into a problem, but don't give you a good sense of how large the problem is.
This isn't always true. The right metrics, with enough data, can give you confidence that a solution is working. However, I find that a combination of both qualitative and quantitative data is the best way to validate solutions and identify areas for improvement.
These are the key tools I use to gather insights:
- Usability testing with real users to observe interactions and gather feedback.
- A/B testing different versions of a feature to see which performs better.
- Analyzing user feedback from surveys, support tickets, and reviews.
- Iterating on designs based on insights gathered from testing and data analysis.
Deliver & Measure
Shipping a feature doesn't make it successful. Measuring its impact and effectiveness is crucial to understand if it meets user needs and business goals. I focus on the following activities to ensure successful delivery and measurement:
- Review implementation quality to ensure it aligns with design specifications and leverages the expected design system components, patterns, and layouts. Review early and often.
- Collaborate with cross-functional teams to ensure smooth deployment and address any technical challenges.
- Monitor key performance indicators (KPIs) to assess the feature's success.
- Gather user feedback post-launch to identify any issues or areas for improvement.
- Plan for ongoing maintenance and updates based on user needs and market trends.