The Developer Experience

Post on 19-Jun-2015

1,914 views 1 download

Tags:

description

We all know what “user experience” is and we know that it’s important. But we rarely talk about the “developer experience” - what we all go through each time we try to use a developer tool, library, or API. How do we decide what tool to use? Is it easy to integrate with our development environment? How flexible is the API? Where do we go when something goes wrong? Those are the sort of questions that we can ask to understand what it’s like for a developer to use a product - and where it can be improved. Whether you simply use developer products or you actually build one yourself, you should walk away from this talk with ideas on how to make a great developer experience - and why it matters.

transcript

The Developer Experience WHAT IT IS

WHY IT MATTERS

HOW TO MAKE IT NOT SUCK���

���

pamelafox.org @pamelafox pamelafox@ twitter.com/

gmail.com http://

User Experience

“The sum of all interactions and events, both positive and negative, between a

user and a web site.”

AKA “bla bla bla”

User Experience Do I want to use it?

How do I sign up?

How do I get started?

How do I use it?

How do I get help?

DO I WANT TO USE IT?

HOW DO I SIGN UP?

HOW DO I SIGN UP?

HOW DO I GET STARTED?

HOW DO I USE IT?

HOW DO I GET HELP?

DEVELOPER EXPERIENCE

“The sum of all interactions and events, both positive and negative, between a developer and a library, tool, or API.”

DEVELOPER EXPERIENCE Do I want to use it?

How do I sign up?

How do I get started?

How do I use it?

How do I get help?

DO I WANT TO USE IT?

HOW DO I SIGN UP?

HOW DO I GET STARTED?

HOW DO I USE IT?

HOW DO I GET HELP?

why should you care?

Who are you?

PROVIDERS CONSUMERS

Developer Experience

(Library, Tool, API, ...)

...who am I?

CONSUMER PROVIDER

Childhood University hood Now

CONSUMER

2002 2006 2011 2006

why does DX matter?

I have to use X.

Bad Experience

Low Barrier for Leaving Bare Minimum Usage

why does DX matter?

I like to use X.

Good Experience

Innovative Usage External Evangelism

let’s break it down...

Do I want to use it?

Documentation Interactive Explorer

Does it have the features I need?

Can I safely build a business on top of it?

Licensing Pricing

Stability

Case Studies

How do I sign up?

How do I sign up?

No signup! No key! Best answer:

Automated Key Signup

Usage Dashboard

How do I get started?

Downloads for Every Environment

Client Libraries for Every Language

“Hello World” (From 0 to 60 in 15 minutes)

How do I use it?

How do I learn how to use it?

Do I enjoy using it?

Documentation

How do I learn how to use it?

Comprehensive Easy to Navigate

Reference & Guide Easy to Search

Running Code Feedback Loop

Documentation

When in doubt, document.

Comprehensive should be

Every method, parameter, return value, defaults, implementation notes, errors, side effects, deprecation notices.

Documentation should include both Reference & Guide

Documentation should include Runnable Code

Documentation should be Easy to Navigate

Documentation should be Easy to Search

Documentation should be Easy to Search on Google, too

Familiarity

Do I enjoy using it?

API Design

Simplicity

Compatibility

Debuggability

API Design: HTTP Familiarity

Simplicity

Compatibility

Debuggability

Use standards (when it makes sense)

REST, RPC, OAuth.

Support both JSON & XML.

Give meaningful error messages.

Don’t throttle.

Most importantly: Never ever use SOAP.

How do I get help?

Forum

Email & Feeds !Spam Stats & Badges

Issue Tracker

Comments

Status

Votes

Notification Categories

Search

THE EXPERIENCE CURVE

THE FEEDBACK LOOP���..should be infinite..

Feedback Forms

Surveys

QT Survey

Mozilla Add-Ons SDK Blackboard API Survey

Usability Testing

AT&T Usability Testing

Did you complete the task? How hard was it? Would you recommend this API? What would have made the experience of using the API better? Whose API does it better than we do?

Paying Attention

Twitter

Google Alerts

Conference Talks

Blog posts

MAKEOVER TIME!

Google Maps API

v2 v3

keys no keys!

bloated library MVC architecture (smaller download)

GMap, GMarker,... google.maps.*

GPolygon(latlngs, strokeColor, strokeWeight, strokeOpacity,

fillColor, fillOpacity, opts)

google.maps.Polygon(options)

ZeptoJS

NOW WHAT?

providers:

1. Care

2. Prioritize

3. Improve

I

CONSUMERS

It’d be great if you changed X.

I’d use it more if it had feature Y.

Thanks - look what I made with it!

Thanks!

The Developer Experience IT MATTERS

LETS MAKE IT NOT SUCK

developerexperience.org developer-support-handbook.org

for more...

@pamelafox