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
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
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
...WHY DO I CARE? CONSUMER PROVIDER Childhood University Hermit 2002 2011 2006 2012 Google Coursera Khan Academy 2013 CONSUMER PROVIDER Thursday, October 24, 13
...WHY DO I CARE? CONSUMER PROVIDER Childhood University Hermit 2002 2011 2006 2012 Google Coursera Khan Academy 2013 CONSUMER PROVIDER Thursday, October 24, 13
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
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
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
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