開(kāi)放 API 前,你考慮到開(kāi)發(fā)體驗(yàn)了嗎?

如同UX(用戶(hù)體驗(yàn))旨在提供給使用者在Web和App上最佳的操作體驗(yàn),DX(開(kāi)發(fā)者體驗(yàn))的目的即在于提供開(kāi)發(fā)者完善的開(kāi)發(fā)支持和服務(wù)體驗(yàn)。隨著越來(lái)越多的API被開(kāi)放出來(lái)提供開(kāi)發(fā)者使用,DX也就日益重要。
良好的開(kāi)發(fā)者體驗(yàn),能讓開(kāi)發(fā)者更加黏著于你的產(chǎn)品和服務(wù),吸引更多優(yōu)秀開(kāi)發(fā)者加入產(chǎn)生更多高附加價(jià)值的應(yīng)用。提供API管理服務(wù)的Mashery更提供了DX認(rèn)證,在官網(wǎng)上條列出經(jīng)過(guò)認(rèn)證的API。如果你的產(chǎn)品或服務(wù)打算開(kāi)放API,那么你應(yīng)該要小心檢測(cè)并且不斷提升整體服務(wù)的開(kāi)發(fā)者體驗(yàn)。
你的服務(wù)提供了什么功能?

當(dāng)在思考DX時(shí),應(yīng)先思考你的目標(biāo)是什么?你希望提供給開(kāi)發(fā)者什么樣的功能?Layer 7的API架構(gòu)師在Nordic APIs活動(dòng)上提出了DX的基本三個(gè)層面,包括了功能(Functionality),易用性(Usability)和體驗(yàn)(Experience),而最底層也最基礎(chǔ)的即是功能,如果你的功能不完整或是無(wú)法滿(mǎn)足開(kāi)發(fā)者,那么其他再好的體驗(yàn)也只是白忙活。
除了功能以外,服務(wù)的可靠性也會(huì)影響開(kāi)發(fā)者對(duì)服務(wù)的信任,因?yàn)殚_(kāi)發(fā)者將使用你的API來(lái)協(xié)助打造自身產(chǎn)品,如果API經(jīng)常發(fā)生錯(cuò)誤,那么開(kāi)發(fā)者遠(yuǎn)離你的服務(wù)。要避免這樣的情形,除了提供良好且穩(wěn)定的環(huán)境外,另一個(gè)很重要的就是提供開(kāi)放透明的服務(wù)狀態(tài)追蹤機(jī)制,例如Heroku的平臺(tái)狀態(tài)頁(yè)很清楚地顯示了目前平臺(tái)是否服務(wù)正常,以及相關(guān)的錯(cuò)誤發(fā)生原因和持續(xù)時(shí)間,你可以通過(guò)email來(lái)訂閱更新?tīng)顟B(tài),甚至通過(guò)手機(jī)短信,在問(wèn)題發(fā)生時(shí)即時(shí)收到信息做進(jìn)一步的對(duì)應(yīng)處理。另外,許多公司也通過(guò)StatusPage來(lái)打造產(chǎn)品和服務(wù)的狀態(tài)頁(yè)。通過(guò)狀態(tài)頁(yè)和開(kāi)發(fā)者或平臺(tái)使用者建立互信的關(guān)系,開(kāi)發(fā)者也就越有信心使用你的平臺(tái)或服務(wù)。
不要寫(xiě)只有自己看得懂的文件
文件是開(kāi)發(fā)者學(xué)習(xí)如何使用API的首要方式,通常是該領(lǐng)域的專(zhuān)家所寫(xiě)成,但專(zhuān)家常常落入一個(gè)情境,認(rèn)為自己看得懂這文件,別人應(yīng)該也看得懂,或是預(yù)先設(shè)定開(kāi)發(fā)者具備某種知識(shí),最后常導(dǎo)致開(kāi)發(fā)者迷失在文件中。建議找不同領(lǐng)域或程度的開(kāi)發(fā)者來(lái)閱讀文件,確認(rèn)文件的內(nèi)容適合任何程度的人閱讀。
另外,現(xiàn)在已經(jīng)有許多工具,可以協(xié)助你編寫(xiě)更好的閱讀,更有互動(dòng)性的API文件,例如Swagger、RAML、APIARY等等,許多API管理服務(wù)公司,如3scale、Mashery也都有提供相關(guān)的工具。

