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 full-size slide


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

    View full-size slide

  3. #DX #WD14
    @JeremiahLee

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. ThatsNotHowGearsWork.tumblr.com

    View full-size slide

  9. unintentionally

    View full-size slide

  10. intentionally

    View full-size slide

  11. holistically

    View full-size slide

  12. Empathy
    as an
    Applied Science

    View full-size slide

  13. understand
    anticipate
    share feelings

    View full-size slide

  14. research
    in order to
    solve problems

    View full-size slide

  15. Empathy
    as an
    Applied Science

    View full-size slide

  16. 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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  21. 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 full-size slide

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

    View full-size slide

  23. 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 full-size slide

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

    View full-size slide

  25. 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 full-size slide

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

    View full-size slide

  27. 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 full-size slide

  28. 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 full-size slide

  29. 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 full-size slide

  30. 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 full-size slide

  31. 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 full-size slide

  32. 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 full-size slide

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

    View full-size slide

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

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

    Electronic Frontier Foundation

    View full-size slide