Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Developer Experience

The Developer Experience

What makes for a good developer experience? How do you improve yours? That's what I explore in this talk, given at Atlassian Summit 2012.

92dfeb863138a5a9c0453ed80f9c8c75?s=128

Pamela Fox

June 05, 2012
Tweet

Transcript

  1. The Developer Experience WHAT IT IS WHY IT MATTERS HOW

    TO MAKE IT NOT SUCK pamelafox.org @pamelafox pamelafox@ twitter.com/ gmail.com http://
  2. User Experience “The sum of all interactions and events, both

    positive and negative, between a user and a web site.” AKA “bla bla bla”
  3. 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?
  4. DO I WANT TO USE IT?

  5. HOW DO I SIGN UP?

  6. HOW DO I SIGN UP?

  7. HOW DO I GET STARTED?

  8. HOW DO I USE IT?

  9. HOW DO I GET HELP?

  10. DEVELOPER EXPERIENCE “The sum of all interactions and events, both

    positive and negative, between a developer and a library, tool, or API.”
  11. 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?
  12. DO I WANT TO USE IT?

  13. HOW DO I SIGN UP?

  14. HOW DO I GET STARTED?

  15. HOW DO I USE IT?

  16. HOW DO I GET HELP?

  17. why should you care?

  18. Who are you? PROVIDERS CONSUMERS Developer Experience (Library, Tool, API,

    ...)
  19. ...who am I? CONSUMER PROVIDER Childhood University hood Now CONSUMER

    2002 2006 2011 2006
  20. why does DX matter? I have to use X. Bad

    Experience Low Barrier for Leaving Bare Minimum Usage
  21. why does DX matter? I like to use X. Good

    Experience Innovative Usage External Evangelism
  22. let’s break it down...

  23. Do I want to use it?

  24. Documentation Interactive Explorer Does it have the features I need?

  25. Can I safely build a business on top of it?

    Licensing Pricing Stability
  26. Case Studies

  27. How do I sign up?

  28. How do I sign up? No signup! No key! Best

    answer:
  29. Automated Key Signup

  30. Usage Dashboard

  31. How do I get started?

  32. Downloads for Every Environment

  33. Client Libraries for Every Language

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

  35. How do I use it? How do I learn how

    to use it? Do I enjoy using it?
  36. Documentation How do I learn how to use it? Comprehensive

    Easy to Navigate Reference & Guide Easy to Search Running Code Feedback Loop
  37. Documentation When in doubt, document. Comprehensive should be Every method,

    parameter, return value, defaults, implementation notes, errors, side effects, deprecation notices.
  38. Documentation should include both Reference & Guide

  39. Documentation should include Runnable Code

  40. Documentation should be Easy to Navigate

  41. Documentation should be Easy to Search

  42. Documentation should be Easy to Search on Google, too

  43. Familiarity Do I enjoy using it? API Design Simplicity Compatibility

    Debuggability
  44. 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.
  45. How do I get help?

  46. Forum Email & Feeds !Spam Stats & Badges

  47. Issue Tracker Comments Status Votes Notification Categories Search

  48. THE EXPERIENCE CURVE

  49. THE FEEDBACK LOOP ..should be infinite..

  50. Feedback Forms

  51. Surveys QT Survey Mozilla Add-Ons SDK Blackboard API Survey

  52. 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?
  53. Paying Attention Twitter Google Alerts Conference Talks Blog posts

  54. MAKEOVER TIME!

  55. 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)
  56. ZeptoJS

  57. NOW WHAT?

  58. providers: 1. Care 2. Prioritize 3. Improve I

  59. 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!
  60. The Developer Experience IT MATTERS LETS MAKE IT NOT SUCK

    developerexperience.org developer-support-handbook.org for more... @pamelafox