Today IBM announced the launch of API Harmony, a service which lets developers search public APIs and find relationships between them. Many of today’s products and services include APIs and other points of extension and integration intended to be used by software developers, even if the primary market segment for these products and services is not software developers. Flickr co-founder Caterina Fake once referred to APIs as Business Development 2.0 and others have more recently begun to use the term API Economy to refer to the emergence of APIs as a new model of engagement with customers, business partners, and others.
What is Developer Experience and why does it matter in the API Economy? Developer Experience is a subset of the broader field of User Experience, but focused specifically on the experience of software developers when building and integrating software. Developers are gaining more influence over the purchase decisions of technologies with which they must build on and with which they must integrate. For example, the successes of Amazon Web Services, Heroku, and MongoDB have been driven primarily by individual software developers choosing to use these tools, rather than by the decisions of managers or business executives. In my experience as a software developer, there are three key main components to providing a great Developer Experience in the API Economy.
Software developers want to be able to immediately try a new product without needing to first talk with a sales person. Make the product and its features as discoverable as possible. Resources such as sample applications, tutorials, blog posts, and documentation are extremely useful in helping a developer learn how to use the product. Time, space, and resources to experiment and build with the product are invaluable. Be available to answer questions from developers when asked, ideally through commonly-used forums such as Stack Overflow.
Software developers build by wiring together multiple components into a single solution. One historic example of this is the Unix philosophy, the basic premise of which is that each program in a Unix environment is expected to “Do One Thing and Do It Well” and pipe its output and input to and from other programs. Make sure your product can be used as a component within a larger system. If you provide a complete platform for developers, then allow developers to use individual components of your platform. In other words, don’t require full platform usage. There can be additional value add to using your entire platform, but developers will avoid vendor lock-in if at all possible.
— Josh Marinacci (@joshmarinacci) October 29, 2015
For software developers, the term “hacking” simply means “tinkering” or “experimenting” (this use of the word “hacking” doesn’t mean anything nefarious). Encourage and reward unexpected uses of your product. Consider taking a “batteries included but removable” approach. This will allow developers who want to use your product in the standard, expected way to get up-and-running quickly, but allow those who want more flexibility the option to play and experiment.