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

Elements of API Excellence

Elements of API Excellence

Presented at Web Directions 2014. Video coming soon.

Jeremiah Lee

October 31, 2014
Tweet

More Decks by Jeremiah Lee

Other Decks in Programming

Transcript

  1. Elements of API Excellence
    Jeremiah Lee 2014-10-31T11:00+11:00

    View Slide


  2. Elements of API Excellence
    Jeremiah Lee 2014-10-31T11:00+11:00

    View Slide

  3. #DX #WD14
    @JeremiahLee

    View Slide

  4. http://woodgears.ca/gear_cutting/template.html

    View Slide

  5. http://woodgears.ca/gear_cutting/template.html

    View Slide

  6. http://woodgears.ca/gear_cutting/template.html

    View Slide

  7. http://woodgears.ca/gear_cutting/template.html

    View Slide

  8. View Slide

  9. ThatsNotHowGearsWork.tumblr.com

    View Slide

  10. View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. unintentionally

    View Slide

  22. selfishly

    View Slide

  23. blindly

    View Slide

  24. intentionally

    View Slide

  25. holistically

    View Slide

  26. Empathy
    as an
    Applied Science

    View Slide

  27. understand
    anticipate
    share feelings

    View Slide

  28. research
    in order to
    solve problems

    View Slide

  29. Empathy
    as an
    Applied Science

    View Slide

  30. Graph by Dave Corby (2010) based on Guide to the Software Engineering Body of Knowledge (SWEBOK) by IEEE Computer Society (2004)
    Customer
    Requirements
    Requirements
    Specification
    Functional
    Specification
    Design
    Specification
    Validation
    Review
    Verification
    Study the
    requirements
    Clarify the
    requirements
    Write the 

    software
    Test the 

    software
    Validate against
    requirements
    Review with

    customer
    Define new
    requirements
    Software
    Development
    Life Cycle

    View Slide

  31. Based on Aarron Walter’s Designing For Emotion
    FUNCTIONAL

    View Slide

  32. FUNCTIONAL
    RELIABLE
    Availability (uptime)
    Scalability (load, response time)
    Stability (consistency)
    Security
    Based on Aarron Walter’s Designing For Emotion

    View Slide

  33. RELIABLE
    FUNCTIONAL
    USABLE
    Intuitability
    Testability
    Corrective Guidance
    Based on Aarron Walter’s Designing For Emotion

    View Slide

  34. PLEASURABLE
    USABLE
    RELIABLE
    FUNCTIONAL
    Based on Aarron Walter’s Designing For Emotion

    View Slide

  35. Customer
    Requirements
    Requirements
    Specification
    Functional
    Specification
    Design
    Specification
    Validation
    Review
    Verification
    Study the
    requirements
    Clarify the
    requirements
    Write the 

    software
    Test the 

    software
    Validate against
    requirements
    Review with

    customer
    Define new
    requirements
    Software
    Development
    Life Cycle
    PLEASURABLE
    USABLE
    RELIABLE
    FUNCTIONAL

    View Slide

  36. Today, let’s talk about…
    1. Personas
    2. Passive usability testing with data
    3. Active usability testing with real, live people

    View Slide

  37. Personas
    • Are descriptive representations of the people who
    use your product and the context they operate in
    • They make assumptions about users visible
    • They provide a frame of reference for your team
    • Validate with user interviews and surveys

    View Slide

  38. Persona Context
    • Relationship with product
    • Platform, programming language
    • Experience / skill level
    • English proficiency
    • Motivation
    • Resources
    • Role in the organization

    View Slide

  39. Who are my users?
    BENNETT

    backend web developer, prefers
    Java, CS degree from UC Davis, full
    time developer, advocated to use
    our product
    RACHEL
    web designer/developer, prefers
    JavaScript/Node, no degree but
    strong developer, had no input on
    using our product
    JANE

    iOS developer, "unicorn" designer
    and developer, self-taught,
    moonlighting on her own projects,
    makes recommendations 

    on products
    ANDY

    self-proclaimed geek, comes
    from IT background, likes to
    script things together using
    Python, hobbyist hacker

    View Slide

  40. Passive Usability Testing
    • Examine support requests
    • When are they asking for help?
    • Frequently asked questions
    • Frequently misunderstood concepts
    • Frequently hit errors

    View Slide

  41. Passive Usability Testing
    • Examine support requests
    • API usage during an integration
    • How long between app registration and first request?
    • What are the first requests and first errors?
    • How long before going to production?

    View Slide

  42. Passive Usability Testing
    • Examine support requests
    • API usage during an integration
    • API usage after an integration
    • Detect based on IP address, user auth, requests increase
    • What endpoints are being used? How are they used?
    • Anti-pattern detection based on request volume or type

    View Slide

  43. Active Usability Testing
    • Existing APIs: “Dumb Pair Programmer”
    • With a user you trust in their natural environment
    • Silently observe as they work:
    • Interactions with team: how do they talk about you?
    • How do you fit into their application?
    • How does the user approach the integration with you?
    • What problems do they encounter?
    • How do they test the integration?

    View Slide

  44. Active Usability Testing
    • Existing APIs: “Dumb Pair Programmer”
    • New APIs: Throw-away prototypes
    • Create a mock API: just enough functionality to be used
    • Document it: reference docs, just enough conceptual info
    • Create a well defined project ready for an integration
    • Hire an outsider who doesn’t have insider assumptions
    • Have user record screen, face, voice with Silverback
    • Have user commit to Git at regular interval

    View Slide

  45. Active Usability Testing
    • Existing APIs: “Dumb Pair Programmer”
    • New APIs: Throw-away prototypes
    • Analyze the data for moments of emotional response
    • Happy
    • Sad
    • Confident
    • Frustrated
    • Confused

    View Slide

  46. Active Usability Testing
    • Existing APIs: “Dumb Pair Programmer”
    • New APIs: Throw-away prototypes
    • Analyze the data for moments of emotional response
    • How long did it take to accomplish tasks?
    • What worked? What didn’t work?
    • How can the good things be more affirming?
    • How can the bad things be prevented?
    • How can the situation be corrected better?

    View Slide

  47. The secret to
    machines talking to machines
    is to speak human first.

    View Slide

  48. Thank you for your time.
    More content available at

    http://dx.jeremiahlee.com
    Please support the

    Electronic Frontier Foundation

    View Slide