Designing a Browser Python Sandbox

Designing a Browser Python Sandbox

Product Designer

Nov 2022 - Jun 2023

Product Owner
Software Engineer
Project Manager

Web Assembly
Pyodide
Typescript

Design Impact

Design Impact

As a Product Designer, I owned all designs for the core Playground experience from in-browser file structure, and Python package workflows, reducing setup friction and increasing repeat usage and supported growth to 2,000+ daily signups.

As a Product Designer, I owned all designs for the core Playground experience from in-browser file structure, and Python package workflows, reducing setup friction and increasing repeat usage and supported growth to 2,000+ daily signups.

The What?

Browser based code playground

Browser based code playground

Programiz PRO Code Playground is an integrated development environment (IDE) designed to democratize coding.

The platform enables users to write, test, and share Python code without the need for installations so beginners could go from lesson to execution without local setup.

Programiz PRO Code Playground is an integrated development environment (IDE) designed to democratize coding.

The platform enables users to write, test, and share Python code without the need for installations so beginners could go from lesson to execution without local setup.

The Why?

Setting up shouldn't stop someone
from learning to code

Setting up shouldn't stop someone
from learning to code

"Taking the first step is always the hardest"

When it comes to coding or any task for that matter, starting something is the biggest hurdle.

Python is easy to start, but practical learning quickly requires additional packages. Installing and managing those dependencies plus environment mismatches turned excitement into drop-off.

When it comes to coding or any task for that matter, starting something is the biggest hurdle.

Python is easy to start, but practical learning quickly requires additional packages. Installing and managing those dependencies plus environment mismatches turned excitement into drop-off.

Business Context

Python courses make up 60% of annual revenue

Python courses make up 60% of annual revenue

Programiz PRO is consistently ranked among the best places to learn Python. So improving the Python learning journey was directly tied to the business.

Programiz PRO is consistently ranked among the best places to learn Python. So improving the Python learning journey was directly tied to the business.

The Actual Problem

Moving from a guided course to running Python locally forced a context switch

Moving from a guided course to running Python locally forced a context switch

This handoff introduced the setup friction (installing Python, managing packages, environment mismatches). And Programiz PRO was losing returning learners to it.

This handoff introduced the setup friction (installing Python, managing packages, environment mismatches). And Programiz PRO was losing returning learners to it.

Phase

Discover

Environment Setup

First Code

Practice

Convert

Behaviors

· Googles "learn Python"

· Lands on Programiz PRO

· Starts a lesson

· Downloads Python installer

· Runs installer

· Debugs PATH errors

· Creates virtual env

· Runs pip install

· Opens IDE or terminal

· Types first lines

· Clicks run / execute

· Tries to import matplotlib

· Hits dependency error

· Searches Stack Overflow

· Completes module

· Decides to continue (or leave)

Feelings

Excited. Motivated to start. Feels like this time it will

work.

Confused. Frustrated. Why is this so hard before I've

even started?

Relieved. Curious. But anxious it could break again.

Stuck. Embarrassed. Considers giving up.

Either proud or gone. No middle ground.

Emotion Curve

Pain Points

Setup consumes entire first session. High drop-off

before writing a single line.

Works on their machine but not others. No way to save

or share.

Package install fails. Environment mismatches.

Excitement turns to frustration.

North Star

Reduce friction to near-zero, close the loop

Reduce friction to near-zero, close the loop

The gap between finishing a course and actually running Python was where users disappeared. Being able to instantly try out all the lessons they learned encourages abetter learning journey and overall higher rate of course completion.

The gap between finishing a course and actually running Python was where users disappeared. Being able to instantly try out all the lessons they learned encourages abetter learning journey and overall higher rate of course completion.

Entry Point A

Entry Point A

Entry Point A

Purchased Python Course

Purchased Python Course

Purchased Python Course

Logged-in learner, high intent

Logged-in learner, high intent

Logged-in learner, high intent

Entry Point B

Entry Point B

Entry Point B

Googled 'Code Playground'

Googled 'Code Playground'

Googled 'Code Playground'

Curious explorer, low intent

Curious explorer, low intent

Curious explorer, low intent

Zero-Friction Access

Zero-Friction Access

Zero-Friction Access

Land on Playground · No Installation · Instant Editor Loads

