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

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

產品設計:如何讓功能既靈活又簡單?
一、為什麼這是個問題?

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

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

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

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

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

舉個例子:在當今的產品中,包含的資訊越來越多、越來越複雜,所以搜尋功能就越來越重要了。

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

怎麼辦呢?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最後,我們可以借鑑技術領域的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 協議

版權宣告:本文源自 網路, 於,由 楠木軒 整理釋出,共 2916 字。

轉載請註明: 產品設計:如何讓功能既靈活又簡單? - 楠木軒