SlideShare uma empresa Scribd logo
1 de 58
Baixar para ler offline
The next generation of
               Google APIs
                                Ade Oshineye
                              www.oshineye.com/+




Let’s talk about the future
This. Is. Not. A.Vendor. Pitch.

This is not a vendor pitch
www.oshineye.com/+

I work on the Google+ Project
A long time ago I wrote a short book
“We’re working on a project to bring you
                       a new and improved Google experience,
                       and over the next few months, you’ll
                       continue to see more updates to our
                       look and feel”



http://googleblog.blogspot.com/2011/06/evolving-google-design-and-experience.html



 One unified user experience
This is great for users.
What about a unified
            developer experience?


What about developers?
What if developers were people too?
Developers get their own site. All our developer documentation is migrating here.
But it’s not enough to unify the documentation if you don’t unify the APIs...
Mistakes made and
                 lessons learned


How do we get to this promised land of unified APIs?
Let’s go back then forwards
GData APIs
ReST, Atom, AtomPub, standards.
JSON is just a second-class representation of the Atom
Big investment across the entire company
Many years, multiple revisions
Lots of iteration and refinement
What’s wrong with this picture?
Feedback

GData made all APIs look like atom:entries
It didn’t model the domain
It put ReST and AtomPub compliance before developer convenience
This made simple things hard
Buzz API
ActivityStreams, Atom, AtomPub, JSON, OAuth, PSHB, MediaRSS, Portable Contacts
Lots of standards. Reused and composed standards.
Focussed on letting you rebuild our UI.
Modeled the domain.
JSON client library
              Standards first
           Developer interviews
              UI reflects API
            API models domain

What changed for Buzz
Good news


• Anybody could build their own client
  library on top of HTTP
• Possible to reuse existing technology like
  Google Reader because we reused Atom
• Brought attention to niche specifications
  like GeoRSS
• Made more people aware of OAuth
Bad news


• Made more people aware of OAuth
• Discovered bugs in niche specifications like
  GeoRSS
• Composing specifications meant you had to
  read standards documents
• Specifications != Standards
• People kept trying to write their own client
  libraries
Google+ API
UX techniques for developer-facing
1   products
2 Focus on the OOB experience
3 Use convention over configuration
4 Design away common problems
#devexp




    developerexperience.org
          @devexpftw
    +Developer Experience
What does this mean
  for Google+?
Build cool technology




Design is how it works. This is not something you can apply later to make things pretty.
It has to be designed-in. It’s not just about having pretty documentation.
Solve real problems for
      real people
1 Users
                   2 External developers
                   3 Internal developers




Who are these real people?
Problems & solutions
People don’t want to
               learn ReST, OAuth,
                    HTTP, etc


They just want to write code and solve the problem they’re being paid to solve
Give them client libraries that do the right thing by default
We can’t afford to
build/maintain every
    language+API
     combination
JSON Document describing all
     our APIs

     JSON Document per API

     Libraries could read those
     documents and statically/
     dynamically provide classes

     1 library per language not per
     API or version




Discovery
People don’t want to
               deal with the
            impedance mismatch
               between their
          languages and AtomPub

External developers aren’t as excited about Atom as we are
Default to JSON


Let them eat JSON
Correction: Default to pretty-printed JSON


The overhead is worth it in terms of debugging time saved. It can always be switched off.
People want to play
with your API before
    they make a
    commitment
http://code.google.com/apis/explorer/#_s=plus&_v=v1&_m=people.get&userId=me




 Give them an API Explorer that uses Discovery
People hate waiting to
           get hold of API keys in
           order to use your API


This is magnified if they’re using multiple APIs
Give them a unified API console for managing API keys and billing
The Circle Of Life



for APIs
1 Launch
2 Use and abuse
3 Feedback and iteration
4 Revision and replacement
There will be mistakes
• Provide a public issue tracker
• Have a mailing list for questions and
  discussion
• Get feedback on your documentation
• Go out and ask your customers what they
  think of your API
• Run ‘office hours’
Religion
ReST versus RPC



We support both. Web developers seem increasingly fond of RPC.
They both have their place.
Versioning



Content negotiation, custom headers or different domains.
We just put it in the URL because it’s simpler for people to handle without reading
documentation.
We seldom increment the version.
Should your APIs
                    reflect your UI?


No.
It slows down the evolution of your UI and API because you have to maintain dead endpoints.
It encourages you to just throw your internal APIs over the wall.
It blinds you to the actual needs of external developers. They’re not like you.
It limits what external developers can build.
JSON > XML/Atom



JSON is slowly reinventing the XML wheel (for example JSON Schema) but it’s what developers
want and need.
You have to give the people what they want.
Snowflakes versus
        Standards/Specifications


