Handy Tools for Designing Great...

68
Handy Tools for Designing Great APIs Mike Amundsen @mamund

Transcript of Handy Tools for Designing Great...

Page 1: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Handy Tools for Designing Great APIs

Mike Amundsen@mamund

Page 2: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 3: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

training.amundsen.com

Page 4: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

http://g.mamund.com/cambook

"A reusable guide to the technology, business, and politics of doing APIs

at scale within the enterprise."

-- Kin Lane, API Evangelist

Page 5: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Designing Great APIs

● APIs as a Product● Design Thinking● An API Design Method● Virtuous Cycle

Page 6: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

APIs as a Product

Page 7: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 8: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 9: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 10: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 11: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 12: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

APIabbreviation1. application programming interface

Page 13: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 14: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 15: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

good APIs make interaction easy

Page 16: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

Page 17: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 18: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically

feasible and what a viable business strategy can convert into customer

value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 19: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically

feasible and what a viable business strategy can convert into customer

value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 20: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically feasible and what a viable business

strategy can convert into customer value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 21: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically

feasible and what a viable business strategy can convert into customer

value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 22: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically

feasible and what a viable business strategy can convert into customer

value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 23: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

A design discipline to match people’s needs with what is technologically

feasible and what a viable business strategy can convert into customer

value and market opportunity.

-- Tim Brown, CEO of IDEO

Page 24: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Three Elements of Design

Page 25: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Few people think about it or are aware of it. But there is nothing made by human beings that does not involve a design decision somewhere.

“”

Bill MoggridgeInteraction Design Pioneer

Page 26: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

FunctionalityUsabilityExperience

design

Page 27: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

http://www.flickr.com/photos/monicamuller/3171329060

toast

Page 28: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Functionality

http://www.flickr.com/photos/traviswiens/3761198872/

Page 29: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Usability

Page 30: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Experience

Page 31: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Three Elements of Design

● Functionality● Usability● Experience

Page 32: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

An API Design Method

Page 33: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 34: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

API Design Method

● API Workflow● API Diagram● API Vocabulary● API Profile● API Reference

Page 35: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Produce a Workflow Sketch

Page 36: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Workflow Sketch: Weather API

Page 37: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Draw a Diagram

Page 38: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Diagram: Weather API

Page 39: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 40: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

WSD format documents

Page 41: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Diagram: Weather API

Page 42: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 43: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 44: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Bonus Utility -- wsdgen

● CLI app to generate images from WSD format docs

wsdgen weatherAPI.wsd

Page 45: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Apply Vocabularies

Page 46: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Weather Data

● Gather all the property names● Gather all the action names● Normalize vocabularies

○ Open○ Industry○ Internal

Page 47: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Before Applying Vocabularies

Page 48: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Sources for Vocabularies

▪IANA Link Relation Values▪schema.org, Activity Streams▪microformats, Dublin Core▪Industry Vocabularies (Semantic Sensor Web)▪Internal Vocabularies

Page 49: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

After Applying Vocabularies

Page 50: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

After Applying Vocabularies

Normalize Properties & Specify Actions

Page 51: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Create a Description Document

Page 52: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Description vs. Definitions

▪ Describing the interface doesn't define it.▪ Description languages

▪ ALPS▪ DCAP▪ JSON Home

▪ Definition languages▪ WSDL▪ Swagger▪ RAML▪ Blueprint

Page 53: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Description vs. Definitions

▪ Describing the interface doesn't define it.▪ Description languages

▪ ALPS▪ DCAP▪ JSON Home

▪ Definition languages▪ WSDL▪ Swagger▪ RAML▪ Blueprint

Page 54: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 55: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Bonus Utility -- wsd2alps

● CLI app to generate ALPS doc from WSD doc

wsd2alps weatherAPI.wsd weather-alps.json

Page 56: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 57: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Generate reference API documentation

Page 58: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

API Reference Documentation

● Simple reference docs are handy● But insufficient● Many aspects to human documentation

○ Concepts○ Getting Started○ Common Tasks○ Solving Problems○ Detailed Reference

Page 59: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method
Page 60: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Bonus Utility -- alps2doc

● CLI app to generate reference doc from ALPS doc

alps2doc weatherAPI.wsd weatherAPI.md

Page 61: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Artifacts

▪Workflow Sketch (doc)▪Diagram (wsdgen)▪Description Document (wsd2alps)▪Generate Reference Doc (alps2doc)

Check these into source control

Page 62: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

And So...

Page 63: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

APIs as Products

Page 64: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Design Thinking

Page 65: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

API Design Method

Page 66: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Virtuous Cycle of Design

Page 67: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Available Online...

● Slides (amundsen.com/talks)● Utilities (github.com/api-tool-kit)● Newsletter (g.mamund.com/newsletter)● Books (amazon.com/Michael-Amundsen)

Page 68: Handy Tools for Designing Great APIsamundsen.com/talks/2019-03-ndc-porto/2019-03-porto-handy-tools.pdf · Designing Great APIs APIs as a Product Design Thinking An API Design Method

Handy Tools for Designing Great APIs

Mike Amundsen@mamund

Thanks!