Crystalline:降低开发人员为决策收集和组织信息的成本(Crystalline: Lowering the Cost for Developers to Collect and Organize Information for Decision Making)

在遇到编程问题时,开发人员需要搜索网页并理解其中的内容,以找到对应的解决方案。一般来说,解决方案通常有多个由不同标准表征的选项。比如,开发人员可以将numpy ndarray和numpy matrix作为高维数据数据格式的候选,然后根据是否包含内置矩阵操作、是否支持任意维度数组以及是否可以获得长期支持等标准来进行选择。面对众多的网页以及各种可能的衡量标准,提供工具来帮助开发人员收集、组织和理解信息,以促进进一步的决策变得必要。

图1:Unakite [1]用户界面。

目前已经有许多商业和研究工具可以帮助开发人员完成这一目标,比如Unakite [1]。如图1所示,开发人员通过选择所需内容(图1a1)或在所需内容周围拖出边界框(图1a2)来收集信息片段。这些片段会显示在片段存储库的“未分类”选项卡中(图1c)。开发人员可以将代码段拖放到比较表中的一个单元格中(图1b),并标记它是正面的还是负面的,或者只是信息性的(图1f)。然而,即便使用这些工具,开发人员仍会面临以下挑战:

  • 开发人员必须手动收集和组织信息片段,尽管已经有一些自动化的方法可以帮助完成这些工作。
  • 开发人员通常不确定哪些信息最终是有用的。在这种情况下,他们必须经常在调查和收集信息之间切换他们的关注点,或者也可能太过专注于调查过程而忘记收集任何信息。
  • 系统无法很好地处理直到项目过程中才被发现收集和组织信息需求的情况。这可能是因为在项目过程中发现或引入了额外的外部需求、限制或用户反馈所造成的。在这些情况下,开发人员很难回忆和追溯他们达到当前状态的步骤,并且需要再次回忆所有相关的信息片段。

面对这些挑战,作者们提出Crystalline [2]。Crystalline是一个Google扩展程序,用以帮助开发人员在搜索和浏览网页时自动收集和组织信息。它的设计目标包括:

  • 将收集信息的成本降至最低。为了使开发人员专注于他们的主要任务(阅读和理解内容),系统需要自动收集信息。
  • 主动筛选、组织信息并确定其优先级。为了避免给开发人员提供过多的信息,系统需要对信息进行整理。
  • 降低错误自动化造成的代价。如果机器提供的信息是不正确或者不需要的,系统应该允许开发人员方便地对这些错误进行纠正。
图2:Crystalline [2]提供的选项与标准面板。
图3:Crystalline [2]中的标准详情界面与比较表界面。

基于这些目标设计的界面如图2和图3所示。当开发人员浏览网页时,Crystalline会自动收集选项和标准,并将其显示在选项(图2c)和标准面板(图2d)中。它会自动检测这些标准的相对重要性并进行排序,还会根据标准间的相似性自动对它们分组。开发人员还可以将重要标准固定到顶部(图2e),或者对这些标准重新排序。此外,标准中遗漏的内容将通过红点提醒开发者(图2f)。开发人员可以点击某个标准来进入它的详情视图(图3a)。视图会列出所有收集的信息片段以及开发人员访问过但尚未注意到的片段(图3d)。他们可以通过鼠标悬停来放大某个信息片段(图3b)。Crystalline还提供了一个比较表视图(图3c),它详细总结了决策空间和这些选项之间的权衡。

图4:Crystalline [2]提供的五种隐式行为信号。

在详细设计过程中,作者们使用在“vs”的实例之间查找实体以及通过Google Cloud自然语言API提取实体等技术来自动收集有关选项和标准的信息。选项是通过将这些技术应用于标题或开头段落等部分来提取的,而标准则是将它们应用于节标题或表标题等部分。为了组织信息并确定它们的优先级,作者们通过开发人员对标准的关注度来计算它们的重要性。他们追踪复制内容、文本高亮、点击、鼠标悬停和内容在屏幕中可见这五个隐式行为信号,并通过先导试验来确定不同信号的评分函数(图4)。此外,为了在减少混乱的同时帮助开发人员在他们看到的信息之间建立联系,作者们通过BERT等Transfomer机器学习模型来计算每个标准的嵌入,然后将距离阈值内的标准合并成一个组。

作者们通过用户实验来验证系统的有效性。他们招募了十二位参与者并设计了组内实验。这些参与者被要求完成两项任务,其中一项使用Unakite,另一项使用Crystalline。使用Unakite完成的实验被作为基准条件。作者们为每个实验提供了预定义的网页,以此来确保这两项任务的难度大致相等以及结果的公平比较。实验结果显示使用Crystalline完成的实验会比使用Unakite的快20%并减少60%的开销。这里的开销是指参与者与工具进行互动的时间占完成任务总时间的比例。

图5:参与者在用户实验中执行每次任务所需的交互数。

为了进一步研究开销显著降低的原因,作者们分析了参与者在每个任务中执行的交互数量(图5)。从中可以看出,Unakite中的大多数交互都是手动收集信息片段并将其放入比较表中,而Crystal中的大多数交互是将标准合并到组中以及固定或者重新排序标准。这说明Crystalline将之前主动获取和组织信息的工作转变为被动的监控和错误纠正。

作者们还从图5中发现参与者进行固定或者重新排序标准的交互次数相对较高,这说明当前设计的通用评分函数不一定适用于每个参与者。之后他们计划使用更加多样化的行为信号集(如眼睛跟踪)或者机器学习方法来进行改进。此外,考虑到开发人员还经常在浏览器之外(如代码编辑器或命令行界面等)执行活动的情况,他们还计划为开发人员提供更全面的决策环境。为了实现这一目标,他们需要弄清楚如何从这些来源收集和组织信息,以及如何将它们整合在一起。

参考文献

1. Michael Xieyang Liu, Jane Hsieh, Nathan Hahn, Angelina Zhou, Emily Deng, Shaun Burley, Cynthia Taylor, Aniket Kittur, and Brad A. Myers. Unakite: Scaffolding Developers’ Decision-Making Using the Web. In Proceedings of the 32nd Annual ACM Symposium on User Interface Software and Technology (UIST ’19), pages 67–80, 2019.

2. Michael Xieyang Liu, Aniket Kittur, and Brad A. Myers. Crystalline: Lowering the Cost for Developers to Collect and Organize Information for Decision Making. In CHI Conference on Human Factors in Computing Systems (CHI ’22), pages 1-16, 2022.

评论关闭。