User-centric feature design

User-centric feature design

May 26, 2024
An image of a happy user interacting with a mobile app

Early in my career, I learned that the most successful features were those designed with the user in mind. Through regular client demos and feedback sessions, I discovered that keeping users at the center of the design process was essential. As I’ve moved to larger companies where users are less accessible and engineers focus more on implementation, I’ve maintained this user-first approach.

Here’s the framework I use when planning new features:

  • Identify the problem
  • Define User Stories
  • Map the User Journey
  • Design the Solution
  • Gather Feedback and Iterate
  graph LR
    A[Identify the Problem] --> B[Define User Stories]
    B --> C[Map the User Journey]
    C --> D[Design the Solution]
    D --> E[Gather Feedback and Iterate]
    E --> A

Identify the problem

Start by clearly defining the problem. Ask:

  • What problem are we solving?
  • Who is experiencing this problem?
  • How does this impact the user’s workflow?

Define User Stories

Capture the user’s perspective with stories following this format:

“As a [type of user], I want [some goal] so that [some reason].”

Example:

“As a new user, I want to sign up with my email address so that I can access the platform.”

Map the User Journey

Visualize the steps users take to accomplish their goal. Include:

  • Stages: Key phases to complete the goal
  • Actions: Specific steps at each stage
  • Emotions: How users feel during the journey
  • Pain Points: Challenges or frustrations encountered
  • Opportunities: Potential improvements

Design the Solution

As a backend engineer, I focus on:

  • User Interaction: Understanding frontend needs helps me design efficient APIs. For example, if users need to save form progress, the backend must support this.

  • API Design: I aim for simplicity and consistency, typically using RESTful APIs with resource-oriented design principles.

  • Data Model: Design for performance and scalability while ensuring data integrity through proper schemas, relationships, and constraints.

  • Security: Follow least-privilege access and store only necessary PII. Consider authentication, authorization, encryption, and secure communication.

  • Scalability: Plan for growth with load balancing, caching, efficient queries, and loose coupling between services.

Gather Feedback and Iterate

Collect feedback through usability testing, surveys, analytics, and user interviews. Involve users early and look for patterns in feedback—one user’s opinion may not represent the majority. If improvement is needed, return to the design phase and repeat until the solution resonates with users.

Building a Platform, Not Just a Product

Design features that are flexible enough to accommodate various user needs rather than solving single, specific problems. While clients may request custom features, maintaining a long-term platform vision prevents technical debt and fragmentation. Adding client-specific features on top of a solid platform is easier than retrofitting a platform around disparate custom features.

Conclusion

Balance user needs with business goals and technical constraints. User-centric design leads to successful products and happier users, but trade-offs are inevitable. Keep users at the center of your design process and continuously seek feedback to ensure you’re building the right features for the right people.