用户体验指南¶
本部分文档旨在为希望参与改进 pip 用户体验(包括 pip 文档)的贡献者提供参考。
什么是以用户为中心的設計?¶
以用户为中心的設計 (UCD) 或以人为中心的設計 (HCD) 是一种迭代过程,其中设计决策是根据对用户及其需求的理解而做出的。许多术语被用来描述这种类型的工作;在本文件中,我们将使用“用户体验 (UX) 研究与設計”。
对于 pip 项目,用户体验研究和設計可用于
更深入地了解 pip 的用户、他们使用 pip 的环境和他们面临的挑战
为新旧 pip 功能的设计提供信息,使 pip 更易于使用和访问。这可能包括改进 pip 的输出(包括错误消息)、控件(如命令和标志)和文档
帮助 pip 开发团队根据用户需求对功能请求进行优先级排序
从高层次来看,用户体验研究和設計过程包括
設計,其中提出解决方案以应对所进行的研究。用户体验研究和設計是迭代进行的,设计方案或原型与用户一起测试,以验证它们在满足用户需求方面是否有效。通常,需要完成几个研究、設計和验证周期才能找到有效的解决方案
有关此过程如何应用于 pip 项目的更多信息,请参阅研究结果.
另请参阅
为 pip 进行研究¶
用户研究可用于回答几种不同类型的问题
一般了解背景 - 例如,人们如何使用 pip?pip 在哪些不同的环境和上下文中使用?
更广泛地了解用户 - 例如,谁使用 pip?他们通常有多少经验?他们如何学习使用 pip?pip 用户之间是否有任何共同特征?pip 用户的需求有多么多样?
评估特定需求或挑战 - 例如,pip 用户如何遇到给定的问题?它何时出现?pip 用户经常遇到这个问题吗?新功能将如何解决这个问题?
在研究过程中,重要的是让用户参与输入,并将他们的反馈纳入决策过程。
来自用户的输入和反馈对开源项目来说与代码贡献一样宝贵;最终用户可能还没有准备好直接提交拉取请求或修复代码,但他们的反馈可以帮助塑造 pip 的优先级和方向。
有许多方法可以让用户参与开源项目,有时来自社区成员的输入会让人感到不知所措!提供结构,如调查和访谈,可以更容易地收集和理解反馈。以下是让用户参与的一些示例
调查 - 适用于针对特定问题和广泛的社区背景和理解进行有针对性的反馈
访谈 - 适用于深入交谈以了解或探索主题
测试 - 适用于评估问题或验证设计理念
开放式问题队列(如 GitHub 问题)和支持票证系统 - 了解常见挑战的宝贵数据来源
论坛或讨论工具 - 了解常见挑战或让更广泛的社区参与公开讨论的宝贵数据来源
会议和活动 - 进行轻量级访谈或特定功能测试的绝佳机会
在运行2020 年对 pip 进行的用户体验研究时,我们发现调查和访谈是与 pip 用户互动特别有用的工具。以下是一些一般性指南,以及针对 pip 的具体建议。
调查¶
调查非常适合收集广泛的大规模输入,例如了解 pip 用户社区的整体情况,或者获取有关特定问题的有针对性的反馈。
调查还可以用来获取新工具早期版本的现场反馈,例如,如果用户正在使用某个功能的测试版,则在命令行上提示他们,或者询问人们对文档页面的反馈。
例如,在 2020 年,pip 用户体验团队发布了几项调查,以了解 pip 和 pip 的用户。这包括
了解“谁使用 pip”
收集有关 pip 文档的反馈
收集有关 pip 2020 依赖关系解析器测试版的反馈
询问用户 pip 2020 依赖关系解析器的特定部分应该如何运行
2020 年发布的调查的完整列表及其结果可以在这里找到.
設計调查¶
在設計调查时,首先要确定您想了解什么。将此写下来作为研究结果/索引问题可能很有用。示例 pip 研究结果/索引问题可以在这里找到.
如果您发现您的主题很大,或者您有很多研究结果/索引问题,请考虑发布几份独立的调查,因为调查太长会导致响应率低/放弃率高。
以下是如何为 pip 建立调查的简要指南
-
介绍您的调查
解释调查的动机,或者(对于有关 pip 行为的调查)以场景设定情景。 -
設計您的问题
-
试运行您的调查并根据反馈进行修改
这可以简单到与 1-2 个人分享它,看看它是否有意义。 -
确定在哪里进行推广
确定您想从谁那里获得反馈以及您应该在什么地方发布调查。是否有社区成员或团体可以帮助您接触更多的人?
- 是否需要将调查翻译成其他语言以接触更广泛的社区?
- 您是否能够补偿人们的宝贵时间?
- 参与者是否希望被认可为贡献者?
-
启动并推广您的调查
请参阅调查和访谈推广,了解基于 2020 年进行的用户体验研究/索引,如何为 pip 进行推广的建议。
调查案例研究¶
上述流程在 2020 年得到遵循,当时我们想知道 pip 是否应该安装具有冲突依赖关系的包.
首先,我们介绍了调查的目的,并给出了一个场景
接下来,我们提出了一个封闭式问题,以确定用户喜欢什么
之后,我们通过一个开放式问题对响应进行了限定
接下来,我们提出了更多关于解决方法、语法和行为偏好的问题。
最后,我们询问了调查参与者有关他们自己的信息,包括他们使用 Python 的经验以及他们使用 Python 的目的。目的是了解不同类型的 Python 用户是否对问题的回答存在差异。
这份调查与 pip 团队共享,并经过多次改进,最后才发布并通过各种 推广渠道 推广。
总共收到了 415 份回复,其中 明确的结果 帮助我们对如何推进该功能做出了强有力的建议。
分析调查结果¶
调查特别有用,因为它能够快速了解大量回复中的趋势。如果您的问题设计得当,那么您应该能够轻松地汇总数据并做出如下陈述:X% 的 受访者 表示 选项 B 是 最佳 选项。
将回复置于语境中¶
重要的是要记住,您调查的回复会受到您进行调查推广的方式的影响,因此,除非您能确定回复调查的人代表了所有用户,否则您需要确保将结果置于参与者的背景中。在调查回复中,可以查看不同用户或用户群体的不同方面对回复是否存在差异,例如:
按经验水平 - 回复在不同经验水平之间是否一致,还是存在差异?例如,经验较少或更初级经验的用户是否拥有不同的回复、需求或挑战?
按背景/情境 - 回复在不同背景或情境之间是否一致?例如,企业背景的用户与爱好者/独立用户是否拥有相似的回复?数据分析师与软件工程师是否拥有相似的回复?
多少份回复才足够?¶
这取决于!对于像这样的研究来说,这是一个很难回答的问题 - 传统的统计数据表明,“足够”取决于您需要调查代表的总人口。在 UX 研究中,答案往往更接近于当您看到回复水平的变化趋于平稳时,因此更多地是关于数据中的信号和趋势。
如果您发现数据中没有规律,这可能意味着您的问题不够清晰或提供了太多选项,或者可能意味着您需要联系更多人。
另请参阅
访谈¶
访谈是与用户进行更深入对话以更好地理解或探索某个主题的绝佳方法。与调查不同,它们不是了解整体模式的最佳方法,因为由于涉及的时间,很难与大量人员互动。特别是,在会议和活动期间进行计划可能非常有用,因为这可以帮助您在更非正式的设置中与许多用户建立联系。
设计访谈¶
与调查一样,在开始之前确定要学习的内容非常重要。
通常,访谈是根据脚本进行的;这有助于访谈顺利进行,因为提供了一些结构。但是,如果对话朝着有趣或有见地的方向发展,也可以“偏离脚本”。
以下是如何为 pip 运行访谈的简要指南
-
编写您的脚本
这应该包括一个为参与者设定场景的介绍,解释访谈的主题、您(或观察者)将如何记录笔记、将花费多长时间、他们的反馈将如何使用(和共享)以及您想分享的任何其他提示。
接下来,设计您的问题。限制问题数量,这样您才有足够的时间涵盖关键要点,并且访谈不会进行得太久。与调查一样,一个好的经验法则是关于用户经验水平以及他们使用 Python/pip 的目的的 2-3 个问题,加上关于特定主题的 3-4 个问题。
有 四种不同类型的访谈问题-
描述性 - 这种类型的问题为您提供了具体的、具体的故事情节和细节。它还有助于您的受访者“到达”访谈,重现其相关的经验和记忆。例如:
- 告诉我一次…
- 告诉我第一次…
- 告诉我最后一次…
- 告诉我最糟糕/最好的时候…
- 向我说明您是如何…
-
反思性 - 这些问题让受访者能够回顾并更深入地思考他们的经验。帮助受访者反思是访谈的核心。不要着急 - 给他们充足的空间来整理他们的想法。
- 您对…怎么看?
- 您对…有什么感觉?
- 您为什么要…
- 您为什么要认为…
- 当…时它产生了什么影响?
- …如何随时间推移而改变?
-
澄清 - 这种类型的问题让受访者有机会扩展关键要点。熟练的澄清性问题还让您能够巧妙地引导受访者的故事讲述朝着您发现的最有趣和最相关的领域发展。
- 当您说…时您指的是什么?
- 所以,换句话说…
- 听起来您是在说 [...]. 是这样吗?
- 您能告诉我更多关于这方面的信息吗?
-
探索 - 这些问题是对受访者的邀请,让他们创造性地思考自己的处境,最好在访谈结束时提出。不过要注意 - 来自一个人的建议很少是解决您设计问题的答案,您需要向他们明确表示,您只是在此时收集想法。
- 您会如何改变…
- 如果…会发生什么?
- 如果您有一根魔杖…
-
描述性 - 这种类型的问题为您提供了具体的、具体的故事情节和细节。它还有助于您的受访者“到达”访谈,重现其相关的经验和记忆。例如:
- 对 1-2 个人进行试点访谈,并根据他们的反馈进行修改
-
确定如何进行访谈推广
- 您想确保听到哪些人的声音?您需要在何处发布信息才能与访谈对象联系?是否有社区成员或团体可以帮助您接触特定人员?
- 是否需要将访谈翻译成其他语言才能接触到更广泛的社区或特定社区?
- 人们将如何报名参加您的访谈?
- 您是否能够补偿人们的宝贵时间?
- 参与者是否希望被认可为贡献者?
-
开始推广!
请参阅 调查和访谈推广,了解 2020 年进行的 UX 研究对如何为 pip 进行推广的建议。
以下是如何与用户交谈 pip 文档的示例用户访谈脚本
介绍
首先,感谢您抽出时间参与,感谢您持续的参与。
此次访谈的目的是更好地了解 Python 社区成员对 pip 文档的看法和使用情况。
访谈大约需要 30 分钟。如果您不理解任何问题,请让我重复或重新表达。如果您没有合适的答案,请随时告诉我跳过。
我将记录笔记。这些笔记将在 GitHub 或 pip 文档中共享,但我们将删除任何身份信息以 > 保护您的匿名性。
请诚实 - 您的反馈可以帮助我们改进 pip。我不会对您说的话有任何冒犯。
(可选)您介意我录制这段对话吗?
开场问题
您能告诉我一些您如何使用 Python 的信息吗?
您使用 pip 多久了?
解决问题
您能告诉我一次您在使用 pip 时遇到问题的情况吗?
发生了什么事?
您做了什么?
您去了哪里?
您是如何解决问题的?
请访问 https://pip.pythonlang.cn/en/stable/
您之前使用过这份文档吗?
在 1-10 的范围内,它对您有多有用?
为什么?
您使用过的任何项目,您希望我们在考虑改进 pip 文档时参考吗?
是什么让这份文档出色/有用?
总结
pip 团队可以做些什么来帮助用户解决 pip 问题?
您有任何问题吗?
多少次访谈才足够?¶
这取决于您正在讨论问题的复杂性,以及您是否觉得您已经从进行的访谈中获得了足够的见解。它还取决于您是否觉得您已经听到了来自足够广泛的人群的声音。例如,您可能希望仅在您从专家和新手 pip 用户那里都听到了声音后才停止访谈。
通常,仅进行几次访谈就能发现如此多的问题,以至于有足够的材料向团队提出建议。
分析访谈数据¶
正式的访谈分析通常使用称为“编码”的过程,其中多位研究人员会审查访谈记录,并根据已开发的与研究一致的代码系统或类型学对不同的陈述或评论进行标记。这是一个很好的做法,也是确保研究人员的偏见作为过程的一部分得到解决的好方法,但大多数团队都没有人员配置或资源来进行这种做法。
相反,许多较小的团队使用轻量级过程将访谈陈述捕获到主题中,例如围绕需求或挑战的特定主题或问题领域。访谈也是引语的绝佳来源,这对于提供关于某些事情为何重要或某些事情何时/如何出现供用户参考的示例很有帮助。
访谈分析通常使用便利贴进行,您可以在便利贴上写下引语、问题或发现,然后将便利贴移动到可以标记或归类到主题中的集群中。在远程情况下,可以使用各种工具来实现这一点,例如数字便利贴工具,如 Miro 或 Mural,甚至看板工具,如 Trello、Wekan 或 Cryptpad,或者可以使用文本文档或电子表格进行操作,使用列表和类别。使用 简报工作表 在每次访谈结束后快速捕获见解和主题,以免您忘记特定访谈中的主题,这可能很有帮助。
另请参阅
调查和访谈推广¶
以下是 pip 团队在 2020 年进行研究时使用的一系列推广平台。其中一些平台比其他平台更成功。
推荐:UX 研究小组¶
作为 2020 年用户体验工作 的一部分,我们发布了一个表单,要求人们加入研究小组,并定期收到有关调查和访谈机会的联系。现在这已经是一个 用户可以注册的邮件列表,除了广泛的公众宣传外,它还将以持续的方式使用。
推荐:Twitter¶
我们发现 Twitter 是一个非常有效的平台,可以与 Python 社区互动并推动参与用户体验研究。我们建议
推荐:特定兴趣小组¶
我们通过 PyLadies 社区的 Slack 频道 与其互动,以推动更多使用 pip 的女性参与,因为我们发现这个群体难以通过其他渠道接触到。
推荐:会议社区¶
由于 2020 年的全球大流行,我们无法像我们希望的那样通过 PyCon(或其他区域性会议)与用户互动。但是,我们仍然建议使用这个渠道,因为它是一种快速而有见地的与大量感兴趣的人群互动的方式。
值得探索:在 pip 的“帮助”命令中添加提示/路径¶
我们没有机会探索这个机会,但这个想法是在 2020 年 12 月与 Pypa 维护者一起举办的研讨会上提出的,这可能是吸引用户并帮助他们找到贡献机会的好方法。
不推荐:论坛(Discourse 等)¶
我们多次使用 discuss.python.org,发布到 打包论坛,询问打包维护者他们对 pip 功能的看法。不幸的是,这不像我们希望的那样富有成效,只有很少的回复。我们发现通过 Twitter 与打包维护者互动更有效。
在 Reddit 上发布调查也不像我们预期的那样有用。如果发布调查或研究参与呼吁的用户在 Reddit 上没有显著的信誉,那么发布过程本身就会具有挑战性。总的来说,我们没有看到 Reddit 产生的调查或访谈参与度与其他外展方式相比有很大程度的提升。
用户界面设计¶
许多人将“用户界面”一词与网站或应用程序联系在一起,但重要的是要记住,CLI 也是用户界面,它应该像图形用户界面一样得到相同的设计考量。
为 pip 设计包括
设计 pip 的输入 - 建立将功能分组到命令下的最佳方式,以及如何命名这些命令以便它们对用户有意义
编写 pip 的输出 - 建立 pip 如何响应命令以及它向用户提供什么信息。这包括编写成功和错误消息。
提供补充材料 - 例如帮助用户理解 pip 操作的文档
设计原则/可用性启发式¶
有许多交互设计原则可以帮助设计师设计出色的体验。尼尔森诺曼集团的 用户界面设计 10 个可用性启发式 是一个很好的起点。以下是一些这些原则如何应用于 pip 的例子
系统状态可见性:确保所有命令都能产生与用户相关的清晰反馈 - 但不要用太多信息来超载用户(参见“美观和极简设计”)
一致性和标准:在编写界面时,努力与 Python 打包生态系统的其他部分保持一致,并在可能的情况下采用其他 CLI 工具的熟悉模式
美观和极简设计:从 CLI 输出中去除噪声,以确保用户能够找到最重要的信息
帮助用户识别、诊断和从错误中恢复:清楚地标记和解释错误:发生了什么,为什么,以及用户可以做些什么来尝试修复错误。在需要提供详细解释的地方链接到文档。
帮助和文档:在上下文中提供帮助,并确保文档以任务为中心
其他资源¶
设计工具¶
设计过程中经常使用的工具有角色和指南,但还有线框图、原型和测试,以及创建流程图或模型。
角色¶
有关角色及其在开源项目中的应用的更深入概述,这个 来自 Simply Secure 的资源 可能会有所帮助。
角色是可能使用你的工具的人的抽象或原型。它通常以简短的肖像的形式出现,其中包括姓名、年龄范围、职位名称等,足以让你了解这个人是谁。你可以将这些信息捕捉到一个 角色模板 中,并将其作为资源与你的开源社区分享,参见 Gitlab UX 团队的示例。
角色在帮助将功能设计与特定用户特定需求的优先级联系起来方面特别有用。这有助于为设计过程提供有用的约束,这样你就可以集中精力工作,而不是试图让每个功能都成为针对每个用户的万用工具。
在 2020 年,pip UX 团队为 pip 项目开发了以下角色
Python 软件用户
Python 软件制作人
Python 包维护者
关于如何创建 pip 角色以及如何将它们应用于未来 pip UX 工作的详细说明可以在 此处找到。
原型设计¶
在任何 UX 项目中,对真实用户进行界面原型设计和测试都很重要。这为团队提供了一个反馈循环,并确保交付给最终用户的解决方案能够满足他们的需求。
对 CLI 进行原型设计可能是一个挑战。参见 使用 cli-output 创建快速 CLI 原型 以获取建议。
文案写作风格指南¶
鉴于 pip 的界面是文本,因此使用清晰一致的语言尤其重要。
以下文案写作风格指南可能对 pip 团队有用
Firefox
Heroku CLI(非常具体地针对 Heroku 的 CLI 工具)
一般资源¶
Heroku 关于其 CLI 工具设计的演讲(视频 文本记录)