开放 API 前,你考虑到开发体验了吗?
如同UX(用户体验)旨在提供给使用者在Web和App上最佳的操作体验,DX(开发者体验)的目的即在于提供开发者完善的开发支持和服务体验。随着越来越多的API被开放出来提供开发者使用,DX也就日益重要。
良好的开发者体验,能让开发者更加黏着于你的产品和服务,吸引更多优秀开发者加入产生更多高附加价值的应用。提供API管理服务的Mashery更提供了DX认证,在官网上条列出经过认证的API。如果你的产品或服务打算开放API,那么你应该要小心检测并且不断提升整体服务的开发者体验。
你的服务提供了什么功能?
当在思考DX时,应先思考你的目标是什么?你希望提供给开发者什么样的功能?Layer 7的API架构师在Nordic APIs活动上提出了DX的基本三个层面,包括了功能(Functionality),易用性(Usability)和体验(Experience),而最底层也最基础的即是功能,如果你的功能不完整或是无法满足开发者,那么其他再好的体验也只是白忙活。
除了功能以外,服务的可靠性也会影响开发者对服务的信任,因为开发者将使用你的API来协助打造自身产品,如果API经常发生错误,那么开发者远离你的服务。要避免这样的情形,除了提供良好且稳定的环境外,另一个很重要的就是提供开放透明的服务状态追踪机制,例如Heroku的平台状态页很清楚地显示了目前平台是否服务正常,以及相关的错误发生原因和持续时间,你可以通过email来订阅更新状态,甚至通过手机短信,在问题发生时即时收到信息做进一步的对应处理。另外,许多公司也通过StatusPage来打造产品和服务的状态页。通过状态页和开发者或平台使用者建立互信的关系,开发者也就越有信心使用你的平台或服务。
不要写只有自己看得懂的文件
文件是开发者学习如何使用API的首要方式,通常是该领域的专家所写成,但专家常常落入一个情境,认为自己看得懂这文件,别人应该也看得懂,或是预先设定开发者具备某种知识,最后常导致开发者迷失在文件中。建议找不同领域或程度的开发者来阅读文件,确认文件的内容适合任何程度的人阅读。
另外,现在已经有许多工具,可以协助你编写更好的阅读,更有互动性的API文件,例如Swagger、RAML、APIARY等等,许多API管理服务公司,如3scale、Mashery也都有提供相关的工具。
Swagger可以协助你打造美观易读的API文件
缩短上手时间
许多开放的API功能繁多,但大多数刚接触的人,其实只想要赶快让程序可以跑起来,就像学习程序语言时,总是会先学习怎么显示Hello World。因此,要黏住你的开发者,就要让开发者能够在短时间内从无到有,让开发者对你的服务建立起好的第一印象。
许多文件说明,大多会提供“Get Started“的项目,或是提供相关的SDK/Library来协助开发者。例如Heroku针对各种程序语言提供了相关的文件,让你能够通过文件的说明,一步一步地打造你的第一个应用程序。甚至,Heroku觉得Step-by-Step的方式太慢了,在去年提供了一项名为Heroku Button的功能,你可以开发一个兼容heroku的App放在Github上,同时在说明页放上Heroku Button,若使用者有Heroku帐号,只要点击Heroku Button,就会直接在使用者的Heroku帐号下产生该App,服务即可马上运作,还有什么比这还要快速的?Heroku希望让整个从零到有的过程变成,并且没有第二步。
Heroku Button让开发者可以快速部署App到Heroku平台
遇到问题该怎么办?
API在使用上遇到问题,是否有良好的文件支持?有没有常见问题FAQ?或是提供讨论区让开发者遇到问题时有地方讨论,这些都是能协助开发者自行解决问题的方式。好的技术支持和友善的社群环境,让使用者即使遇到问题也不至于乱了手脚,同时更可以加深开发者对服务的信任。
甚至许多公司也针对开发者建立了完整的开发者入口网站,如Facebook Developers、PayPal Developer等公司。另外,也可以提供开发者除错工具,例如Facebook提供的Graph API Explorer,让开发者有更多的方式去解决问题。
Facebook提供的Graph API Explorer协助开发者探索API
最后,别忘了吃你自己的狗食(Dogfooding)
要提升DX的方式,就是使用自己的服务,阅读自己写出来的文件,确认使用者能照着你提供的文件、示例程序产出最后的结果,并随时不断思考有没有简化的可能(但别过于简化!)。要记住程序员也是一般人,如果连使用自己开发的服务都出现障碍,又如何希望其他使用者能愉快地使用你的服务呢?
同时切记,提升开发者使用经验不是仅仅只提供完整的文件而已,应该还包含了API的功能性、可靠性,以及完善的技术支持和广大的社群支持,都是建立良好开发者体验所不可或缺的要素,也唯有如此才能真正和开发者之间建立起信任的桥梁。
本文原作者:王昱程