产品设计之增删改查显算传

前言

所有的产品设计,本质上都是对于一些数据、内容、结构层、信息做一些交互,这是产品的本质。

增(新增)

做新增功能时,从以下角度考虑:

  1. 上下限 / 建议值 / 默认值
    • 字数输入的上下限、图片/视频大小,考虑前后端是否都需要做限制校验。
    • 图片/视频尺寸、图片/视频比例,给建议值及要求。
    • 一些低频选项,可以给默认值,无需每次都操作。(例:性别默认男,城市默认当前定位点,是否必输)
  2. 类型校验 / 格式校验
    • 例如:输入类型的全角和半角,可做自动转换提高体验。
    • 导入表格的功能,那就限制只能上传Excel格式的文件。另外,.apk、.exe等可执行文件,需要特殊处理。
  3. 容错机制 / 关联变化
    • 手机号已被其他账号绑定,需让用户可做更换绑定、合并账号等操作。
    • 昵称被占用,给多个建议昵称,让用户手动选择。
    • 自动保存为草稿、编辑状态下阻止浏览器关闭等。
    • 自动生成编号、排序方式,关联出现的状态及页面变化。
  4. 新增后联动变化
    • 数据会增加到怎样的一个量,当这些量增加到一定程度时页面需要怎样的表现形式。
    • 数据持续增加时,是按数量来固定分页,还是按照页面的长度来分页,还是根本就不用分页。
  • “新增"设计细节:
  • 增加按钮的样式、位置
  • 增加按钮的文案:添加、创建、新建?
  • 增加内容的字段
  • 字段的必填非必填说明
  • 字段的验证、提示说明
  • 界面排列的说明
  • 弹窗还是当前页跳转?

删(删除)

删除操作比新增操作风险大,但逻辑相对简单,有以下四种情况:

  1. 删除是否可逆
    • 需求上可逆、需求上不可逆
    • 逻辑上可逆、逻辑上不可逆
    • 哪些不能删,删完之后数据会呈现怎么样形态等
  2. 是否批量删除
  3. 是否涉及权限
  4. 前端删除 or 后端删除(是否给予删除警告提示影响范围/结果)
  5. 删除范围:可将删除范围设置为默认配置项,包括删除选中/全部/第一个/自定义。
  • “删除"设计细节:
  • 删除按钮的样式、位置
  • 删除案例的文案: 删除
  • 删除时是否要确认?确认窗口的样式
  • 删除完以后界面布局的变化
  • 前端/后端删除
  • 界删除之后是否会影响到其他的功能模块?

改(修改/编辑)

包括修改、编辑,需要注意以下两点:

  1. 能否修改
    • 是否拥有权限修改。
    • 对原有数据的修改:哪些元素可修改,哪些一旦确定就不可修改,如用户ID不可修改。
  2. 保存机制
    • 定时保存。
    • 失去焦点时保存。
    • 其他条件触发,比如网络变化等。
  • “修改"设计细节:
  • 编辑按钮的样式、位置
  • 编辑按钮的文案: 修改、编辑?
  • 弹窗还是当前页面跳转?
  • 可以修改与不可修改的说明
  • 更改数据之后,对其他功能模块的影响

查(查询/搜索)

包括查询、搜索,需要注意以下两点:

  1. 查询
    • 实时查询,用于小数据量场景。
    • 定时任务查询,用于数据量大,关联表多的情况。历史数据直接读取已经查出来的数据,避免每次查询都是多表联查,可提高查询速度,降低服务器压力。
      • 当开发皱着眉跟你说,这个表格字段太多,查询会卡死服务器,就说:跑个定时吧,亲~
    • 查询频率,多长时间查一次,根据情况定义。
    • 查询速度,查询速度慢的,需要优化。
  2. 筛选 / 搜索
    • 多条件组合筛选
    • 模糊搜索、精确搜索
    • 下拉框可搜可选
  • “查询"设计细节:
  • 按照哪些字段进行排序?
  • 搜索框:需要对哪些进行搜索?是否可以组合搜索?搜索后的界面如何程序?模糊搜索还是精确搜索?
  • 搜索结果的展示如何?是否和搜索条件有关系?
  • 搜索条件之间是否有冲突?
  • 查不到数据该如何?
  • 需要查看哪些数据?

显(显示)

