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 design principles and methods to
the design of APIs
APPAPI
API
API
APPAPI
API
API
API APP
API
You are not your API user
?API
8% of Android Apps
misused TLS
Source: Fahl. Rethinking SSL development in an appified world. Proceeding of the ACM SIGSAC...
Usability
easy to use
Learnability
Efficiency
Memorability
Satisfaction
Tolerance to
human error
Usability
User Mental
Model
System
Model
User Mental
Model
System
Model
Affordance
Feedback
Journey
Errors
Errors
Affordance
Feedback
Affordance
Standards
~ 1seg
Hi!
Feedback
System Status
Undo
&
Cancel
Errors
Constraints
Defaults
Steps
Uniformity
User Mental
Model
System
Model
Affordance
Feedback
API
public class Configuration {
@Inject
private SomeResource resource;
public Configuration() {}
/* … */
}
config = new Configuration();
GET /resources/1/delete
try {
/*…*/
} catch (Exception e) {
// Do Nothing
}
DELETE /repos/owner/repo/issues/2
404 Not Found
{
"message": "Not Found",
“documentation_url":
"https://developer.github.c...
DELETE /repos/owner/repo/issues/2
405 Not Allowed
{
"message": "Not Allowed",
“documentation_url":
"https://developer.gith...
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 D...
Date.parse
JavaScript Designers
Legacy: Support new Date(aDate.toString()) (ECMAScript 1st)
Updated Requirement: Support I...
Journey
API
APP
APP APP
APP
API
API
API
APIAPI
APP
APP APP
APP
API
API
API
APIAPI
45% unused
19% rarely used
16% sometimes
20% used frequently
Source: Report from Standish Group, 2002
Persona Obstacles Goal
Release 2
Release 3
Release 1
GET
https://anypoint.mulesoft.com/accounts/api/organizations/{organizationId}/entitlements
[
{
"id": 3723,
"org_id": "f0c9...
GET https://anypoint.mulesoft.com/armui/api/v1/applications
{
"data": [
{
"id": "test-ffmq",
"target": {
"type": "CLOUDHUB...
types:
Diagram:
properties:
name: string
shapes?: Shape[]
RAML Type Definition
API
?
Expert
Evaluations
Usability
Test
Jakob Nielsen
Standards
Visibility of System Status
Match expectations
Recognition over recall
Diagnose Problems
Error Pre...
Domain correspondence
No. of steps
Consistency
Recognition over recall
Progressive Feedback
Abstraction
Learning
Extension
API
I want to….
API
I want to….
All contents © MuleSoft Inc.
Summary
63
• Usability principles
–Affordance
–Feedback
–Tolerance to errors
• Stories
• Eval...
Thank you!
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Applying UX principles and methods to APIs
Upcoming SlideShare
Loading in …5
×

Applying UX principles and methods to APIs

999 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!

×