Swagger可以協(xié)助你打造美觀易讀的API文件
縮短上手時(shí)間
許多開(kāi)放的API功能繁多,但大多數(shù)剛接觸的人,其實(shí)只想要趕快讓程序可以跑起來(lái),就像學(xué)習(xí)程序語(yǔ)言時(shí),總是會(huì)先學(xué)習(xí)怎么顯示Hello World。因此,要黏住你的開(kāi)發(fā)者,就要讓開(kāi)發(fā)者能夠在短時(shí)間內(nèi)從無(wú)到有,讓開(kāi)發(fā)者對(duì)你的服務(wù)建立起好的第一印象。
許多文件說(shuō)明,大多會(huì)提供“Get Started“的項(xiàng)目,或是提供相關(guān)的SDK/Library來(lái)協(xié)助開(kāi)發(fā)者。例如Heroku針對(duì)各種程序語(yǔ)言提供了相關(guān)的文件,讓你能夠通過(guò)文件的說(shuō)明,一步一步地打造你的第一個(gè)應(yīng)用程序。甚至,Heroku覺(jué)得Step-by-Step的方式太慢了,在去年提供了一項(xiàng)名為Heroku Button的功能,你可以開(kāi)發(fā)一個(gè)兼容heroku的App放在Github上,同時(shí)在說(shuō)明頁(yè)放上Heroku Button,若使用者有Heroku帳號(hào),只要點(diǎn)擊Heroku Button,就會(huì)直接在使用者的Heroku帳號(hào)下產(chǎn)生該App,服務(wù)即可馬上運(yùn)作,還有什么比這還要快速的?Heroku希望讓整個(gè)從零到有的過(guò)程變成,并且沒(méi)有第二步。

Heroku Button讓開(kāi)發(fā)者可以快速部署App到Heroku平臺(tái)
遇到問(wèn)題該怎么辦?
API在使用上遇到問(wèn)題,是否有良好的文件支持?有沒(méi)有常見(jiàn)問(wèn)題FAQ?或是提供討論區(qū)讓開(kāi)發(fā)者遇到問(wèn)題時(shí)有地方討論,這些都是能協(xié)助開(kāi)發(fā)者自行解決問(wèn)題的方式。好的技術(shù)支持和友善的社群環(huán)境,讓使用者即使遇到問(wèn)題也不至于亂了手腳,同時(shí)更可以加深開(kāi)發(fā)者對(duì)服務(wù)的信任。
甚至許多公司也針對(duì)開(kāi)發(fā)者建立了完整的開(kāi)發(fā)者入口網(wǎng)站,如Facebook Developers、PayPal Developer等公司。另外,也可以提供開(kāi)發(fā)者除錯(cuò)工具,例如Facebook提供的Graph API Explorer,讓開(kāi)發(fā)者有更多的方式去解決問(wèn)題。

Facebook提供的Graph API Explorer協(xié)助開(kāi)發(fā)者探索API
最后,別忘了吃你自己的狗食(Dogfooding)
要提升DX的方式,就是使用自己的服務(wù),閱讀自己寫(xiě)出來(lái)的文件,確認(rèn)使用者能照著你提供的文件、示例程序產(chǎn)出最后的結(jié)果,并隨時(shí)不斷思考有沒(méi)有簡(jiǎn)化的可能(但別過(guò)于簡(jiǎn)化!)。要記住程序員也是一般人,如果連使用自己開(kāi)發(fā)的服務(wù)都出現(xiàn)障礙,又如何希望其他使用者能愉快地使用你的服務(wù)呢?
同時(shí)切記,提升開(kāi)發(fā)者使用經(jīng)驗(yàn)不是僅僅只提供完整的文件而已,應(yīng)該還包含了API的功能性、可靠性,以及完善的技術(shù)支持和廣大的社群支持,都是建立良好開(kāi)發(fā)者體驗(yàn)所不可或缺的要素,也唯有如此才能真正和開(kāi)發(fā)者之間建立起信任的橋梁。
本文原作者:王昱程