其他六字都服务于"显"字,是七字真言的舵手。“增删改查算传"都通过"显示"与用户互动。用户对所使用的产品的一切感受,也都是通过"显"感受到的。处理异常的时候,要用同理心,去体会用户的感受。

  1. 可读/易用
    • 消除歧义
      • 例1:是否确定取消? 确定/取消
      • 例2:是否删除?(换行写删除的内容名称及影响范围) 删除/不删除
    • 文案有温度
      • 现在发生了什么,你需要怎么做,这样做的后果是什么,做了之后还能不能反悔修改。
      • 根据用户和场景,决定文案的语气、字数多少、字号大小、按钮大小、是否语音播报、颜色等等。需要有代入感才能写出有温度的文案。
    • 化繁为简
      • 界面简单
      • 文案简洁
      • 操作简便:尽量减少点击次数,但敏感操作又会故意设计复杂操作。
      • 精简流程:比较难,太精简了会导致耦合度高,太分散了会导致操作体验差,需要适当权衡取舍。
  2. 一致性
    • 用一致性消除歧义:用词一致、icon一致、交互一致、色彩一致。
      • 共识性一致:比如红色用于警告类,绿色用于引导操作。
      • 产品内一致:同一模块,避免出现既有实心icon,又有线条icon,等等。
    • 用一致性提高易用性:产品的所有弹窗中,确认按钮在左侧,取消按钮在右侧,等等。
  3. 消除焦虑——一切尽在掌控
    • 空态页/dashboard合理利用
      • 常规加载时,坚决消灭所有空白页,包括返回数据为空的异常情况。先显示骨架图 → 再模块化显示数据。
    • 加载动效设计
      • loading和进度条,文件过大导致必须等待时使用。让用户有个心理预期,根据其使用场景,合理决策继续等待或者退出。
  4. 反馈系统——凡操作,必有反馈
    • 正常反馈
      • 页面有明显变化的,无需额外的反馈,页面变化本身就是一种反馈。
      • 页面无明显变化的,用轻提示反馈。比如:操作成功、已添加。
      • 没有反馈也是一种反馈。
    • 异常反馈
      • 操作失败、网络异常、获取数据失败、触发安全机制等,同时提供友好业务报错。
      • 错误反馈文案由两部分组成:①用户能看懂的,②开发能定位到问题的。
  5. 用户安全——让用户掌握主动权
    • 上限(消息服务)
      • 针对重要变更信息,给予消息通知。另外短信通知、推送通知、注册/登录短信、邮件、都需要设置上限。
      • 尽量避免系统bug导致短信轰炸用户的情况时有发生…
    • 中止及撤回
      • 短信、通知、邮件,分批推送,且后台能进行中止发送和撤回操作。
    • 隐私数据
      • 涉及身份证号码的页面,要做数据权限处理,通常设置为少数人才能批量看到身份证信息。防止被拍照或截屏。
      • 在移动端,通常是用户通讯录、摄像头调用、MIC调用、定位等。
      • 密码使用密码框。
  6. 按需求/权限显示
    • 根据需求做哪些显示
    • 显示的方式是怎么样的
    • 不同用户的数据权限是否一样,若不一样,该如何表现。
  • “显示"设计细节:
  • 页面内容的布局
  • 每页多少条数据、数据的排序?
  • 是否有翻页、翻页样式如何?
  • 是否提供查看详情,如何查看?
  • 查看是弹窗还是当前页打开,还是新页面?
  • 如何从各个操作页面跳转回原页面的方法?
  • 跳转回来的页面如何显示?
  • 不同权限用户的数据展示是否有不同?展现规则是怎么样的?

算(计算和算法)

包括计算和算法。算法:是指用系统的方法描述解决问题的策略机制。其能对一定规范的输入,在有限时间内获得所要求的输出。 根据算法的定义,产品角度通常涉及到:

  1. 规则
    • 个性化推荐
    • 风控
    • 打标签
    • 积分体系
    • 会员体系
    • 用户ID
    • 订单编号
    • 简单运算规则
  2. 算法
    • 搜索查询
    • 产品经理需要简单了解一下算法逻辑,能可视化的了解各种算法的运算逻辑。
  • “计算"设计细节:
  • 计算规则
  • 页面公式、特定指标的计算规则
  • 数据背后的逻辑

传(传输)

即数据传输。不同服务器之间的数据传递,考虑到用户体验的时候ajax异步更新的传递,还有一些api的数值传递。生活中比如5G的应用亮点是低时延和高带宽,速度快反而是其次。可见"传"的三个点:时延、带宽、速度。因此,从用户角度可分为以下两类:

  1. 传输安全,结合"显"字,可分为
    • 用户可感知类:脱敏传输并脱敏显示、可执行文件加后缀等
    • 用户不可感知类:加密传输、接口安全、服务器隔离(敏感服务器不直接面向用户)。
  2. 传输速度
    • 压缩:比如微信发送图片,不勾选原图,图片就会被压缩传输。
    • 预加载:比如阅读类App,用户看第一章,他就会预加载第二章。用户读起来就不会有等待加载的过程,不会打断爽感。
    • 异步加载:
      • 偏移动端:按模块加载并显示给用户,不要等整屏内容都加载完再呈现,避免让用户焦虑。
      • 偏PC端:尽量避免整个页面刷新!减少服务器压力,和用户等待时长。
  • “传输"设计细节:
  • 不同用户之间、不同操作之间传递哪些数据?哪些字段?
  • 需要提供哪些API的接口?整合其他第三方系统时,第三方提供的API是否能够满足我们现有需求?
  • 数据的流向规则

以列表为例

假如数据做成了列表样式,则需考虑:

  • 是否考虑到了分页?
  • 是否需要排序?
    • 排序的话按什么条件进行?
    • 排序满足不了需要的话是否需要搜索框?查询框?
  • 查看详细列表的打开方式是怎样的?
    • 本页操作还是新窗口操作?
  • 跳转之后需不需要跳回来?
  • 选择数据支持单选还是多选?单选的话用下拉还是radio?

总结

每当我们在做产品设计的时候,都在心里默念着七个字,基本上设计出来的产品功能点就都覆盖到了,省去了产品讨论和产品研发过程中很多不必要的沟通、交流和冲突。

总之,细节交代的越清楚,和程序猿的沟通成本就越小。