Serverless Functions

Improving developer experience in an event-driven cloud service

Overview

Serverless Functions is a customer-facing cloud service that allows developers to run code in response to events without managing servers.

The service is part of a broader cloud platform and is used to build event-driven and scalable applications.

The first version of the product was heavily based on competitor analysis.

Over time, the team identified opportunities to significantly improve the developer experience — while working strictly within an existing design system and predefined UI components.

Context & Challenge

Despite being functionally complete, the initial version had several UX issues:

  • Core workflows (function creation, debugging, testing) were fragmented

  • Developers had to navigate multiple screens to complete simple tasks

  • Debugging and iteration cycles were slow and cognitively demanding

  • The mental model of how functions work in the platform was unclear

These issues increased time-to-first-success and made the product harder to adopt.

Constraints

  • No changes to the visual language or design system components

  • Limited ability to introduce new UI patterns

  • Need to stay compatible with existing backend logic

These constraints required focusing purely on workflow clarity and interaction design, rather than UI polish.

My Role

Product Designer

  • UX audit of the existing solution

  • Identifying usability and workflow issues

  • Redesigning core user flows

  • Planning and running usability testing

  • Synthesizing insights and presenting results to stakeholders

Design approach

I started with a UX audit of the existing solution to identify friction points and unnecessary steps.

The main design goal was to reduce cognitive load and number of actions required to reach a successful outcome.

Key principles:

  • Fewer screens, clearer progression

  • Stronger alignment with developers’ mental models

  • Faster feedback during debugging and testing

Key design decisions

Simplified core workflows

I restructured the main user flows to reduce the number of steps required to:

  • create a function

  • debug and test execution

Even visually, the updated user flows became significantly shorter and easier to follow.

Clearer debugging experience

Debugging is one of the most critical and stressful moments for developers.

The redesigned flow prioritizes:

  • immediate visibility of execution results

  • faster access to logs and errors

  • fewer context switches between screens

This allowed developers to iterate faster and stay focused on problem-solving.

Progressive disclosure

Instead of exposing all configuration options at once, the interface reveals complexity progressively — only when it becomes relevant to the user.

This approach reduced noise for less experienced users while keeping advanced options accessible.

Usability testing

To validate the design decisions, I prepared a detailed usability testing guide.

Each interaction point was linked to a specific hypothesis, with corresponding tasks and questions.

I conducted usability sessions, analyzed the results, and compiled a structured report highlighting:

  • confirmed hypotheses

  • unexpected user behavior

  • areas requiring further iteration

The findings were presented to the team and used to refine the solution.

Outcome

  • Core workflows became shorter and more predictable

  • Debugging and iteration cycles required fewer steps

  • The overall experience aligned better with developers’ mental models