Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Applying UX principles and methods to APIs

922 views

Published on

Developers learn to cope with quality attributes like maintainability, security, and performance. But usability is usually left behind. It belongs to the domain of UI developers and interaction designers. Yet even if the code doesn't have any UI, it has users: the programmers that have to use or maintain the APIs. This talk introduces usability concepts and practices applicable to the design of APIs.

Published in: Software
  • Be the first to comment

Applying UX principles and methods to APIs

  1. 1. Applying UX design principles and methods to the design of APIs
  2. 2. APPAPI API API
  3. 3. APPAPI API API API APP
  4. 4. API
  5. 5. You are not your API user ?API
  6. 6. 8% of Android Apps misused TLS Source: Fahl. Rethinking SSL development in an appified world. Proceeding of the ACM SIGSAC, 2013
  7. 7. Usability easy to use
  8. 8. Learnability Efficiency Memorability Satisfaction Tolerance to human error Usability
  9. 9. User Mental Model System Model
  10. 10. User Mental Model System Model Affordance Feedback
  11. 11. Journey
  12. 12. Errors
  13. 13. Errors Affordance Feedback
  14. 14. Affordance Standards
  15. 15. ~ 1seg Hi!
  16. 16. Feedback System Status
  17. 17. Undo & Cancel Errors Constraints Defaults Steps Uniformity
  18. 18. User Mental Model System Model Affordance Feedback API
  19. 19. public class Configuration { @Inject private SomeResource resource; public Configuration() {} /* … */ }
  20. 20. config = new Configuration();
  21. 21. GET /resources/1/delete
  22. 22. try { /*…*/ } catch (Exception e) { // Do Nothing }
  23. 23. DELETE /repos/owner/repo/issues/2 404 Not Found { "message": "Not Found", “documentation_url": "https://developer.github.com/v3" }
  24. 24. DELETE /repos/owner/repo/issues/2 405 Not Allowed { "message": "Not Allowed", “documentation_url": "https://developer.github.com/v3" }
  25. 25. new Date(100, 0, 1) Sat Jan 01 00:00:00 PST 2000 Java new Date("2017-04-20") Wed Apr 19 2017 17:00:00 GMT-0700 (PDT) new Date("2017-4-20") Thu Apr 20 2017 00:00:00 GMT-0700 (PDT) JavaScript
  26. 26. Date.parse JavaScript Designers Legacy: Support new Date(aDate.toString()) (ECMAScript 1st) Updated Requirement: Support ISO-8601 spec (ECMAScript 5.1) 2017-4-20 == 2017-04-20 JavaScript Developer
  27. 27. Journey API
  28. 28. APP APP APP APP API API API APIAPI
  29. 29. APP APP APP APP API API API APIAPI
  30. 30. 45% unused 19% rarely used 16% sometimes 20% used frequently Source: Report from Standish Group, 2002
  31. 31. Persona Obstacles Goal
  32. 32. Release 2 Release 3 Release 1
  33. 33. GET https://anypoint.mulesoft.com/accounts/api/organizations/{organizationId}/entitlements [ { "id": 3723, "org_id": "f0c9b011-980e-4928-9430-e60e3a97c043", "name": "createEnvironments", "values": true, "created_at": "2015-04-20T18:50:44.311Z", "updated_at": "2016-09-28T23:30:52.455Z" }…
  34. 34. GET https://anypoint.mulesoft.com/armui/api/v1/applications { "data": [ { "id": "test-ffmq", "target": { "type": "CLOUDHUB" }, "artifact": { "lastUpdateTime": 1487378523911,
  35. 35. types: Diagram: properties: name: string shapes?: Shape[] RAML Type Definition
  36. 36. API ?
  37. 37. Expert Evaluations Usability Test
  38. 38. Jakob Nielsen Standards Visibility of System Status Match expectations Recognition over recall Diagnose Problems Error Prevention Affordance Feedback Errors
  39. 39. Domain correspondence No. of steps Consistency Recognition over recall Progressive Feedback Abstraction Learning Extension
  40. 40. API I want to….
  41. 41. API I want to….
  42. 42. All contents © MuleSoft Inc. Summary 63 • Usability principles –Affordance –Feedback –Tolerance to errors • Stories • Evaluation methods
  43. 43. Thank you!

×