搞定異常的七字真言:增刪改查顯算傳
本文結合具體的案例進行分析,分享了如何運用搞定異常七字的真言——增、刪、改、查、顯、算、傳。
異常是大多數
1. 什么是異常
是程序運行中,因外部因素(設備錯誤、輸入錯誤等)導致的程序異常。邏輯層的程序異常,通常是產品經理的責任。
2. 粗略判斷異常是否完整
一個帶有輸入、輸出、傳輸、運算的完整功能模塊,產品經理出的原型圖中,如果異常情況的頁面沒有占到70%,那就需要繼續完善。
3. 舉例——昵稱為必填,且不能重復
只有結合產品、用戶、場景,才能做出合理的異常情況。舉例僅供參考。
(1)昵稱輸入有誤
然后在 Axure 中對應元件上寫說明內容,如下圖:
(2)昵稱被占用
同理,在對應元件上寫說明內容,如果是移動端原型,可在旁邊放便簽描述(另一篇《完美“登錄”,從去掉“注冊”開始》中有附圖)。
以上提示,只是局部提示。根據場景不同,還會有關聯性異常情況。
比如在填寫時,昵稱尚未被占用,填寫其他內容過程中,剛好被占用導致最后一步無法保存,也需要處理。如果涉及到翻頁情況,又會產生保存時機的問題。是點下一步就保存,還是最后提交時統一保存資料。如果點下一步就保存,那在第二步未填完就退出頁面,又該如何處理。
因此,需要根據實際情況來處理異常情況。
排查異常的七字真言
七字真言:增、刪、改、查、顯、算、傳
1. 增:新增、創建、添加
開篇的輸入昵稱,就屬于增。另外,還包括注冊賬號、上傳圖片等。
做【新增】功能時,從以下三個角度考慮:
(1)上下限 / 建議值 / 默認值
- 字數輸入的上下限、圖片/視頻大小,前后端都做限制校驗。(例:昵稱限制4~10個字,前端需要校驗,不在范圍內不讓提交。但是后端也不能相信前端,還需要自己再做校驗,防止一些技術手段繞過前端給后端提交非法昵稱。)
- 圖片/視頻尺寸、圖片/視頻比例,給建議值。(例:下圖頭像項的圖片要求)
- 一些低頻選項,可以給默認值,無需每次都操作。(例:性別默認男,城市默認當前定位點)
(2)類型校驗 / 格式校驗
- 例如:輸入類型的全角和半角,可做自動轉換提高體驗。
- 導入表格的功能,那就限制只能上傳Excel格式的文件。另外,.apk、.exe等可執行文件,需要特殊處理,微信會加后綴,來降低風險。
(3)容錯機制 / 關聯變化
- 手機號已被其他賬號綁定,需讓用戶可做更換綁定、合并賬號等操作。
- 昵稱被占用,給多個建議昵稱,讓用戶手動選擇。
- 自動保存為草稿、編輯狀態下阻止瀏覽器關閉等。
- 自動生成編號、排序方式,關聯出現的狀態,及頁面變化。
以上,有些限制是出于產品體驗考慮,例如圖片過大,會導致瀏覽時加載慢影響體驗;有些限制則是出于安全考慮,例如不能上傳可執行文件。
一些低頻問題,盡量靜默處理,例如:
- 非網盤類應用,自動壓縮太大的圖片。
- 郵件發送APK、EXE類可執行文件,無需加后綴。
- 及時通訊軟件發送則加后綴,但能通過安全掃描的也可以不加。
- 手機端選擇年月日時,給合理的默認項,比如1990-06-15,6月是月份中的中位數,能快速定位到1到12月任意月份。15日同樣是中位數,能快速定位到1~
總之,一切圍繞用戶體驗去考慮,使用體驗、安全體驗、設備體驗等等。
小思考:假如你是支付寶產品經理,在PC端做人臉識別認證的時候,你會怎么做?如何考慮?
2. 刪:刪除
刪除操作比新增操作風險大,但邏輯相對簡單,有以下四種情況:
(1)刪除是否可逆
- 需求上可逆、需求上不可逆
- 邏輯上可逆、邏輯上不可逆
(2)是否批量刪除
(3)是否涉及權限
(4)邏輯刪除 or 物理刪除
- 邏輯刪除是通常說的假刪除,給一條數據做了個標記,其實這條數據還在數據庫里;
- 而物理刪除是指從數據庫里真實刪除了某條數據,常規意義上是不可恢復的。
如上圖:
- 彈窗一,單個刪除操作,邏輯上可逆,但用戶體驗上不可逆,所以需要二次確認。
- 彈窗二,既屬于批量操作,也屬于權限操作,需要高級別權限人員掃碼確認。掃碼后,手機端的確認頁面上,需要展示一些重要信息,方便高權限人員做決定。
- 二次確認方式:彈窗確認、彈窗掃碼確認、彈窗密碼確認、彈窗驗證碼確認、彈窗指紋確認等。
如上圖:在重要的刪除操作時,增加【影響范圍】,說明當前刪除操作可能會影響到的地方,如果這種影響是需要手動解決的,就需要去逐一排查。比如刪除之后,榜單是不是空了、滿減活動是不是湊不夠滿減額度了、輪播圖上展示的還是已刪除的商品、定時推送發出去的鏈接打開卻告知商品不存在,等等。
總之,刪除有風險,設計需謹慎。不刪可以,就別做刪除功能。后臺產品,可在篩選區域或系統設置中加個【展示已刪除xxx】的復選框,勾選之后,才在頁面內展示已刪除的信息。至于能否恢復就是另外一套流程和邏輯了。
3. 改:修改、編輯
參考【新增】的一些規則,很多頁面可以復用【新增】的頁面。但新增員工類涉及密碼的,復用時需去掉密碼輸入框。
需要注意兩點:
(1)能否修改
- 用戶ID不可修改。
- 用戶狀態,需要有權限的人才能修改。
(2)保存機制
- 定時保存。
- 失去焦點時保存。
- 其他條件觸發,比如網絡變化等。
4. 查:查詢、搜索
兩種:
(1)查詢
- 實時查詢,用于小數據量場景。
- 定時任務查詢,用于數據量大,關聯表多的情況。歷史數據直接讀取已經查出來的數據,避免每次查詢都是多表聯查,可提高查詢速度,降低服務器壓力。
- 查詢頻率,多長時間查一次,根據情況定義。
- 查詢速度,查詢速度慢的,需要優化。
(2)篩選 / 搜索
- 多條件組合篩選
- 模糊搜索、精確搜索
- 可搜可選
舉例解釋(后臺):
A實時查詢:柱狀圖顯示今日新增用戶,直接查詢即可,每訪問一次或刷新一次頁面,就查詢一次數據庫。
B定時任務:表格內展示今年新增用戶數量,并展示對應的訂單狀態、物流信息、會員信息、標簽信息、活躍情況等等。
查詢時需要跨數據表聯查,比如先在用戶表查出今年新增的用戶的ID,然后分別用用戶ID去訂單表、物流表、會員表、用戶標簽表中,查出對應信息,然后用表格呈現出來。這種情況,就不能用實時查詢了,服務器一次性跑不來一年的數據。
所以就用定時任務查詢,定時(如每天查前一天的上述數據)查一遍,并記錄下來,當有人訪問該表格時,無需聯表查詢,直接讀取已經記錄下來的數據并展示即可。
C多條件組合篩選:比如篩選性別為男/分類為老年人/2019年已體檢的人員列表。
D模糊搜索/精確搜索:如字面意思。
E可搜可選:比如有個下拉選擇框,里面是城市列表。在使用時,有時你是知道城市名,可以直接下拉展開鼠標點選。有時你不知道城市名,或者太多一時找不著,那可以在下拉框里直接打字輸入,下面就會展示對應城市,回車或鼠標點選即可。
因此,當開發皺著眉跟你說,這個表格字段太多,查詢會卡死服務器,你就說:跑個定時吧,親~
作為一個產品,寫涉技術文章,我好難啊…我知道的就這么多了…
5. 顯:顯示
其他六字都服務于【顯】字,是七字真言的舵手?!驹鰟h改查算傳】都通過【顯】與用戶互動。
用戶對所使用的產品的一切感受,也都是通過【顯】感受到的。
甚至可以說,【顯】就是產品經理的一切。用戶在使用的過程中,出現誤解、不會操作等情況時,產品經理沒法去解釋去幫助,所以在交付給用戶之前,就要盡量把所有異常都做處理。
簡單總結幾個重點:
(1)可讀/易用
消除歧義
- 例1:是否確定取消? 確定/取消
- 例2:是否刪除?(換行寫刪除的內容名稱及影響范圍) 刪除/不刪除
文案有溫度
- 現在發生了什么,你需要怎么做,這樣做的后果是什么,做了之后還能不能反悔修改。
- 根據用戶和場景,決定文案的語氣、字數多少、字號大小、按鈕大小、是否語音播報、顏色等等。需要有代入感才能寫出有溫度的文案。
化繁為簡
- 界面簡單:典型的說起來簡單做起來難~
- 文案簡潔:產品內部評審的時候,讓大家去自己讀,看有沒有不同的理解,如有則改。
- 操作簡便:盡量減少點擊次數,但敏感操作又會故意設計復雜操作。
- 精簡流程:比較難,太精簡了會導致耦合度高,太分散了會導致操作體驗差。
(2)一致性
用一致性消除歧義:用詞一致、icon一致、交互一致、色彩一致。
- 共識性一致:比如紅色用于警告類,綠色用于引導操作。
- 產品內一致:同一模塊,避免出現既有實心icon,又有線條icon,等等。
用一致性提高易用性:產品的所有彈窗中,確認按鈕在左側,取消按鈕在右側,等等。
檢驗方法:找一個不知道前置條件和行業背景的人,看你原型的文案、模塊布局、操作順序,是否有誤會的地方。
(3)消除焦慮——一切盡在掌控
常規加載時,堅決消滅所有空白頁,包括返回數據為空的異常情況。先顯示骨架圖 → 再模塊化顯示數據。
loading 和 進度條,文件過大導致必須等待時使用。讓用戶有個心理預期,根據其使用場景,合理決策繼續等待或者退出。
(4)反饋系統——凡操作,必有反饋
正常反饋
- 頁面有明顯變化的,無需額外的反饋,頁面變化本身就是一種反饋。比如:發朋友圈,發完就能看到,那就無需提示發送成功。
- 頁面無明顯變化的,用吐司類輕提示反饋。比如:操作成功、已添加。
- 沒有反饋也是一種反饋。
異常反饋
- 操作失敗、網絡異常、獲取數據失敗、觸發安全機制等。
- 錯誤反饋文案由兩部分組成:①用戶能看懂的,②開發能定位到問題的。
(5)用戶安全——讓用戶掌握主動權
上限
- 短信通知、推送通知、注冊/登錄短信、郵件、都需要設置上限。
- 系統bug導致短信轟炸用戶的情況時有發生。幾千條短信發過來,只能拆SIM卡…
中止及撤回
- 短信、通知、郵件,分批推送,且后臺能進行中止發送和撤回操作。
- 把測試推送內容發到正式環境的,更是屢屢發生。?比如騰訊視頻8月21日的推送:“臺風利奇馬已致山東全省人死亡…”,算得上特別重大的安全事故了。
隱私數據
- 涉及身份證號碼的頁面,要做數據權限處理,通常設置為少數人才能批量看到身份證信息。防止被拍照或截屏。
- 在移動端,通常是用戶通訊錄、攝像頭調用、MIC調用、定位等。
看了一堆文字,該換換口味了,圖來:
1)上圖一詳解
- 標題簡短,瞟一眼即可,無需閱讀。
- 正文第一段,描述是哪個SKU。當然,能配圖更好。
- 正文第二段,根據實際場景,給一些標簽,做最后的參考決策,避免誤刪。
- 兩個按鈕是同級的,不做任何引導。
- 操作按鈕直接用動詞命名,盡量避免使用【是、否】【確認、取消】類文案。
2)上圖二詳解
- 文案難以理解,雖然是用戶自己點擊的‘取消關注’按鈕,但仍然是個失敗的文案。
- 更難受的是,這時候我會懷疑上一步是否誤觸了其他人,會關掉彈窗重新點一遍取消。
- 最難受的是,文案和按鈕關聯會出現更大的歧義,我該點【確定】還是【取消】?
- 最后,敏感操作盡量別帶色彩去引導。如支付、刪除等。
- 具體記不太清是取消關注,或是取消收藏什么的了;但文案非杜撰,至今仍對“是否確定取消”記憶尤新…
還想繼續上圖來著,發現其他內容不配圖也能理解,于是,圖不出來了。你們有想法可以留言,我酌情酌能力補圖。
七字中,其他六字,除了其本身的異常,更多的是和【顯】碰撞出來的異常。
【顯】又面向用戶,因此,處理異常的時候,要用同理心,去體會用戶的感受。
- 這里稍微擴展一下我對同理心的理解:感同身受,是比換位思考更深層次的一種情緒和感受。
- 舉例:記得以前給某共享單車提過建議,別在早晨上班前彈啟動廣告和開屏廣告。
- 設計這個功能時,應該去體會這樣的場景:“臥槽,要遲到了,哪有單車哪有出租車”,心急如焚的時候,發現一輛單車,一個餓虎撲食來到了救命單車前,掏手機開App,5秒的啟動廣告導致心急如焚**2,探手去點【跳過】,被故意設計的點擊區域小于視覺區域的【跳過】套路,進入了廣告,廣告連續跳轉了N次鏈接,點三五次無法返回單車App界面,點的急了,又點多了導致退出了App…各種遲到后的心情…簡直是條條大路粉轉黑。
還有一些不常見的情況,比如虛擬運營商出了新號段,軍人沒有身份證,等等。
6. 算:算法、計算
算法:是指用系統的方法描述解決問題的策略機制。其能對一定規范的輸入,在有限時間內獲得所要求的輸出。
根據算法的定義,產品角度通常涉及到:
(1)規則
- 個性化推薦
- 風控
- 打標簽
- 積分體系
- 會員體系
- 用戶ID
- 訂單編號
(2)算法
- 圖片壓縮
- 搜索查詢
- 產品經理需要簡單了解一下算法邏輯,推薦【AIgorithms】App,能可視化的了解各種算法的運算邏輯。(劃重點:AIgorithms App)
7. 傳:數據傳輸
最近5G話題火熱,大部分人對5G的印象是速度快。
其實,5G的應用亮點是低時延和高帶寬,速度快反而是其次。
上面這段話,提到了【傳】的三個點:時延、帶寬、速度。
出需求時,要傳輸的這三個點,都屬于用戶的場景,是必須要考慮的。比如手機直播和短視頻,在4G普及之后才可能誕生。
所以,從用戶角度,主要有兩點:
(1)傳輸安全,結合【顯】字,可分為:
- 用戶可感知類:脫敏傳輸并脫敏顯示、可執行文件加后綴等
- 用戶不可感知類:加密傳輸、接口安全、服務器隔離(敏感服務器不直接面向用戶)。
(2)傳輸速度
壓縮:比如微信發送圖片,不勾選原圖,圖片就會被壓縮傳輸。
預加載:比如閱讀類App,用戶看第一章,他就會預加載第二章。用戶讀起來就不會有等待加載的過程,不會打斷爽感。
異步加載:
- 偏移動端:按模塊加載并顯示給用戶,不要等整屏內容都加載完再呈現,避免讓用戶焦慮。
- 偏PC端:盡量避免整個頁面刷新,減少服務器壓力,和用戶等待時長。
總結
我帶新人的時候,會讓新人先去測試部門學一下測試流程,然后再回來做產品。
這樣,他在做邏輯較多的功能模塊時,從單純的增刪改查顯算傳上,不會出太大太多的問題。再下一步,就需要教新人代入用戶的使用場景了出需求了,這才是產品經理進階真正難的地方。
本文由 @臣有bug揍 原創發布于人人都是產品經理。未經許可,禁止轉載。
題圖來自unsplash,基于CC0協議
很好,干貨很多,有收獲
方便留個聯系方式請教下嗎
微信:dxbkj2510
鄙人有Bug奏,百度不到AIgorithms App啊
試試應用市場,我的是在華為應用市場下載的
剛看了下,確實搜不到了,你試試應用寶看有沒有。另外還有算法之家App、數據結構App。
總結的很到位,這套邏輯對沒有技術背景的產品新人,幫助很大。
節日祝福有點遲了,祝你月餅好吃,哈哈哈
道理我都懂,但是大圣為什么有兩根棒子?
人工智能在開車,咱也看不懂,咱也不敢問
收教了。
??
是個梳理詳細的文檔的好建議
哈哈,有什么修改建議么?
受教!
?? ??
實用,我一邊看一邊改原型 ??
哈哈哈,可以交流交流
很實用啊
做什么知識付費產品的呢?來體驗一波