Upload
codemotion
View
323
Download
0
Embed Size (px)
Citation preview
Getting Developers hooked on your API
@nico_g
Nicolas Garnierself-taught developer@nico_g
@nico_g
@nico_g
~15,000 APIs(ProgrammableWeb)
@nico_g
A great product sells itself
@nico_g
You’re not the only one
People don’t know about you
Your onboarding is crappy
@nico_g
One thing in common
@nico_g
US!One thing in common
@nico_g
Developer Experience
code application
@nico_g
code application
Developer Experience
UX
@nico_g
code application
Developer Experience
DX
Developer Experience matters
Journey to developer Adoption
@nico_g
@nico_g
Simplicity
What are we looking for as users?
@nico_g
Is it easy to use?
GET /res
ourceH2B
?vo=true
@nico_g
Is it easy to understand?
Error 1543bis
@nico_g
Is it adapted to my audience?
@nico_g
SOAPREST
Hypermedia
GraphQL FalcorJS
@nico_g
What really matters is
affordance & consistency
@nico_g
Affordance
/pets/$ID
@nico_g
Affordance
GET /pets/$ID
@nico_g
Consistency
POST /foods
@nico_g
API designers != end users
API
What devs expect
@nico_gBeginner Expert
How does it work?
Performance design
PerformanceMany languages
API reference
CommunitySimplicty
Quickstart
Support
Wow effect Examples
@nico_g
timed
ifficulty
supportdev
Bad DX
First impression matters
@nico_g
Documentation
@nico_g
Documenting your API iseasy
@nico_g
Swagger.ioTop-down
1. Create a Swagger definition of your API
2. Generate Server implementation
1. You already have a REST API
2. Generate the Swagger definition
Bottom-up
@nico_g
@nico_g
READING DOCS
@nico_g
LOL
⌘C + ⌘V@nico_g
PRAG-MA-TISM
@nico_g
Don’t forget anyone
Code snippets
@nico_g
Don’t forget anyone
Code snippets User guides
@nico_g
@nico_g
Don’t reinvent the wheel
apiary
readme.io
slate
Don’t reinvent the wheel
@nico_g
Don’t forget anyone
Code snippets User guides Sample app
while (true) {repeat();
}
@nico_g
@nico_g
{ }
js-doc.md php-doc.md go-doc.md
</>
metadata
code generator
templates
@nico_g
{
"description" : "This call sends an email.",
"resource" : "send",
"action" : "POST",
"args" : [
…}
@nico_g
{{#filtersExist}}$filters = [{{#filters}} '{{name}}' => '{{value}}'{{#comma}},{{/comma}}{{/filters}}];{{/filtersExists}}
{{#argumentsExist}}$body = {{{body}}};{{/argumentsExist}}
@nico_g
{ "Count": 1, "Data": [ { {{#args}} "{{name}}":"{{value}}"{{#comma}},{{/comma}} {{/args}} } ], "Total": 1}
@nico_g
Paw-some!
@nico_g
@nico_g
Developer Advocate
@nico_g
Connect with devs and help them make the most of your APIs
Share knowledge at conferences, meetups & hackathons
Design and provide sample code for developers to make their use of the API easy
work on fun projects to show what your API is capable of
@nico_g
@nico_g