Your API SucksWhy developers hang up and how to stop that.Marsh Gardiner			@earth2marshProduct Manager, Apigee
THIS TALKIN A NUTSHELLUser experience wins
API users = developers
Developer experiences (generally) suck
But they don’t have to…Simple things should be simple.Complex things should be possible.— Alan Kay
POST /InStock HTTP/1.1Host: www.example.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: 299<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2003/05/soap-envelope">  <soap:Header>  </soap:Header>  <soap:Body>    <m:GetStockPricexmlns:m="http://www.example.org/stock">      <m:StockName>IBM</m:StockName>    </m:GetStockPrice>  </soap:Body></soap:Envelope>
Why REST is winning:http://api.twitter.com/1/statuses/public_timeline.json
Why did youbuild an API?
Why is this so hard?
Why does Freemium work?
Do it better
Your API is a product.Treat it that way.Your developers are your customers.
Your engineers may be great at writing the code behind your API. Are they great at writing API docs?
“Because you can,” doesn’t mean, “you should.”Good visual design involves restraint. Good code involves restraint. Good API design involves restraint.
Opacity is inscrutable. (Also, unforgivable.)Give devs the information they need to succeed.

Your API Sucks

  • 1.
    Your API SucksWhydevelopers hang up and how to stop that.Marsh Gardiner @earth2marshProduct Manager, Apigee
  • 2.
    THIS TALKIN ANUTSHELLUser experience wins
  • 3.
    API users =developers
  • 4.
  • 5.
    But they don’thave to…Simple things should be simple.Complex things should be possible.— Alan Kay
  • 16.
    POST /InStock HTTP/1.1Host:www.example.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: 299<?xml version="1.0"?><soap:Envelopexmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> </soap:Header> <soap:Body> <m:GetStockPricexmlns:m="http://www.example.org/stock"> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body></soap:Envelope>
  • 17.
    Why REST iswinning:http://api.twitter.com/1/statuses/public_timeline.json
  • 19.
  • 22.
    Why is thisso hard?
  • 23.
  • 27.
  • 28.
    Your API isa product.Treat it that way.Your developers are your customers.
  • 31.
    Your engineers maybe great at writing the code behind your API. Are they great at writing API docs?
  • 32.
    “Because you can,”doesn’t mean, “you should.”Good visual design involves restraint. Good code involves restraint. Good API design involves restraint.
  • 34.
    Opacity is inscrutable.(Also, unforgivable.)Give devs the information they need to succeed.

Editor's Notes

  • #2 Creative Commons Attribution-Share Alike 3.0 United States License
  • #4 This is one of my favorite design quotes. We use it all the time as we plan out Apigee’s web interface.
  • #5 This book has been out for over 10 years now. How many of you have read this?It’s not rocket surgery.What is usability? It’s making things easier.Heroku making deployment easier.Facebook making pubsub easier.GitHub making version control easier.
  • #6 The infamous butterfly ballots.
  • #8 http://www.businessinsider.com/why-tumblr-is-kicking-posterous-ass-2010-1
  • #9 http://www.csuchico.edu/~curban/DarwinSP2002Phil108.htmDarwin’s Finches
  • #12 Design. Brand identity. Inviting. A place you’d prefer to be.SyntaxhighlightingList of methodsSimplified
  • #15 Here’s an example SOAP request
  • #17 Easier. Make it. easier.
  • #18 Seriously. Why?
  • #19 http://www.flickr.com/photos/programmerman/2315566040/Developers, developers, developers, developers
  • #20 If you build it, will they come?
  • #22 Try before you buy.No barrier to engaging.What does this mean for APIs?
  • #23 http://www.flickr.com/photos/psi_mon/3473153641/Signup to get a keyWait to be acceptedFigure out authenticationOAuth 1 vOAuth 2EULA storyReference call (public_timeline) no auth req’d. Salesforce example. Twitter public timeline
  • #24 http://www.flickr.com/photos/chdot/2978611346/
  • #25 http://www.flickr.com/photos/35034348080@N01/393214858/Get them riding asap.Constructionism,seymourpapert. Related to constritivism. construct mental models to understand the world around themThe experience has continuity and interaction.Continuity is the idea that the experience comes from and leads to other experiences, in essence propelling the person to learn more. Interaction is when the experience meets the internal needs or goals of a person.
  • #28 Author of Gowalla Tools, a very popular sdk, put it on hiatus.http://gowallatools.com/api/
  • #30 API request is a transaction between two parties. If you look at it from one or the other.Just because you’re the person who’s implemented something doesn’t mean you’re the best person to explain how it works. For one, people are going to use it in ways you didn’t intend, just like the do with websites.
  • #31 Make it as easy as possible for people to use your API.
  • #32 http://developer.truveo.com/methodJSON.php?name=truveo.videos.getVideos
  • #33 Rate limit policies and remaining
  • #34 http://app.apigee.com/console/apigee-console-snapshots-1291179600000_3c78ee51-8a85-4c40-b0c0-052c3d908e55/rendersnapshotview
  • #35 http://developers.facebook.com/live_status
  • #36 There is no one way. Have an opinion. Be passionate about this.How simple API design patterns facilitate adoption, a la Twitter Grandma test.Just because devs are smart doesn’t mean you can make it complicatedError simulationoauthpocalypseGiving enough awayUseless response codesGet when you should putThe Fox Sports Bar TestPoor experience is opportunity