41
10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum

10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

10 Things I Hate About Your APIAmanda Folson

Developer Advocate @ GitLab@AmbassadorAwsum

Page 2: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Who Am I?● Developer Advocate

@ GitLab● API Person● Tinkerer● Word maker

Page 3: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

1) Your Onboarding Stinks

Page 4: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Is This Thing On?

● Signup takes too long

● Not easy to get started

● No sample code at all!

Page 5: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Onboarding Solutions

● Make signup a breeze● Get someone immersed in your

API in under 5 minutes● Measure Time To First $thing

○ Time to First Request○ Time to First API Key○ Time to First SMS○ Time to First Order

Page 6: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

2) No Tools to Succeed

Page 7: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Tooling Problems

● No SDKs

● No quickstarts

● No sandbox for testing

● Nowhere to get help (???)

© Ian Baker (CC BY 2.0) https://www.flickr.com/photos/raindrift/7095238893/in/album-72157629492908038/

Page 8: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Tooling Solutions

● Provide SDKs or sample code

● Provide docs and sample apps to get started

● Provide a sandbox to play in

● Make it easy to get help if they’re stuck

Page 9: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

3) Your Documentation Stinks

Page 10: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Documentation Problems

● Out of date or inaccurate

● Incomplete

● Not useful

Page 11: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Documentation Solutions

● Have docs

● Tools like Swagger/Apiary

● Add quickstarts and tutorials for people to play with

● Make documentation part of your API strategy

Page 12: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

HelloSign Documentation

Page 13: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

4) API is a Sales Tool instead of Success Tool

Page 14: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

I’m just the developer...

Page 15: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person
Page 16: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person
Page 17: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person
Page 18: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person
Page 19: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Twilio Signup Form

Page 20: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Recap

● Don’t make me buy before I try

● Ideally I don’t have to wait for a human to set up my account

● Be careful where you put your Call to Actions

Page 21: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

5) Your API Isn’t Reliable

Page 22: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

uptime++;● Your uptime is awful

● Your responses are slow

● You don’t announce breaking changes

● There are too many bugs

● Too inconsistent (more on that later)

Page 23: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

● Invest time to make sure your API is robust

● Stop making unannounced breaking changes

● Change logs!

● Invest time in designing your API

Page 24: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

6) Your API is Poorly Designed

Page 25: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

/lol/what● Endpoints make no sense

○ /users/1/orders -> View a user’s orders○ /orders/1/9001 -> View order 9001 which is owned by user 1

■ Users own orders, we could have:● /users/1/orders/● /users/1/orders/9001

● Endpoints have inconsistent data○ /users/1/ -> creation_date○ /orders/9001 -> created-date

Page 26: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Design First Approach

● Map out endpoints logically

○ I do this on paper

● Design for a uniform experience

Page 27: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

7) Your API Doesn’t Meet Users’ Needs

Page 28: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Build Something People Want (or NEED)

● Your API is missing important features

● You don’t incorporate feedback

● You build for yourselves and not users

Page 29: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Ask.

● Involve users in the discussion from the start

● Alpha/Beta test to source feedback

● LISTEN

Page 30: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

8) Your API Doesn’t Use Best Practices

Page 31: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

It’s Not Always 200 OK...

● Using the wrong status codes

● Bad error messages

● Not adhering to standards

Page 32: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

ERROR: 418 - I'm a teapot● Use status codes that explain errors

○ 404 Not Found○ 401 Unauthorized○ 500 We Broke Stuff Try Later

● “Bad Request” => “Bad Request: $field is required”● /shutdown isn’t RESTful, it’s RPCful

○ Sometimes this is necessary○ Be honest about it

Page 33: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

9) You Don’t Care About Security

Page 34: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

NO SSL???

Page 35: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

ROLL YOUR OWN AUTH/CRYPTO?!

Page 36: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Security? Who Even Needs That?

Page 37: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

More Seriously...

Use SSL

Stop rolling your own crypto

Hire consultants if needed

Page 38: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

10) Your API Isn’t Maintained

Page 39: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

REST in Peace, API

● No bug fixes

● No new endpoints as product

changes

● No documentation updates

Page 40: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Don’t leave me hangin’

● Plan to maintain your API

○ Docs

○ Support

○ Bug fixes

Page 41: 10 Things I Hate About Your API - SCALE...10 Things I Hate About Your API Amanda Folson Developer Advocate @ GitLab @AmbassadorAwsum Who Am I? Developer Advocate @ GitLab API Person

Thank You!Amanda Folson - Developer Advocate at GitLab

[email protected]@AmbassadorAwsum