在產(chǎn)品設(shè)計中,如何定義狀態(tài)?
本文作者從工作實踐出發(fā),結(jié)合案例等分享了關(guān)于狀態(tài)定時的相關(guān)知識,供大家一同參考和學習。
背景
在產(chǎn)品設(shè)計過程中,經(jīng)常會遇到一些狀態(tài)定義的場景。比如訂單有待付款、待發(fā)貨、待收貨等,商品有上架、下架等,課程有待上課、上課中、已上課等。
有些狀態(tài)可能只用于前端展示,而另一些狀態(tài),可能跟業(yè)務(wù)流程有很強的關(guān)聯(lián),不同狀態(tài)對應(yīng)著不同的系統(tǒng)功能、業(yè)務(wù)流程。合理地定義狀態(tài),是好的產(chǎn)品體驗和順暢的業(yè)務(wù)流程的保障。
我做過算法工程師,現(xiàn)在是教育行業(yè)的后臺產(chǎn)品經(jīng)理。我覺得技術(shù)背景對于我在進行狀態(tài)定義時,有一定的幫助。本文根據(jù)自己遇到的幾次狀態(tài)定義的需求,來談?wù)勅绾味x狀態(tài)。
文章結(jié)構(gòu)比較簡單,包括背景、如何定義狀態(tài)、實例三部分。如何定義狀態(tài)的正文部分,會將理論和實例結(jié)合。實例部分則給出完整例子。
如何定義狀態(tài)
1. 明確目的
當需要定義一個狀態(tài)時,首先要問自己:“為什么要定義這個狀態(tài)?”也就是明確目的。
定義訂單狀態(tài),是因為用戶需要知道訂單狀態(tài)的信息,同時后臺系統(tǒng)也需要訂單狀態(tài)來做不同的動作。定義商品的上架、下架,是為了控制商品在商城里的展示、售賣。定義課程狀態(tài),是為了數(shù)據(jù)統(tǒng)計、篩選等。
我發(fā)現(xiàn)一些產(chǎn)品有堆砌狀態(tài)的現(xiàn)象。所謂堆砌狀態(tài),就是先把狀態(tài)做了,然后去想這個狀態(tài)能用在什么地方。
比如針對課程,設(shè)計了凍結(jié)操作,凍結(jié)后課程的狀態(tài)會從正常切換到凍結(jié)狀態(tài)。但凍結(jié)狀態(tài)對應(yīng)什么動作呢,并沒有設(shè)計。問其為什么如此設(shè)計,回答說大家都這么設(shè)計,先把這個狀態(tài)定義了,把這個功能做了,將來肯定會用到。
當然,確實會存在一些常規(guī)設(shè)計,或者說不用多想就可以進行的設(shè)計。但更多的時候,應(yīng)該是遇到一個問題、一個場景,需要用到一個狀態(tài)來解決這個問題、處理這個場景的時候,我們再來定義狀態(tài)、設(shè)計功能。
2. 狀態(tài)定義、功能、展示
(1)狀態(tài)定義
首先要注意,狀態(tài)分兩類,一類是系統(tǒng)自動判定得到的狀態(tài),比如課程的待上課、上課中、已下課狀態(tài),系統(tǒng)可以通過比較當前時間和課程的開始、結(jié)束時間,自動判定得到。一類是人為操作得到的狀態(tài),比如課程的上架、下架,需要人為點擊功能按鈕,進行狀態(tài)的切換。
系統(tǒng)判定的狀態(tài)需要有明確的定義。不同狀態(tài)之間應(yīng)該是互斥的,不應(yīng)該出現(xiàn)某些情況下即可以判定為狀態(tài)A,又可以判定為狀態(tài)B。比如課程待上課、上課中、已下課的狀態(tài)定義為,當前時間小于課程開始時間是待上課,系統(tǒng)時間大于課程開始時間、小于課程結(jié)束時間是上課中,當前時間大于課程結(jié)束時間是已下課,三者互斥。
而人為操作得到的狀態(tài),與其說狀態(tài)定義,不如說狀態(tài)設(shè)定更合適一些,但為了統(tǒng)一描述,文中都稱為狀態(tài)定義。
人為操作得到的狀態(tài)的設(shè)定,需要的不是定義,而是設(shè)定原則或者說依據(jù),不能毫無章法,想到什么就是什么。比如最簡化的例子,商品的上架和下架,設(shè)置原則是商品是否要售賣,商品要售賣,則對應(yīng)上架狀態(tài),商品不賣了,則對應(yīng)下架狀態(tài)。
(2)狀態(tài)對應(yīng)功能
狀態(tài)定義不是目的,只是手段。通過定義狀態(tài),使得系統(tǒng)、用戶可以根據(jù)不同的狀態(tài)值,進行不同的系統(tǒng)動作、人為動作,這才是目的。
所以每個狀態(tài)除了有明確的定義,有設(shè)定原則,更要有相應(yīng)的功能設(shè)計,這甚至比狀態(tài)定義更重要。
狀態(tài)的定義可能出現(xiàn)冗余,或者定義之后發(fā)現(xiàn)通用性欠佳,僅能用到極少數(shù)地方。但如果只定義了狀態(tài),沒有相應(yīng)的功能設(shè)計,等于舍本逐末。甚至可能因為功能設(shè)計的得不夠嚴謹,狀態(tài)間沒有形成邏輯閉環(huán),導(dǎo)致整體設(shè)計無效。
比如商品的上架、下架。上架對應(yīng)的功能可能有,用戶在前端看到商品顯示已下架,且沒有購買入口按鈕。
后臺系統(tǒng)某些商品篩選結(jié)果列表中,不展示下架狀態(tài)的商品。以及后臺系統(tǒng)商品列表中,下架狀態(tài)商品對應(yīng)的操作中,應(yīng)該有“上架”操作按鈕,即可以通過點擊上架按鈕,將商品從下架狀態(tài)切換至上架狀態(tài)。
功能設(shè)計最重要的是考慮周全,這不容易,但有一定規(guī)律。常見的與狀態(tài)相關(guān)的功能設(shè)計有這么幾類,包括前端展示、篩選、狀態(tài)切換操作按鈕、系統(tǒng)判定規(guī)則等??梢砸源俗鳛榇蟮姆较颍Y(jié)合自家系統(tǒng)的實情進行設(shè)計。
(3)展示
狀態(tài)對應(yīng)的前端展示屬于功能里設(shè)計中的一項,之所以獨立成題,是因為展示是用戶直接能看到的部分,所以需要考慮清楚每種狀態(tài)下,各端應(yīng)該如何展示。
比如商品下架后前端商品的展示,是在列表頁展示商品,但進入詳情頁后提示商品下架,還是不在列表頁中展示商品,這是需要明確設(shè)計的。
3. 狀態(tài)的切換
不同的狀態(tài)間會互相切換,如果是系統(tǒng)判斷得到的狀態(tài),要明確狀態(tài)切換的節(jié)點,即滿足什么條件時,會從一個狀態(tài)切換到另一個狀態(tài)。
而人為操作得到的狀態(tài),要注意狀態(tài)切換閉環(huán)的問題,比如狀態(tài)A、B、C三者之間可以互相切換,需要設(shè)計操作按鈕,使得從A可以切換到B,從B可以切換到C,而且還可以從C切換到A,而不是從B切換到C之后,發(fā)現(xiàn)沒法重新切換到A或者B了。
比如最簡單的例子,操作人在后臺系統(tǒng)中,通過點擊上架按鈕,將商品切換為上架狀態(tài)后,上架按鈕處應(yīng)該顯示下架按鈕,這樣操作人才能通過點擊下架按鈕將上架狀態(tài)的商品切換為下架狀態(tài)。
實例
這里舉一個課程狀態(tài)的例子。教育行業(yè)中,課程即是商品,課程的狀態(tài)類似商品的狀態(tài)。這里我們按照前文中的講解,一步步來定義課程狀態(tài)。注意,實例做了大量簡化,僅用來說明狀態(tài)定義過程。
1. 目的
通過課程狀態(tài),定義課程的整個生命周期,為不同生命周期對應(yīng)的功能提供判定依據(jù)。
2. 狀態(tài)定義、功能、展示
(1)狀態(tài)定義
課程的狀態(tài)屬于人為操作得到的狀態(tài),所以需要考慮好每個狀態(tài)設(shè)定的原則。
- 待發(fā)布:課程內(nèi)容已準備好,但售賣屬性未準備好。
- 待上架:課程內(nèi)容、售賣屬性都準備好,但不展示給用戶。
- 招生中:課程內(nèi)容、售賣屬性都準備好,并展示給用戶。
- 停止招生:用戶無法購買課程。
(2)狀態(tài)對應(yīng)功能
注意,所有功能除了整體功能描述外,一定要給出具體功能設(shè)計。比如當整體功能描述為“可編輯內(nèi)容屬性”時,應(yīng)該給出具體功能設(shè)計:課程標題編輯框可編輯,課程類型選擇框可選擇等。這里為了簡化,只給出整體功能描述。
- 待發(fā)布:可編輯內(nèi)容屬性,但不可編輯銷售屬性,不可創(chuàng)建班級。
- 待上架:部分內(nèi)容屬性不可編輯,可編輯銷售屬性,可創(chuàng)建班級。
- 招生中:不可編輯銷售屬性,可創(chuàng)建班級,用戶可購買。
- 停止招生:用戶不可購買。
(3)展示
- 待發(fā)布:前端商城不展示,通過售賣鏈接進入售賣頁,給出錯誤提示。
- 待上架:前端商城不展示,通過售賣鏈接進入售賣頁,根據(jù)售賣狀態(tài)(另一個狀態(tài))做相應(yīng)展示。
- 招生中:前端商城展示,通過售賣鏈接進入售賣頁,根據(jù)售賣狀態(tài)做相應(yīng)展示。
- 停止招生:前端商城不展示,通過售賣鏈接進入售賣頁,給出停售提示。
3. 狀態(tài)的切換
- 待發(fā)布切換為待上架:發(fā)布按鈕變更為上架按鈕。
- 待上架切換為招生中:上架按鈕切換為停售按鈕。
- 招生中切換為停止招生:停售按鈕切換為上架按鈕。
注意最后一個狀態(tài)切換,課程狀態(tài)切換為停止招生后,操作按鈕從停售按鈕切換成了上架按鈕,也就是說可以點擊上架按鈕重新上架,這樣就形成了狀態(tài)切換的閉環(huán)。
本文由 @像西澤一樣 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議。
有種場景,列表緯度下一層存在多條單據(jù)子狀態(tài),這種情況,在列表中如何顯示狀態(tài)呢?子狀態(tài)會有相應(yīng)的操作
教育行業(yè)的訂單狀態(tài)有必要與課程狀態(tài)掛鉤?
良心的產(chǎn)品經(jīng)理會定義的很詳細,但也會看時間是否充裕了
每個頁面只需要把該有的定義好就行
實操性很強,細節(jié)背后的強大思考