Snowflakes have the benefit of internal consistency
Standards have the benefit of external consistency
http://self-issued.info/docs/draft-jones-json-web-token.html
Or would you just use a verified=”true” parameter?
When the data
disagrees with your
beliefs, change your
       religion
Thank You!

Mais conteúdo relacionado

Mais procurados

Mais procurados (9)

Writing code samples for API/SDK documentation
Writing code samples for API/SDK documentationWriting code samples for API/SDK documentation
Writing code samples for API/SDK documentation
 
SGIN2013-ScrumStartRek-CucumberRecipes-SonikChopra
SGIN2013-ScrumStartRek-CucumberRecipes-SonikChopraSGIN2013-ScrumStartRek-CucumberRecipes-SonikChopra
SGIN2013-ScrumStartRek-CucumberRecipes-SonikChopra
 
Using JavaScript for Mobile Development
Using JavaScript for Mobile DevelopmentUsing JavaScript for Mobile Development
Using JavaScript for Mobile Development
 
User stories deep dive
User stories deep diveUser stories deep dive
User stories deep dive
 
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
 
Ember At Scale
Ember At ScaleEmber At Scale
Ember At Scale
 
Build chatbots with api.ai and Google cloud functions
Build chatbots with api.ai and Google cloud functionsBuild chatbots with api.ai and Google cloud functions
Build chatbots with api.ai and Google cloud functions
 
Learn Once; Write Anywhere
Learn Once; Write AnywhereLearn Once; Write Anywhere
Learn Once; Write Anywhere
 
Pender presentation 2.0
Pender presentation 2.0 Pender presentation 2.0
Pender presentation 2.0
 

Semelhante a The next generation of google APIs (Ade Oshineye)

5 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 20135 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 2013
Daniel Feist
 

Semelhante a The next generation of google APIs (Ade Oshineye) (20)

Building a REST API for Longevity
Building a REST API for LongevityBuilding a REST API for Longevity
Building a REST API for Longevity
 
5 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 20135 Keys to API Design - API Days Paris 2013
5 Keys to API Design - API Days Paris 2013
 
API Design Workflows
API Design WorkflowsAPI Design Workflows
API Design Workflows
 
