ToB產(chǎn)品經(jīng)理:SDK產(chǎn)品設(shè)計(jì)的8個(gè)技巧
SDK是TOB產(chǎn)品的一個(gè)重要組成部分,可以簡單理解提供給程序員幫助他們創(chuàng)建軟件。那么如何設(shè)計(jì)SDK產(chǎn)品,它又有什么設(shè)計(jì)技巧呢?本文將為大家揭曉。
SDK是對很多非科班出身的產(chǎn)品經(jīng)理而言是陌生的,但對于ToB產(chǎn)品領(lǐng)域,許許多多的ToB產(chǎn)品都需要面向公司級開發(fā)者提供自己的SDK產(chǎn)品。
當(dāng)然,SDK首先是面向開發(fā)者的,所以稱之為ToD產(chǎn)品更精確,但是從ToB產(chǎn)品的大范疇來說,SDK是ToB大產(chǎn)品范疇的一部分,所以在此劃入大ToB產(chǎn)品的類別。
那么SDK是什么?SDK有什么設(shè)計(jì)套路嗎?讓我們一一來拆解。
一、SDK是什么?
維基百科對SDK的定義:
SDK:軟件開發(fā)工具包(Software Development Kit, SDK)一般是一些被軟件工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統(tǒng)等創(chuàng)建應(yīng)用軟件的開發(fā)工具的集合。
SDK的定義比較拗口,我們簡化一下就是:“SDK是程序員創(chuàng)建軟件的開發(fā)工具的集合”。
這樣就清晰了,我們再明確幾個(gè)重點(diǎn):
1. 程序員
SDK是程序員開發(fā)出來的,也是要提供給程序員使用的??芍^:從開發(fā)者來,到開發(fā)者去。
2. 創(chuàng)建軟件
SDK是用來幫助程序員創(chuàng)建軟件的,用來幫助程序員編程的。
3. 集合
SDK是一個(gè)開發(fā)工具的集合,這里要強(qiáng)調(diào)它是一個(gè)集合,它不止包含單純的功能模塊文件,它還包含這些庫文件的使用接口、說明文檔、使用Demo等內(nèi)容。
總之,SDK是這么一種存在:
假如你是ToB公司的產(chǎn)品策劃同學(xué),你們公司為客戶公司的開發(fā)者提供一些功能,這些功能可能是QQ登錄組件、支付寶支付組件、通信通道組件···等各類模塊,你公司提供的這些功能模塊就以SDK的形式存在,提供給客戶公司的程序員。
客戶公司的程序員拿到你們公司的這套SDK后,你就可以根據(jù)里面的說明文檔,調(diào)用提供的接口,使用SDK中的庫文件(lib格式、dll格式、so格式等)進(jìn)行編程,把你們提供的功能集成到自己的軟件中,使他們的軟件具備了SDK提供的功能。
二、常見的SDK有哪些?
1. 在Windows 系統(tǒng)下
有許多的SDK供開發(fā)者使用,在Windows 系統(tǒng)開發(fā)出各種個(gè)樣的產(chǎn)品;
2. 在Android系統(tǒng)下
有官方不斷推出的Android SDK,供Android開發(fā)者在Android系統(tǒng)上開發(fā)出各種個(gè)樣的產(chǎn)品。
3. 第三方公司提供的SDK
例如:在2010年騰訊提供開放戰(zhàn)略要將騰訊的社交能力開放給行業(yè),就是我們常見的QQ分享、微信好友分享、朋友圈分享等功能,這些功能在Android系統(tǒng)上就可以通過SDK的形式提供給開發(fā)者。
在這里,我們要重點(diǎn)分享的,也是ToB產(chǎn)品經(jīng)理需要策劃的,就是第三類。
三、SDK存在的意義是什么?
答案是:效率。
SDK將常用的功能封裝后,以組件的形式存在,讓其他項(xiàng)目開發(fā)者,只需要簡單集成SDK,調(diào)用幾個(gè)接口,就可以使用SDK中已封裝的功能。不再需要重復(fù)造輪子,可以大大提高開發(fā)效率。
尤其在移動游戲領(lǐng)域:
許多游戲產(chǎn)品能夠在幾個(gè)月內(nèi)完成開發(fā),一個(gè)重要原因就是能夠直接調(diào)用 支付組件、語音組件、安全組件、數(shù)據(jù)通信組件等SDK,開發(fā)者只需要將核心精力放在游戲玩法的開發(fā)商。大大縮短游戲研發(fā)周期。
四、企業(yè)用戶對SDK產(chǎn)品的訴求是怎樣的?
他們希望:
能夠以最短的時(shí)間完成接入,能夠以最簡單的方法完成SDK驗(yàn)證,使用SDK提供的功能。與此同時(shí),在SDK運(yùn)行過程中,還要有足夠高的穩(wěn)定性、兼容性,對APP的性能影響要足夠小。
五、SDK產(chǎn)品的存在形式
目前的ToB產(chǎn)品大部分都在為移動產(chǎn)品尤其Android產(chǎn)品提供產(chǎn)品功能,所以我們這里以Android產(chǎn)品為例進(jìn)行說明。
一款SDK產(chǎn)品大概包含以下內(nèi)容:
1. SDK功能模塊
在移動開發(fā)領(lǐng)域,可以大概了解以下概念,對于以C/C++語言為核心的native層開發(fā),我們一般會提供.so格式的動態(tài)鏈接庫文件;對于以java語言為核心的jave層開發(fā),我們一般會提供.jar類型的庫文件;對于以C#語言為核心的Unity等游戲開發(fā),我們一般會提供.cs格式的功能模塊。
SDK功能模塊包含了核心的功能實(shí)現(xiàn)。
2. API接口
有了SDK模塊,程序員需要調(diào)用這些SDK模塊以使用其中的功能。那怎么調(diào)用呢?就需要用到我們提供的API接口。API接口是一些函數(shù),開發(fā)者將你提供的SDK加載到自己的工程中,通過對這些接口進(jìn)行調(diào)用,就可以使用SDK中的功能了。
3. 文檔
SDK模塊怎么加載?API接口怎么調(diào)用?這其中需要注意什么?這些都需要通過文檔的形式向開發(fā)者闡明。
4. Demo
即使有了上面的功能模塊、API接口和文檔,開發(fā)者使用你的SDK產(chǎn)品依然是很抽象的,所以最好能給一個(gè)工程Demo,這個(gè)Demo中有詳細(xì)的示例代碼來說明怎么在工程中使用SDK,讓開發(fā)者能夠一目了然,快速編碼。
六、SDK產(chǎn)品設(shè)計(jì)的 8 大技巧
SDK的開發(fā)工作是由技術(shù)同學(xué)完成,但他們更關(guān)注的是功能的實(shí)現(xiàn)。產(chǎn)品經(jīng)理負(fù)責(zé)最終將SDK這個(gè)產(chǎn)品形態(tài),進(jìn)行產(chǎn)品化包裝,然后作為產(chǎn)品提供給外部企業(yè)使用。
所以產(chǎn)品經(jīng)理應(yīng)該對外部廠商對SDK產(chǎn)品的使用場景有最敏感的把握,然后把這些關(guān)注點(diǎn)轉(zhuǎn)化為產(chǎn)品上的需求,將這些用戶體驗(yàn)層面的要求融入到技術(shù)同學(xué)的SDK開發(fā)過程中。
那么,對于企業(yè)用戶的開發(fā)者,他們在使用SDK產(chǎn)品時(shí)有哪些關(guān)注點(diǎn)?
ToB產(chǎn)品經(jīng)理在策劃SDK產(chǎn)品時(shí)有哪些竅門?我們來總結(jié)SDK產(chǎn)品設(shè)計(jì)的8大技巧:
1. 接口越少越好
在客戶的產(chǎn)品研發(fā)過程中,SDK的調(diào)用只是其中的一個(gè)小環(huán)節(jié),他們的開發(fā)者對SDK產(chǎn)品的訴求是,用最短的時(shí)間完成接入,能夠穩(wěn)定的使用SDK提供的功能。所以,怎樣保證SDK調(diào)用簡單。方法是,接口越少越好。最好只需調(diào)用1-2個(gè)簡單接口就可以完成接入。SDK接入的耗時(shí)最好不超過半天。
2.? 要有簡單的Demo
為SDK提供一份簡單的Demo,可以說已成為SDK產(chǎn)品的必需品。對于客戶開發(fā)者,在調(diào)用SDK時(shí),參照提供的可運(yùn)行的Demo工程接入SDK,會事半功倍,接入成功率大大提高。
3. 要有清晰的文檔
一份好的SDK產(chǎn)品,其簡明的接入文檔是必不可少的。文檔的描述需要清晰條理,描述清楚開發(fā)者在接入SDK過程中可能遇到的問題。
格式方面,最好使用markdown格式,這種結(jié)構(gòu)化的文檔形式,在移植到官網(wǎng)平臺上展現(xiàn)時(shí),可以采用更標(biāo)準(zhǔn)的統(tǒng)一格式,也可以采用結(jié)構(gòu)化的展現(xiàn)形式。
4. 體積越小越好
開發(fā)者許多時(shí)候會集成5個(gè)甚至10個(gè)以上的SDK,所以如果每個(gè)SDK的體積都比較大,最終會對自己的項(xiàng)目體積或者APP包的體積影響過大。因此,這就要求在開發(fā)SDK的時(shí)候一定關(guān)注體積大小,精簡代碼與功能,以最精簡的形態(tài)提供最核心的功能。
5. 全面適配各種場景
SDK作為工程項(xiàng)目的組件,就需要適配各種各樣的工程項(xiàng)目場景。以移動開發(fā)項(xiàng)目為例,就至少需要提供Android、iOS兩種類型的SDK版本。再以移動游戲開發(fā)為例,需要適配各種各樣的引擎語言,比如SDK需要支持Cocos引擎、Unity引擎、虛幻引擎等。
6. 足夠的穩(wěn)定性和兼容性
SDK作為第三方組件,對于客戶來說是不太可控的。他們不清楚SDK內(nèi)部的邏輯,也不可更改SDK的邏輯。一旦接入到自己的APP項(xiàng)目中,這就相當(dāng)于一個(gè)黑盒的存在。一旦這個(gè)SDK出現(xiàn)crash情況,將會危及自己的APP的運(yùn)行。所以他們對于SDK的穩(wěn)定性和兼容性是非常在意的。
要想保證SDK的穩(wěn)定性和兼容性,需要做到兩點(diǎn):
- 第一,在研發(fā)SDK時(shí),從原理上多下功夫,在基礎(chǔ)機(jī)制上保證SDK是能夠適配各種機(jī)型、能夠適配各種場景的。
- 第二,在對外推出之前,還需要進(jìn)行全面的測試,在各種機(jī)型上,在各種場景下,對SDK進(jìn)行全面的測試。
這里還有一個(gè)小Tips,在客戶使用SDK前,可以提醒開發(fā)者自己可控SDK是否運(yùn)行。方便如果出現(xiàn)問題,也可以及時(shí)通過后臺開關(guān)關(guān)閉SDK的調(diào)用。
7. 接入自測要簡單
SDK的接入完成后,開發(fā)者需要驗(yàn)證SDK接入是否成功。最基礎(chǔ)的方法是,提供給開發(fā)者一個(gè)教程,開發(fā)者自己查看日志等方法,觀察是否接入成功。
還有兩個(gè)產(chǎn)品化成都更高的方法:
第一,本地接入,Web實(shí)時(shí)數(shù)據(jù)驗(yàn)證
在后臺根據(jù)SDK接入后的數(shù)據(jù)上報(bào)情況,在Web端實(shí)時(shí)將接入檢測結(jié)果呈現(xiàn)給開發(fā)者。開發(fā)者只需要在本地簡單運(yùn)行接入了SDK的項(xiàng)目工程就OK。簡單方便,受歡迎。
案例:tdw.qq.com
第二,Web一體化安裝SDK
有些SDK產(chǎn)品不再讓開發(fā)者進(jìn)行復(fù)雜的接入,直接要求開發(fā)者將APP上傳,然后統(tǒng)一將SDK打入到APP里面,通過機(jī)器化的SDK打入方式,免去了人為接入可能存在的誤操作等情況,將SDK的接入過程也免除了,這種方法只要最終提示打入成功,就代表接入SDK成功,更簡單穩(wěn)定。
案例:gameguard.nprotect.com
8. 保障數(shù)據(jù)安全
SDK接入后,在客戶的工程中作為一個(gè)第三方黑盒的存在。所有公司都會很擔(dān)心SDK是否有后門,是否會獲取各種敏感數(shù)據(jù)上報(bào)。另外,尤其對于運(yùn)行在海外的項(xiàng)目,歐盟出臺了GDPR政策后,對數(shù)據(jù)的采集權(quán)、對用戶的隱私權(quán),都有更嚴(yán)格的要求,所以務(wù)必引起重視。
針對SDK數(shù)據(jù)安全問題,SDK產(chǎn)品設(shè)計(jì)過程中,需要做到3點(diǎn):
- 第一,嚴(yán)格管理數(shù)據(jù)采集。SDK在開發(fā)過程中,需要做到:不需要的數(shù)據(jù)堅(jiān)決不采集,因業(yè)務(wù)需要采集到的數(shù)據(jù)務(wù)必進(jìn)行嚴(yán)格加密處理,謹(jǐn)防數(shù)據(jù)泄漏。
- 第二,在產(chǎn)品宣傳過程中打消客戶顧慮。在宣傳時(shí),重點(diǎn)呈現(xiàn)SDK數(shù)據(jù)權(quán)限問題,向客戶承諾數(shù)據(jù)采集的嚴(yán)謹(jǐn)性和數(shù)據(jù)存儲的保密性。打消客戶的顧慮。
- 第三,在客戶使用SDK時(shí)提醒客戶注意數(shù)據(jù)隱私問題。你的客戶需要提醒自己的用戶會采集哪些數(shù)據(jù),并需要經(jīng)過用戶同意之后,才能使用SDK產(chǎn)品。
以上即是SDK產(chǎn)品設(shè)計(jì)的 8大技巧,客戶最關(guān)注,產(chǎn)品設(shè)計(jì)也最亟需解決。
七、一些ToB類的SDK產(chǎn)品案例:
下面列舉一下SDK產(chǎn)品案例,可以用來對比學(xué)習(xí):
(1)友盟:https://www.umeng.com/
(2)Gvoice:https://gcloud.qq.com/product/6
(3)游密:https://www.youme.im/
(4)百度云SDK:https://cloud.baidu.com/
(5)騰訊YSDK:https://open.tencent.com/
八、總結(jié)一句話
SDK產(chǎn)品形態(tài)是ToB產(chǎn)品化的重要組成部分,產(chǎn)品經(jīng)理可以在SDK產(chǎn)品設(shè)計(jì)的過程中使用上述的8大技巧,與公司一起推出高度產(chǎn)品化的SDK產(chǎn)品。
作者:贊德,騰訊產(chǎn)品經(jīng)理,ToB方向。個(gè)人微信號xanderfriend;公眾號:贊德說(xander_talk),歡迎交流。
本文由 @贊德 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
目前SDK包裝工作都在研發(fā)小哥哥的手里,產(chǎn)品如果不知道原理接手過來會有些水土不服。但是個(gè)人覺得終極目標(biāo),產(chǎn)品經(jīng)理應(yīng)該一手平臺,一手SDK。兩手抓~
你好,是否可以具體例子說明產(chǎn)品在sdk類產(chǎn)品設(shè)計(jì)中的具體設(shè)計(jì)點(diǎn),目前看好像…
基本應(yīng)該是研發(fā)的工作,包括說明文檔。產(chǎn)品這里只能做到的是定義SDK的功能。不知樓主是否同意
收獲很大,謝謝分享