THE DEVELOPER EXPERIENCE
WHAT IT IS
WHY IT MATTERS
HOW TO MAKE IT NOT SUCK
pamelafox.org @pamelafox pamelafox@
twitter.com/
gmail.com
http://
Thursday, October 24, 13
Slide 2
Slide 2 text
USER EXPERIENCE
“The sum of all interactions and events,
both positive and negative, between a
user and a web site.”
User Experience
(Website, Mobile App, etc.)
PROVIDER USER
Thursday, October 24, 13
Slide 3
Slide 3 text
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?
USER EXPERIENCE
Thursday, October 24, 13
Slide 4
Slide 4 text
DEVELOPER EXPERIENCE
“The sum of all interactions and events,
both positive and negative, between a
developer and a library, tool, or API.”
Developer Experience
(Library, Tool, API, ...)
PROVIDER CONSUMER
Thursday, October 24, 13
Slide 5
Slide 5 text
Do I want to use it? How do I sign up?
How do I use it? How do I get help?
DEVELOPER EXPERIENCE
How do I get started?
Thursday, October 24, 13
Slide 6
Slide 6 text
...WHY DO I CARE?
CONSUMER PROVIDER
Childhood University Hermit
2002 2011
2006 2012
Google Coursera Khan Academy
2013
CONSUMER PROVIDER
Thursday, October 24, 13
Slide 7
Slide 7 text
...WHY DO I CARE?
CONSUMER PROVIDER
Childhood University Hermit
2002 2011
2006 2012
Google Coursera Khan Academy
2013
CONSUMER PROVIDER
Thursday, October 24, 13
Slide 8
Slide 8 text
WHY SHOULD YOU CARE?
Thursday, October 24, 13
Slide 9
Slide 9 text
WHY DOES DX MATTER?
I have to use X.
Bad Experience
Low Barrier for Leaving
Bare Minimum Usage
Thursday, October 24, 13
Slide 10
Slide 10 text
WHY DOES DX MATTER?
I like to use X.
Good Experience
Innovative Usage External Evangelism
Thursday, October 24, 13
Slide 11
Slide 11 text
LET’S BREAK IT DOWN...
Thursday, October 24, 13
Slide 12
Slide 12 text
Do I want to use it?
Thursday, October 24, 13
Slide 13
Slide 13 text
Documentation Interactive Explorer
Does it have the features I need?
Thursday, October 24, 13
Slide 14
Slide 14 text
Can I safely build a business on top of it?
Licensing Pricing
Stability
Thursday, October 24, 13
Slide 15
Slide 15 text
Case Studies
Thursday, October 24, 13
Slide 16
Slide 16 text
How do I sign up?
Thursday, October 24, 13
Slide 17
Slide 17 text
How do I sign up?
No signup! No key!
Best answer:
Thursday, October 24, 13
Slide 18
Slide 18 text
Automated Key Signup
Thursday, October 24, 13
Slide 19
Slide 19 text
How do I get started?
Thursday, October 24, 13
Slide 20
Slide 20 text
Downloads for Every Environment
Thursday, October 24, 13
Slide 21
Slide 21 text
Client Libraries for Every Language
Thursday, October 24, 13
Slide 22
Slide 22 text
“Hello World”
(From 0 to 60 in 15 minutes)
Thursday, October 24, 13
Slide 23
Slide 23 text
How do I use it?
How do I learn how to use it?
Do I enjoy using it?
Thursday, October 24, 13
Slide 24
Slide 24 text
Documentation
How do I learn how to use it?
Comprehensive Easy to Navigate
Reference & Guide Easy to Search
Running Code Feedback Loop
Thursday, October 24, 13
Slide 25
Slide 25 text
Documentation
When in doubt, document.
Comprehensive
should be
Every method, parameter, return value, defaults,
implementation notes, errors, side effects, deprecation notices.
Thursday, October 24, 13
Slide 26
Slide 26 text
Documentation
should include both Reference & Guide
Thursday, October 24, 13
Slide 27
Slide 27 text
Documentation
should include Runnable Code
Thursday, October 24, 13
Slide 28
Slide 28 text
Documentation should be Easy to Navigate
Thursday, October 24, 13
Slide 29
Slide 29 text
Documentation should be Easy to Search
Thursday, October 24, 13
Slide 30
Slide 30 text
Documentation should be Easy to Search
on Google, too
Thursday, October 24, 13
Slide 31
Slide 31 text
Familiarity
Do I enjoy using it?
API Design
Simplicity
Compatibility
Debuggability
Thursday, October 24, 13
Slide 32
Slide 32 text
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.
Thursday, October 24, 13
Slide 33
Slide 33 text
API Design: JavaScript
Familiarity
Simplicity
Compatibility
Debuggability
Use object literals for
method options, not
additional arguments.
Use a namespace.
Don’t extend native
objects.
Offer a debugging
extension.
Offer common methods in core API,
everything else as plugins.
Do all that while keeping file size small.
Thursday, October 24, 13
Slide 34
Slide 34 text
How do I get help?
Thursday, October 24, 13
Slide 35
Slide 35 text
Forum
Email Subscription
& Feeds
Spam Handling &
Moderation
Poster Statistics
& Badging
Thursday, October 24, 13
Slide 36
Slide 36 text
GETTING FEEDBACK
Thursday, October 24, 13
Slide 37
Slide 37 text
Documentation
can have
Comments
can have
Feedback Form
Thursday, October 24, 13
Slide 38
Slide 38 text
Issue Tracker
Comments
Status
Votes
Notification
Categories
Search
Thursday, October 24, 13
Slide 39
Slide 39 text
BUT WAIT, THERE’S MORE!
http://developer-support-handbook.org
http://blog.pamelafox.org/search/label/developerexperience
http://blog.programmableweb.com
http://developer-evangelism.com/
Thursday, October 24, 13
Slide 40
Slide 40 text
PROVIDERS:
1. Care
2. Prioritize
3. Improve
I
Thursday, October 24, 13
Slide 41
Slide 41 text
THE DEVELOPER EXPERIENCE
pamelafox.org @pamelafox pamelafox@
twitter.com/
gmail.com
http://
IT MATTERS
MAKE IT NOT SUCK
Thursday, October 24, 13