the developer experience
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
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