產品設計:如何讓功能既靈活又簡單?

5 評論 1.1萬 瀏覽 21 收藏 11 分鐘

編輯導語:我們在網頁上進行搜索時,會發現只用關鍵詞就可以找到自己想要的內容,或者剛輸入關鍵詞下面就會出現一些有聯系的內容,十分方便快捷;本文作者分享了怎么讓功能變得即靈活又簡單,我們一起來學習一下。

一、為什么這是個問題?

功能設計是產品經理最基本的技能,也是產品最基本的組成部分和價值所在。

所以,不管是在工作中,還是在面試中,一個功能設計得太復雜或者太雞肋,都會直接拉低別人對你的印象分?。?!

但在產品設計中,靈活與簡單這兩個特性確實常常是沖突的。

尤其是在工具型產品中,我們想把功能設計得很靈活,就常常會用起來很復雜;如果想設計得很簡單,又會減少功能性,顯得很雞肋。

當然還有個辦法,就是在簡單的功能中加入機器學習模型;不過如果團隊自身積累不足,這個辦法的投入就太高而價值又太小,不是個好辦法。

舉個例子:在當今的產品中,包含的信息越來越多、越來越復雜,所以搜索功能就越來越重要了。

在搜索功能上,我們既希望能夠足夠靈活(比如支持各種條件組合,支持“與或非”等等),又希望足夠簡單(像普通文字輸入一樣)。

怎么辦呢?

這是一個比較典型的困境,我們來看看百度、Google等通用搜索引擎是怎么做的。

它們在“簡單”上做得很出色,當需要多個關鍵詞時,只需要用空格隔開就可以了。

還不錯對吧?但是,再看看它們應對“靈活”的高級搜索功能……

這里確實提供了足夠的靈活性,但整個設計就崩塌了;因為從1個輸入框變成了10項配置,太復雜了?。?!

那么如果加入機器學習模型呢?就這樣:

這類推薦看似簡單,但如果要認真做,需要投入不少人力和時間才能實現。

所以,百度這是個失敗的設計嗎?

其實不然——如果你是百度搜索引擎的深度用戶,那么你應該知道這樣一組搜索指令:

  • 用減號“-”代表排除關鍵字;
  • 用“intitle:”代表關鍵字只出現在標題中;
  • 用“inurl:” 代表關鍵字只出現在URL中;
  • 用“filetype:”代表只想看某些文件類型,比如docx、pdf;
  • 用“site:”代表只想搜索某個站點中的內容;

以上這些指令都可以直接在搜索框中輸入,既滿足了高級用戶的需求,又不會影響初級用戶的使用體驗。這就實現了既靈活又簡單。

那么,如果你想在設計自己的產品時也做到靈活而簡單,應該怎么做呢?

二、原來的設計問題出在哪?

首先,我們定義問題的范疇。

靈活與簡單的取舍,不是一個純粹的交互設計的問題,它還涉及到前端頁面交互與后端系統的配合;所以單從交互設計的角度很難找到答案。

這里必須說一點:要想提升對于產品的理解,需要練習自己的抽象思考能力。

在這里,我們就需要把具體的產品交互做一次抽象和提煉,找到其中的規律;有技術背景的同學在這方面會有優勢。

為什么?因為技術語言本身就是對事物的抽象。

其次,我們要打破一種思維定式:“一個功能是一體的,不再可分”;其實并不是這樣的,就用上面的搜索引擎舉例,它與用戶相關的部分大致可以拆成兩個子模塊:

  1. 收集用戶輸入搜索條件;
  2. 系統解析用戶輸入的內容;

所以,正是這兩部分造成了靈活與簡單很難取舍——用戶隨意輸入的內容系統很難解析;而系統方便解析的內容對用戶來說太復雜了。

最后,我們可以借鑒技術領域的MVC設計理念,來考慮我們的產品功能設計。

MVC是三個單詞的首寫字母——M代表Model,是指產品中的數據模型;V代表View,是指產品中呈現數據的方式,其實就是用戶“看得見摸得著”的產品形態;C代表Controller,指的是真正用來響應用戶操作的部分。

這種設計理念為我們設計復雜功能打開了思路。

