I’ve started work on a tool to help web API designers build rapid prototypes for their APIs. Up until now, I’ve been prototyping APIs on whiteboards, or by building an API endpoint. But, I’d rather have a tool that lets me build an interface really quickly without getting bogged down in details of implementation. I’d like something that lets me focus exclusively on the interface. I couldn’t find anything online, so I decided to give it a go myself.
I’m starting with these principles in mind for the UI:
* No coding
* Static data only
* Support for both RPC and hypermedia APIs (and possibly WS/SOAP)
I bounced the idea off my colleague Mike Amundsen and he was equally excited and had some great suggestions of his own. So lets see where this goes…. next step, naming the project and getting it in Github.
Sometimes design concepts are obvious. We know they are implicitly understood and don’t require drawn out explanations. But, sometimes these implicitly understood concepts aren’t executed in real life because they haven’t been explicitly defined. I’ve come to the realization that designing APIs with the developer in mind is one of those ideas that often has an audience nodding their heads but one which only a few take to heart and apply to their API architecture.
We in the API design world have a great opportunity to learn from our brethren in the product design world. The user-centered design approach for products has paid great dividends for those who can understand and apply the idea to their interfaces. The goal is almost stupid in simplicity – design products that your users will enjoy. But, as always the challenge is in translating a simple concept into real strategies, methodologies and practices that do not lose that fundamental goal while staying applicable to unique marketplaces.
In our world of API design, most of us understand that machine to machine integration still involves a human – the developer who develops the client code. That developer – the one who makes or breaks us by deciding to use an API is our user. While product designers talk about improving user experience, we talk about improving the developer experience.
But, how does this actually happen? What do we specifically need to do in order to create APIs that are enjoyable to use? Indeed, what does enjoyable even mean in this context? This developer and API publisher relationship is a unique one and the product based user centered design and human-computer interaction models cannot just be airlifted in. They need to be massaged and transformed so they are applicable to the web API world without losing the potential value inherent in a user focused design.
I hope to explore these ideas over the coming months and come up with recommendations on how we can build API solutions that deliver on the promise of improved developer experience (or DX). I’ll dive deeper into the world of user centered design and discuss methods for translating these concepts from the world of product design into our API design domain.