今天,想要來和大家聊聊「系統提示訊息」。

在17年的數位產品開發生涯裡,有三個項目,是我覺得在開始開發前,必須要先講清楚的。
其中一個就是「系統提示訊息」。

你可能會想問,這有甚麼好聊的,不就是「提示訊息」嗎?

其實,「系統提示訊息」也是有蠻大的學問的。

為什麼這麼說?

給大家三秒鐘的時間想想,我們甚麼時候會用到「系統提示訊息」?

3…2…1…好,時間到

沒錯,答案就是「出現錯誤」的時候,而且是「用戶操作錯誤」的時候。「系統提示訊息」就用來提供給用戶回饋,及團隊追查錯誤的。

假設一個情境,用戶今天興高彩烈的使用了你的產品,結果無法註冊,甚至一直註冊失敗,你覺得用戶會有怎樣的反應?我想大多數的用戶就會直接選擇離開,好一點的客戶才會聯繫客服反應,而且這些會反應的客戶其實是少數,因為大部分的人都會覺得很麻煩,很多時候我自己也是這樣的狀況。

那這些反應給客服的用戶,通常詢問客服後,我們都會問甚麼問題?是不是會問他們「是否有跳出錯誤訊息?」,或是請他們「截圖」,當然有些時候要請用戶點開F12,開啟「開發工具網頁」,這時候大多數的用戶就會開始罵人了…。

那為什麼要問這個問題?答案很簡單,就是要提供給技術人員確認「問題發生的狀況」。

下列幾種提示訊息,你們覺得哪一種是比較好的提示訊息?

範例(A):註冊失敗。
範例(B):您所在地區無法註冊。
範例(C):註冊失敗。(3001)

我想,這應該是很容易回答的。

當然,範例(A)是最不好的形式,雖然他也是提供給用戶一個清楚的回饋,可是不知道為什麼會失敗,這樣用戶還是會持續地去操作,直到用戶失去耐性,接下來就是失去這個用戶了。

那範例(B)和(C),各是用在甚麼地方呢?

範例(B),其實是對用戶相對貼心的,會把用戶操作失敗的原因都清楚地告知,但是有些時候回饋的內容也需要拿捏,像範例(B-2),寫得非常的詳細,但是其實反而會造成閱讀上的障礙,這樣就顯得有點過頭了。

範例(C),則是工程師最常使用的方式,因為在開發過程中,會有一份文件,叫做「系統錯誤碼(System Error Code)」,而開發過程中會先預想到的錯誤狀況,就會先編列在這份文件上,然後逐步更新,範例(C)中的3001,指的就會是這份文件中的一個編號,工程師就會針對這個編碼,直接去看文件,或是針對紀錄操作錯誤的紀錄(log)去搜尋。

系統錯誤碼(System Error Code)的文件可能會像下列表格:

SysErrCode內容
3001註冊時的IP不合法
3002註冊帳號格式不正確
3003註冊密碼格式不正確
3004註冊帳號已存在
系統錯誤碼(System Error Code)範例(一)

透過這個表格,我們大概可以理解一件事,就是要盡可能地列舉出「導致註冊失敗」的原因。

當然,理想是這樣沒錯。只是在實務上,就容易產生一個認知不對等的部分。

由於需求規格文件的制定,大多數是由PM決定或是撰寫,可是這份「系統錯誤碼(System Error Code)」的文件,卻多半是由工程師去維護,於是就會變成一種狀況。

(※延伸閱讀:搞懂規格書,讓你的團隊再也不用通靈)

PM想像的提示訊息,長的是範例(B),但是又不是所有的PM可以把全部可能列出,於是大多數可能介於範例(A)和(B)之間。

而工程師做出來的提示訊息,也是範例(A),因為規格書上並沒有說要把「系統錯誤碼(System Error Code)」顯示出來,「系統錯誤碼(System Error Code)」只會存在工程師紀錄的log上。

於是,在第一版出來後的提示訊息,蠻高的機率長的是「範例(A)」,而不是範例(B)或(C)。

那要如何解決這樣的問題?

其實,只要將「系統錯誤碼(System Error Code)的文件」改由PM與工程師共同維護即可,如下:

SysErrCode內容 (PM與工程師共同增加)用戶端顯示 (由PM定義)系統端紀錄 (由工程師定義)
1001登入帳號不存在您輸入的帳號與密碼不相符。login account error. (1001)
1002登入密碼錯誤您輸入的帳號與密碼不相符。login password error. (1002)
3001註冊時的IP不合法您所在的地區無法註冊。registration failed. (3001)
3002註冊帳號格式不正確您輸入的帳號格式不符。registration failed. (3002)
3003註冊密碼格式不正確您輸入的密碼格式不符。registration failed. (3003)
3004註冊帳號已存在您輸入的帳號已存在。registration failed. (3004)
3005token 已失效系統發生異常。(3005)token failed. (3005)
系統錯誤碼(System Error Code)範例(二)

而這份表格,有幾個需要注意的地方:

1. SysErrCode編碼規則:建議由技術主管定義,其他人配合執行,如果由多人定義的話,到時候編號會難以規範遵守。

2. SysErrCode只能增加:可以廢棄某個編碼,但是不能刪除或進行置換,如果之後將3004改為3007,哪未來搜尋3004的紀錄時,需要近一步確認實際的內容,也會浪費多餘的時間。

3. SysErrCode編碼唯一:一個編碼只能對應一種狀態,如果有兩種以上,當錯誤發生時,還要進行人為的判斷,也就失去定義編碼的用意。

4. SysErrCode內容擴充:PM及工程師都可以增加,但是建議PM針對產品規格上的規則撰寫,工程師針對開發及系統面的問題撰寫,因為系統相關的錯誤,PM並不一定能掌握到,也避免到時候互相責怪對方沒有撰寫。

5. 系統提示訊息的顯示:分為兩個部分,一個為「用戶端顯示」,另一個為「系統端顯示」。

(1) 用戶端顯示:由PM負責定義,這部份顯示的內容是提供給用戶閱讀。需要注意一點,很多時候避免讓部分別有用心的用戶,做一些不法的操作,就會避免將精準的回饋給用戶。

例如列表中的1001及1002,很多時候避免直接顯示「密碼錯誤」,而是會用「帳號與密碼不相符」來做混淆,降低盜帳號的風險。

或是列表中的3005,很多系統異常的狀況,也不會願意讓用戶知道太多,於是最常看到的就是類似這樣的顯示「系統發生異常。(3005)」

(2) 系統端顯示:這部分指的是被記錄到log裡的資料,通常都是用英文紀錄,當然,英文比較好的工程師就會願意寫,但是,還是有部分工程師比較不願意,就會寫一個大概,重點就會是後面的SysErrCode。不過這部分,就是看工程師的習慣,團隊有一個共同的規範即可。

很多時候,剛開始接觸軟體開發的PM,基本上都會忽略「系統提示訊息」這個部分,甚至不知道要定義這件事。當然,初期還不會遇到狀況,但是到中後期,開始進行測試時,就會發現,用戶的體驗很容易因為「提示訊息的不清楚」,導致「操作中斷」,然後不知道下一步要做甚麼

又或者是當發生錯誤時,跑去問技術是甚麼原因,技術回說要查查,然後說這有幾種可能,也才會意識到,這樣追查錯誤很沒效率。最後,還是需要重新花時間定義每一個狀況。不如,在開發初期的時候,就先把「系統提示訊息」定義清楚。

系統提示訊息做的好,用戶不會留下來;
系統提示訊息做不好,用戶會留不下來。

《如果覺得這邊文章有幫到你,歡迎請我喝杯咖啡》

——–

大家好,我是 數位產品開發教練 – 陳俊聖/廣三/HeroMi
17年數位產品開發經驗。經手至少80個大小專案。
擅長解決與工程師的溝通問題,幫你建構工程思維。

如果有任何想法,歡迎留言或發信給我,希望可以幫到你
我的信箱:info@hero-mi.com

*本站所有文章未經授權,請勿任意利用、引用、轉載,但是歡迎按讚、訂閱、分享。

最後修改日期: 2022-12-27

作者

留言

發表迴響