Land on Playground · No Installation · Instant Editor Loads

Land on Playground · No Installation · Instant Editor Loads

First Value Moment

First Value Moment

First Value Moment

Writes First Line of Code · Clicks Run · Sees Output / Graph Instantly

Writes First Line of Code · Clicks Run · Sees Output / Graph Instantly

Writes First Line of Code · Clicks Run · Sees Output / Graph Instantly

Retention Path

Retention Path

Retention Path

Create Files & Projects · Higher Completion

Create Files & Projects · Higher Completion

Create Files & Projects · Higher Completion

Acquisition Path

Acquisition Path

Acquisition Path

Creates Account · Enrolls in Course · Converts to Paid User

Creates Account · Enrolls in Course · Converts to Paid User

Creates Account · Enrolls in Course · Converts to Paid User

Business Impact

Business Impact

Business Impact

2,000+ Daily Sign-Ups Expanded to 5+ Languages Playground as Growth Engine

2,000+ Daily Sign-Ups Expanded to 5+ Languages Playground as Growth Engine

2,000+ Daily Sign-Ups Expanded to 5+ Languages Playground as Growth Engine

The How?

Understanding user behavior above all

Understanding user behavior above all

I worked with the customer success team, ran user interviews, and visited classrooms watching real people try to set up Python for the first time.

I worked with the customer success team, ran user interviews, and visited classrooms watching real people try to set up Python for the first time.

“I want to be able to save my code, see my work”

“It took us the entirety of my first class to set up virtual environment”

“I want to share my code and work on assignment collaboratively”

“I want to be able to save my code, see my work”

“It took us the entirety of my first class to set up virtual environment”

“I want to share my code and work on assignment collaboratively”

Competitor Analysis

Benchmarking the best IDEs to figure out what we actually needed

Benchmarking the best IDEs to figure out what we actually needed

FEATURE SEGMENT

FEATURE SEGMENT

FEATURE SEGMENT

DATaCamp

DATaCamp

DATaCamp

One Compiler

One Compiler

One Compiler

VS Code

VS Code

VS Code

Programiz PRO

Programiz PRO

Programiz PRO

Zero Installation Required

Zero Installation Required

Zero Installation Required

Pre loaded Python Packages

Pre loaded Python Packages

Pre loaded Python Packages

Built in Graph Visualization

Built in Graph Visualization

Built in Graph Visualization

File Explorer and Project Structure

File Explorer and Project Structure

File Explorer and Project Structure

Mobile Optimized IDE

Mobile Optimized IDE

Mobile Optimized IDE

VS Code, Replit, PyCharm, GitHub.dev, I mapped what made each one valuable to developers, and what made each one inaccessible to learners.

The pattern was consistent: power came at the cost of approachability, and approachability usually meant stripping out the features that made practice meaningful.

VS Code, Replit, PyCharm, GitHub.dev, I mapped what made each one valuable to developers, and what made each one inaccessible to learners.

The pattern was consistent: power came at the cost of approachability, and approachability usually meant stripping out the features that made practice meaningful.

Timeline

Shipped in less than 6 months

Shipped in less than 6 months

The product roadmap had about five major milestones spread across six months, and we worked in two-week sprints.

The product roadmap had about five major milestones spread across six months, and we worked in two-week sprints.

Milestone 1

Milestone 1

Milestone 2

Milestone 2

Milestone 3

Milestone 3

Milestone 4

Milestone 4

Milestone 5

Milestone 5

Milestone 6

Milestone 6

Strategy

Strategy

Research & Strategy

Research & Strategy

UI Solution

UI Solution

Design & Prototyping

Design & Prototyping

Product Dev

Product Dev

Engineering Build

Engineering Build

QA Testing

QA Testing

Quality Assurance

Quality Assurance

Launch

Launch

🚀 Launch

🚀 Launch

Technical Context

Decision that made it technically possible

Decision that made it technically possible

Running a real IDE in the browser is a constraint problem. Working closely with the engineering team meant understanding the stack well enough to design within it, not around it.

Every design decision had a test case and a user story attached, so engineering and design stayed in sync from the start.

Running a real IDE in the browser is a constraint problem. Working closely with the engineering team meant understanding the stack well enough to design within it, not around it.