Enterprise ipad Development with notes
Enterprise ipad Development with notesEnterprise ipad Development with notes
Enterprise ipad Development with notes
 
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
Cross platform engineering - Lessons Learned (Michael Asimakopoulos, Valadis ...
 
Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010
 
Java And Community Support
Java And Community SupportJava And Community Support
Java And Community Support
 
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
Node.JS Vs PHP: Which Is The Top Server-Side Programming Language?
 
API presentation
API presentationAPI presentation
API presentation
 
Where All Libraries & Data Required For Android App Development Are Present
Where All Libraries & Data Required For Android App Development Are PresentWhere All Libraries & Data Required For Android App Development Are Present
Where All Libraries & Data Required For Android App Development Are Present
 
Generating docs from APIs
Generating docs from APIsGenerating docs from APIs
Generating docs from APIs
 
9 reasons why programmers should learn react native
9 reasons why programmers should learn react native9 reasons why programmers should learn react native
9 reasons why programmers should learn react native
 
Ebook undisturbed rest-v1 [res_tful apis]
Ebook undisturbed rest-v1 [res_tful apis]Ebook undisturbed rest-v1 [res_tful apis]
Ebook undisturbed rest-v1 [res_tful apis]
 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
 
Beyond the basic Swagger UI: Adyen API Explorer
Beyond the basic Swagger UI: Adyen API ExplorerBeyond the basic Swagger UI: Adyen API Explorer
Beyond the basic Swagger UI: Adyen API Explorer
 
Decoupled Architecture and WordPress
Decoupled Architecture and WordPressDecoupled Architecture and WordPress
Decoupled Architecture and WordPress
 
Publishing strategies for API documentation
Publishing strategies for API documentationPublishing strategies for API documentation
Publishing strategies for API documentation
 
Mulesoft Raml APIs
Mulesoft Raml APIsMulesoft Raml APIs
Mulesoft Raml APIs
 
Node Js vs PHP Which One is Perfect for Your Project
Node Js vs PHP Which One is Perfect for Your ProjectNode Js vs PHP Which One is Perfect for Your Project
Node Js vs PHP Which One is Perfect for Your Project
 
Full stack conference talk slides
Full stack conference talk slidesFull stack conference talk slides
Full stack conference talk slides
 

Mais de Ontico

Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico
 

Mais de Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

The next generation of google APIs (Ade Oshineye)

  • 1. The next generation of Google APIs Ade Oshineye www.oshineye.com/+ Let’s talk about the future
  • 2. This. Is. Not. A.Vendor. Pitch. This is not a vendor pitch
  • 3. www.oshineye.com/+ I work on the Google+ Project
  • 4. A long time ago I wrote a short book
  • 5. “We’re working on a project to bring you a new and improved Google experience, and over the next few months, you’ll continue to see more updates to our look and feel” http://googleblog.blogspot.com/2011/06/evolving-google-design-and-experience.html One unified user experience
  • 6. This is great for users.
  • 7. What about a unified developer experience? What about developers? What if developers were people too?
  • 8. Developers get their own site. All our developer documentation is migrating here. But it’s not enough to unify the documentation if you don’t unify the APIs...
  • 9. Mistakes made and lessons learned How do we get to this promised land of unified APIs? Let’s go back then forwards
  • 11. ReST, Atom, AtomPub, standards. JSON is just a second-class representation of the Atom
  • 12. Big investment across the entire company Many years, multiple revisions Lots of iteration and refinement
  • 13. What’s wrong with this picture?
  • 14. Feedback GData made all APIs look like atom:entries It didn’t model the domain It put ReST and AtomPub compliance before developer convenience This made simple things hard
  • 16. ActivityStreams, Atom, AtomPub, JSON, OAuth, PSHB, MediaRSS, Portable Contacts
  • 17. Lots of standards. Reused and composed standards. Focussed on letting you rebuild our UI. Modeled the domain.
  • 18. JSON client library Standards first Developer interviews UI reflects API API models domain What changed for Buzz
  • 19. Good news • Anybody could build their own client library on top of HTTP • Possible to reuse existing technology like Google Reader because we reused Atom • Brought attention to niche specifications like GeoRSS • Made more people aware of OAuth
  • 20. Bad news • Made more people aware of OAuth • Discovered bugs in niche specifications like GeoRSS • Composing specifications meant you had to read standards documents • Specifications != Standards • People kept trying to write their own client libraries
  • 22.
  • 23.
  • 24. UX techniques for developer-facing 1 products 2 Focus on the OOB experience 3 Use convention over configuration 4 Design away common problems
  • 25. #devexp developerexperience.org @devexpftw +Developer Experience
  • 26. What does this mean for Google+?
  • 27. Build cool technology Design is how it works. This is not something you can apply later to make things pretty. It has to be designed-in. It’s not just about having pretty documentation.
  • 28.
  • 29. Solve real problems for real people
  • 30. 1 Users 2 External developers 3 Internal developers Who are these real people?
  • 32. People don’t want to learn ReST, OAuth, HTTP, etc They just want to write code and solve the problem they’re being paid to solve
  • 33. Give them client libraries that do the right thing by default
  • 34. We can’t afford to build/maintain every language+API combination
  • 35. JSON Document describing all our APIs JSON Document per API Libraries could read those documents and statically/ dynamically provide classes 1 library per language not per API or version Discovery
  • 36. People don’t want to deal with the impedance mismatch between their languages and AtomPub External developers aren’t as excited about Atom as we are
  • 37. Default to JSON Let them eat JSON
  • 38. Correction: Default to pretty-printed JSON The overhead is worth it in terms of debugging time saved. It can always be switched off.
  • 39. People want to play with your API before they make a commitment
  • 41. People hate waiting to get hold of API keys in order to use your API This is magnified if they’re using multiple APIs
  • 42. Give them a unified API console for managing API keys and billing
  • 43. The Circle Of Life for APIs
  • 44. 1 Launch 2 Use and abuse 3 Feedback and iteration 4 Revision and replacement
  • 45. There will be mistakes • Provide a public issue tracker • Have a mailing list for questions and discussion • Get feedback on your documentation • Go out and ask your customers what they think of your API • Run ‘office hours’
  • 46.
  • 48. ReST versus RPC We support both. Web developers seem increasingly fond of RPC. They both have their place.
  • 49. Versioning Content negotiation, custom headers or different domains. We just put it in the URL because it’s simpler for people to handle without reading documentation. We seldom increment the version.
  • 50. Should your APIs reflect your UI? No. It slows down the evolution of your UI and API because you have to maintain dead endpoints. It encourages you to just throw your internal APIs over the wall. It blinds you to the actual needs of external developers. They’re not like you. It limits what external developers can build.
  • 51. JSON > XML/Atom JSON is slowly reinventing the XML wheel (for example JSON Schema) but it’s what developers want and need. You have to give the people what they want.
  • 52. Snowflakes versus Standards/Specifications Snowflakes have the benefit of internal consistency Standards have the benefit of external consistency
  • 53.
  • 54.
  • 55.
  • 57. When the data disagrees with your beliefs, change your religion