The|ushering|in of the app era has resulted in an increased focus on User Experience (UX) in practically every product, including those, like (say) networking products, that were traditionally considered as too technical to be simplified. The "Consumerisation" of IT has led users, who are used to intuitive, simple and beautiful experiences in the apps that they use in their personal lives, demanding those same capabilities in their enterprise applications. Indeed,simplicity, ease of use, supportability and manageability are increasingly being touted as competitive differentiatorseven for the most complex products.
UX is an area that is typically associated with the Graphical User Interfaces (GUIs) that are presented to the end user of an application. It consists of three disciplines:
The key to good UX design is a deep understanding of the user persona that the application is intended for. This includes, amongst other things, the use cases that the application is intending to address, and the skill and knowledge possessed by the user of the application. The key to good UX is to keep the focus of the application on the user and their needs while hiding the technical complexities of the product from them.
While it is easy to understand UX in the context of a GUI, it is often ignored when the product being developed is a REST API. The end result of this is that many REST APIs that are designed today are nothing more than object browsers delivering internal representations of the domain/business objects over HTTP/S as a transport layer. While this may be appropriate for some use cases (e.g. using a REST API to configure a network device), in many instances this approach makes the APIs very difficult to consume by developers intending to build applications on the programmable platform.
All too often, I see many products approaching the design of API from the perspective of the developer who creates the APIs rather than the developer who consumes it.Bringing principles of good UX design to APIscan make their consumption pleasurable to the users who they're intended for. To that end I will identify some guidelines for a well designed REST API. (It must be noted that visual design is typically not relevant to a REST API since REST APIs typically just present the model (data) of the server.) These should be definitely considered as necessary but not sufficient from a design perspective.
DevNet's Casey Tong discusses API design at the Design Thinking booth at DevNet Create.
As with anything in life, making things simple and easy to use by others is probably one of the most difficult outcomes to achieve, and REST APIs are no exception. It is equal part art and science with the choices often being not so much between right and wrong as it is good versus better. There are many considerations that go into a well designed API and I hope to share my thoughts on these topics, and hear yours, via these blogs. In the next blog, I will dive into more details on what makes for a good Developer Experience (DX) including the areas of URI and Document design, HATEOAS principles and REST API documentation.
I welcome your thoughts, feedback, criticism, agreements and disagreements on these topics. I am sure I will learn from the interactions I have with the broader community via these blogs.
We'd love to hear what you think. Ask a question or leave a comment below.
And stay connected with Cisco DevNet on social!
Twitter @CiscoDevNet | Facebook | LinkedIn
Visit the new Developer Video Channel