creating a great developer experience through sdks
TRANSCRIPT
CREATING A GREAT DEVELOPER EXPERIENCE
THROUGH SDKS
@taylor_atx
Collect & store data from users, websites, apps &
smart devices.
Query instantly to share results with teams &
customers, anywhere.
@taylor_atx
LET’S BE REAL ABOUT SDKS
@taylor_atx
Most API providers aren’t updating their SDKs enough
😞
@taylor_atx
Get the most attention when they are 🔥broken🔥
@taylor_atx
Many of SDKs are now open source, which is great, but…
@taylor_atx
There are a lot of great HTTP request libraries out there now
🎉
@taylor_atx
We could talk for a really long time about why using SDKs aren’t great
@taylor_atx
WHY SHOULD YOU PROVIDE SDKS?
@taylor_atx
Most of the time using an API is important, but peripheral to why the
software is being written
@taylor_atx
Your SDKs are your API
@taylor_atx
SDKs give quick feedback on how your API works
@taylor_atx
There’s a business case for putting resources into SDKs
@taylor_atx
OTHER REASONS
• When there’s no good built in HTTP request library
• Error handling
• Building clients with 100% API coverage
• Helping users with authentication
• Best practices with complex APIs
@taylor_atx
CREATING A GREAT DEVELOPER EXPERIENCE
@taylor_atx
PRODUCT VS COMMUNITY SDKS
• Clearly define the two to set better expectations
• If you don’t build them, Community SDKs will appear
• Leads to a scattered developer experience
• Community SDK bugs will appear in your Support channels
@taylor_atx
DOCUMENTATION
• Write the SDK documentation first
• Consistency
• Helps evaluate the experience
@taylor_atx
DOCUMENTATION
• Include sections for
• Troubleshooting, with common errors and issues users run into —> Your Support team will love you for this
• Changelog or release notes
@taylor_atx
SCARY WORLD OF DEPENDENCIES
• Help your users navigate it
• Users need to know changes between SDK versions
• Survey your options
😱
@taylor_atx
DANGERS OF NOT MAKING YOUR OWN SDKS
• Not eating your own dog food is dangerous
• Helps you understand the cost of building with your own API
• It’s also encouragement to add new API features into your SDK when they released, not later
@taylor_atx
NATIVE AS POSSIBLE
• Please do not auto generate SDKs badly from your API
• Example: Go find a Go developer to write your Go SDK
• Start with the languages that are the most popular for your target audience and that your team is familiar with
@taylor_atx
COMMON DATA STRUCTURES
• Avoid inconsistency in your users’ code
• Example: JSON is a great option for representing data
• Want to map well to data structures in many different languages
@taylor_atx
USAGE TRACKING
• Great opportunity to learn about your users
• Critical statistics for developing, maintaining, and improving your SDKs
• Every popular API company today is tracking this: SendGrid, Twilio, Stripe, Dropbox, etc.
@taylor_atx
📊
# Example from the Twilio Python module # https://github.com/twilio/twilio-python
user_agent = "twilio-python %s (python-%s)" % ( LIBRARY_VERSION, platform.python_version(), )
headers = { "User-Agent": user_agent, "Accept-Charset": "utf-8", }
USAGE TRACKING
@taylor_atx
EXAMPLES
@taylor_atx