Every design decision had a test case and a user story attached, so engineering and design stayed in sync from the start.

Key Design Decisions #1

Design for familiarity

Design for familiarity

The goal of Programiz PRO Playground is to help beginners learn Python and build real coding confidence and launch themselves into the industry.

The interface was designed to feel familiar, so when learners move on to professional tools like VS Code, the transition feels natural and supports their career. Intentionally mirrored common IDE patterns when it comes to shortcuts and configurations.

The goal of Programiz PRO Playground is to help beginners learn Python and build real coding confidence and launch themselves into the industry.

The interface was designed to feel familiar, so when learners move on to professional tools like VS Code, the transition feels natural and supports their career. Intentionally mirrored common IDE patterns when it comes to shortcuts and configurations.

Key Design Decisions #2

Reimagining coding as a mobile experience

Reimagining coding as a mobile experience

Whenever we think of coding we naturally associate it with using a keyboard but how would that look like when you are actually learning to code from a phone.

Touch targets, keyboard behaviour, code readability at small sizes all redesigned for how people actually use their phones, not just how desktops scale down.

Whenever we think of coding we naturally associate it with using a keyboard but how would that look like when you are actually learning to code from a phone.

Touch targets, keyboard behaviour, code readability at small sizes all redesigned for how people actually use their phones, not just how desktops scale down.

Key Design Decisions #3

Test-driven design, not just development

Test-driven design, not just development

Every screen had a corresponding test case and user story. Feature files became the QA foundation so what shipped matched what was designed, down to the smallest interaction.

Every screen had a corresponding test case and user story. Feature files became the QA foundation so what shipped matched what was designed, down to the smallest interaction.

Outcome

Code Playground as a growth engine

Code Playground as a growth engine

The Playground launched and became a daily driver for thousands of learners. Coding started when you opened the browser. Not a minute later.

The Playground launched and became a daily driver for thousands of learners. Coding started when you opened the browser. Not a minute later.

5+

Languages Expanded

22%+

Year on year revenue growth

2K

Daily Signups

0ms

Setup Time
Reflection

What I took away from this

What I took away from this

Working in a test-driven process changed how I thought about decisions. Every choice had a corresponding story. It made handoff almost disappear!

I also learned to design for engineers and developers as a user group.

Working in a test-driven process changed how I thought about decisions. Every choice had a corresponding story. It made handoff almost disappear!

I also learned to design for engineers and developers as a user group.

Before — Numpy Code Playground

Before — Numpy Code Playground

Before — Numpy Code Playground

Numpy Code Playground

Numpy Code Playground

Numpy Code Playground

main.py

main.py

main.py

username.csv

username.csv

username.csv

main.py

main.py

main.py

main.py

main.py

main.py

Run

Run

Run

Save

Save

Save

Files +

Files +

Files +

main.py

main.py

main.py

username.csv

username.csv

username.csv

After — Programiz PRO Playground

After — Programiz PRO Playground

After — Programiz PRO Playground

1.00

1.00

1.00

1.25

1.25

1.25

1.50

1.50

1.50

1.75

1.75

1.75

2.00

2.00

2.00

2.25

2.25

2.25

2.50

2.50

2.50

2.75

2.75

2.75

3.00

3.00

3.00

x - axis

x - axis

x - axis

My first graph!

My first graph!

My first graph!

y - axis

y - axis

y - axis

Compiler

with built in

Graph Plotter

Compiler

with built in

Graph Plotter

Compiler

with built in

Graph Plotter

Package

Manager

Package

Manager

Package

Manager

File Explorer

File Explorer

File Explorer

Code Editor

Code Editor

Code Editor

Before — Numpy Code Playground

Before — Numpy Code Playground

Before — Numpy Code Playground

Numpy Code Playground

Numpy Code Playground

Numpy Code Playground

main.py

main.py

main.py

username.csv

username.csv

username.csv

main.py

main.py

main.py

main.py

main.py

main.py

Run

Run

Save

Save

Files +

Files +

Files +

main.py

main.py

main.py

username.csv

username.csv

username.csv

After — Programiz PRO Playground

After — Programiz PRO Playground

After — Programiz PRO Playground

Code Editor

Code Editor

Code Editor

Compiler

Compiler

Compiler

Keyboard Input

Keyboard Input

Keyboard Input