一個產品功能,我們可以從三個方面來思考它的設計:

第一部分是Controller,我們可以理解為“核心功能”。比如,在搜索引擎中什么是“核心功能”?根據用戶輸入的條件,返回符合條件的結果,這就是核心功能;所以“查詢”就是一個必不可少的Controller。

第二部分是View,直接理解就是“產品形態”。比如收縮引擎中的輸入框,搜索結果列表;這兩個具體的產品形態,就是兩個View。

第三部分是Model,這部分就很抽象了;我們在這里不單獨解釋它,結合下面的例子一起說。

我們以“用Excel中的數據畫圖表”這個場景為例,來看看MVC的三個部分是怎么配合工作的。

首先,我們在一個Excel文件中保存的一份數據,這份數據,就相當于MVC中的Model。

接下來,我們選中這些數據,然后使用插入圖表的功能,并選擇一種圖表類型;比如我們選擇了折線圖,這其中“插入圖表”就是一個Controller,而折線圖就是一個View。

這時假設我們不想用折線圖了,想換成柱狀圖;那么,稍微對Excel有一些了解的同學都知道,為了把折線圖換成柱狀圖,我們不需要復制一個Excel文件,也不需要再安裝一套Excel軟件,只需要改變一下圖表類型。

為什么這么簡單?

保存在Excel里的數據Model變了嗎?沒有。

“插入圖表”這個功能Controller變了嗎?也沒有。

要做的只是切換一下View。

所以,假設我們想在自己的產品中,增加一個類似“把折線圖換成柱狀圖”的功能,我們實際要增加的只是一個View,而不需要改變已經有的Model和Controller。

除非我們把“插入折線圖”和“插入柱狀圖”當做完全不相干的兩個功能來設計;不過這顯然不合理,而且已經超綱了,我們不在這里討論。

三、怎么用MVC設計產品功能?

現在你有體會到MVC在產品設計中的魅力嗎?那我們再舉個例子:

協作型的產品通常都會增加權限管理模塊。

按照標準的RBAC(Role Based Access Control,基于角色的訪問控制),我們需要設計的功能包括:

  • 單個/批量管理用戶和給用戶賦權;
  • 單個/批量管理角色和給角色賦權;
  • 權限校驗,返回校驗通過或拒絕;

聽起來像是個很復雜的功能模塊吧?別慌,如果用MVC的理念怎么設計呢?

這里只考慮了最核心的功能部分,在實際功能落地時,多少還會有其他功能補充進來,比如單點登錄、讀取用戶信息等。

首先我們有3個重要的Controller(不是全部哦),包括:

  • 1個更新用戶與角色關系的Controller,支持批量;
  • 1個更新角色與權限關系的Controller,支持批量;
  • 1個校驗權限的Controller,支持不支持批量都行;

其次,我們只有3個重要的Module,包括:

  • 1個用戶與角色對應關系的Model;
  • 1個角色與權限對應關系的Model;
  • 1個用戶與權限對應關系的Model;

其實,我們也可以把這三個Model合并成1個,這樣我就只需要一個“用戶-角色-權限”的Model了。

最后,我們也只需要1個View了,因為在交互上無非是查詢或者更新“用戶-角色-權限”三者之間的關系。

此時,如果之前我們確實沒有考慮到“批量修改”的情況,但是隨著用戶量增加,越來越多的用戶想要這個功能了。怎么辦?

如果我們在設計功能時用MVC的理念來考慮這個問題,只需要修改某一個Controller;并在前端的View上增加一些復選框的功能。

數據模型Model不需要做任何修改,所以數據庫也就不需要做什么改動了。

 

作者:李陽,微信公眾號:數據有毒(shujuyoudu)

本文由 @李陽 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

給作者打賞,鼓勵TA抓緊創作!
1人打賞
更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 挺技術的

    回復
  2. 沒有看太懂。

    回復
  3. 準備好紙巾 記得擦手 【 w w w . p m 7 . m e 】

    回復
    1. sddsfd

      回復
  4. 設計模式的作用:對擴展開放,對修改關閉。減少了功能或展現形式改變造成的修改工作;提供自定義選項和默認值,則可以方便不同用戶的需求。

    回復