Finding the Right Path by Ronnie Mitra

61
Finding the Path: The Principles of Effec7ve API Design Ronnie Mitra @mitraman [email protected] Director of Design CA API Academy

Transcript of Finding the Right Path by Ronnie Mitra

Finding  the  Path:  The  Principles  of  Effec7ve  API  Design    

Ronnie  Mitra  @mitraman  [email protected]  Director  of  Design  CA  API  Academy  

Finding The Path To Success

Finding The Path

Three Principles of Success

Align with your business model

Design with empathy

Manage complexity

1

2

3

Design with Empathy.

Server Client

Server Client

API

Server Client API

The Human Factor

API Client

development platform

API Tools

Client Server

API

API

platform

language

organization

distance

knowledge

risk profile

investment

For Whom?

Persona Driven Design

BenjaminAfina

C++ Developer Server Software

Internal Developer Project-led development

Cordova Developer Mobile Apps

Third Party Developer Freelance Development

Manage Complexity.

complexité

Complexity

What is Complexity?

•  Composed  of  many  parts  •  Intricate,  elaborate,  interconnected  •  Difficult  to  process,  resource  intensive  

System Complexity

Interface Complexity

System Complexity

Systems Complexity: Emergence

The action of the whole is more than the sum of the actions of the

parts

Complex Physical Systems

Complex Adaptive Systems

Emergent and Adaptive Behaviour

•  Agents become specialized •  Behaviour is de-centralized •  The system can adapt to change

Adaptive system

Increased reliability

System Complexity as a Feature

Performance Credit-Assignment Rule-Discovery

Interface Complexity

Different Perspectives Similar Conclusions

Complexity in Design

Cognitive Complexity: Norman

“Complexity  by  itself  is  neither  good  nor  bad:  it  is  confusion  that  is  bad.”  

Reduce Organize Time Learn Differences Context Emotion Trust The One

Cognitive Complexity: Maeda

“Simplicity  is  about  subtrac7ng  the  obvious  and  adding  the  meaningful”  

Simple or Complex?

Complexity is a Perceived Quality

interface  

simple

confusing

Making Interfaces Simpler

The designer’s job is to manage complexity: •  improve learnability •  improve usability •  reduce confusion

Managing Complexity

Where Does Interface Complexity Come From?

complexity is the price we pay for utility

Fred Brooks

The complexity of software is an essential property not an accidental one. Hence descriptions of a software entity that abstract away its complexity often abstract away its essence.

No Silver Bullet – Essence and Accident in Software Engineering

Larry Tesler

Tesler’s Law of the Conservation of Complexity

Every application has an inherent amount of irreducible complexity. The only question is: who will have to deal with it […]?

OAuth 2.0

Complex?

OAuth 2.0 Complexity: A Fictional Measurement

OAuth 2.0Complexity(if we couldmeasure it)

Managing OAuth 2.0 Complexity: Who Pays the Price?

OAuth  2  Client    Implementa7on  

OAuth  2  Server    Implementa7on  

!!!

Client    Implementa7on  

Server    Implementa7on  

!!!

tooling  tooling  

Managing OAuth 2.0 Complexity

Managing Complexity: Microservices

Monolith Application Microservices Application

μService  

API  

μService  

μService  

μService  

μService  

μService  

API   API  

API   API   API  

API  

Managing Complexity: The Monolith

Monolith Application

API  

Who pays the complexity price?

Code Maintainer System Maintainer

Managing Complexity: Microservices

Who pays the complexity price?

Code Maintainer System Maintainer

Microservices Application

μService  

μService  

μService  

μService  

API   API  

API   API  

Managing Complexity: Microservices

•  Service becomes less confusing, but system complexity increases

•  Complexity cost is worthwhile

•  Tools are introduced to hide (shift) complexity

containerization

discovery

deployment

Managing Complexity: Microservices boundaries

μService  

μService  

μService  

μService  

μService  

μService  

client application

API   API  

API   API   API  

API  

Managing Complexity: Microservices

Who pays the complexity price?

Code Maintainer

System Maintainer

Microservices Application

μService  

μService  

μService  

μService  

API   API  

API   API  

Client App Developer

Managing Complexity: Client Applications

μService  

μService  

μService  

μService  

μService  

μService  

client application

API   API  

API   API   API  

API  SDK  

API  

Managing Complexity: Client Applications

μService  

μService  

μService  

μService  

μService  

μService  

client application

API   API  

API   API   API  

API  

API  

Align with your business.

Inherited Complexity

world organization system interface

• Why  Good  API  Design  MaRers  

API Program Goals

1. Get more developers using the interface

2. Get applications to market quickly

The Benefits of a Usability and Experience Focus

1. A better experience (increased adoption)

2.  Ease of use (shorter dev cycle)

Why Good API Design Matters

An API Design Approach

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

Why?

revenue reach innovation

growth compliance intel

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

platform

language

organization

distance

knowledge

risk profile

investment

For Whom?

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

Ideate, Experiment, Sketch & Prototype

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

•  Start with design-focused

sketches

•  Built low-fidelity prototypes

•  Increase fidelity and incorporate actual implementation concerns

Test Assumptions

Lab Evaluation

Peer Evaluation

User Observation

Write Client Code

Participatory Design

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

•  Include implementation concerns in evaluation

•  Ensure that design is practical

•  Articulate the implementation cost

Implementation

1   Determine Goals

2   Identify Users

3   Design Interface

4   Evaluate

5   Implement

…Analyze Real Usage

Embrace and Manage Complexity

Iterate and Evolve

Three Principles of Success

Align with your business model

Design with empathy

Manage complexity

1

2

3

Finding The Path To Success

Finding The Path

Finding  the  Path:  The  Principles  of  Effec7ve  API  Design    

Ronnie  Mitra  @mitraman  [email protected]  Director  of  Design  CA  API  Academy