常见用例
Visual Studio Live Share 的主要目的是使开发人员能够更轻松地与他人进行协作,而不会介绍有关何时以及如何执行此操作的任何观点(例如使用哪种通信工具、“正确”的软件方法或 SCM 工作流)。 这样,你的工具就可以支持自然发生的交互,并根据需要频繁地进行交互,而在某种程度上,这是对你已经习惯的工作方式的支持。
本文档重点介绍了已采用 Visual Studio Live Share 的一些用例,并描述了我们目前对它们的支持情况,以及我们计划进一步优化它们的方法(基于反馈!)。 如果你将 Live Share 用于以下未涵盖的内容,或者你认为我们可以更好地支持特定用例,请告知我们。
快速帮助
如果你遇到问题(例如尝试解决 bug,设置环境),则可以使用 Visual Studio Live Share 立即从另一个对等节点寻求帮助。 在很多情况下,提供帮助的人需要什么上下文并不能立即阐明,因此,Live Share 通过简单地提供对整个项目的访问来帮助你,如果需要的话,可以以增量方式共享更多信息(例如本地服务器,只读终端)。 无需来回发送代码片段和/或错误消息!
此外,由于 Live Share 允许共享活动调试会话,而无需“来宾”安装任何必需的平台 SDK(例如 Node.js、Go、.NET Core)或工具扩展,因此有助于更快地解决问题,并防止出现“不在我的计算机上重现”的情况。 Live Share 使你可以与他人共享调试状态,对于任何编程语言或运行时环境(例如 Kubernetes、React Native 应用),因此,无论你需要什么帮助,都可以共享它!
办公时间
许多企业和教育机构(例如学校、联机培训课程)在预定时间内为其客户/员工/学生提供支持,并且通常定期发生(例如,每个星期五下午 3-5 点)。 通过这种方式,“办公时间”只是一种计划形式的“快速帮助”,而不是完全的临时帮助。 使用 Live Share 可以轻松地快速获取帮助,因为提供帮助的“专家”可以立即加入协作会话,并回答问题,而不需要设置计算机。
结对编程
Visual Studio Live Share 最常见的一种情况是“结对编程”:两个或多个开发人员,共同处理一个共享任务,目标是共享知识,增强团队凝聚力,以及潜在的产品质量。 结对编程的确切外观在不同团队和情况下可能会有很大的区别,这取决于以下因素(还有其他因素):
协作“任务”的范围(如 bug、用户情景)
协作会话的预期持续时间(例如两分钟、一小时、全天候、一周、待定)
参与的人员数(例如两个人、整个团队)
每个参与者的角色(例如“驱动者”、观察者/审阅者、行业专家)
参与者的邻近程度(例如在同一栋楼里、在世界各地)
Live Share 与上述所有问题无关,而是力求支持完全“机会主义”并迎合你的情况的结对编程。 也就是说,与两个开发人员共享一个键盘和屏幕不同,Live Share 支持一种结对编程形式,允许开发人员致力于共同目标,而无需移除他们各自的自主性或环境首选项。 你可以独立工作,也可以协同作业,让每个参与者都可以将自己的思考过程带入协作。
为了进一步剖析此用例,以下项目表示我们观察到的用户使用 Live Share 进行结对编程的形式:
Mob 编程
Mob 编程(或 swarm 编程)实质上是结对编程,但包含两个以上的用户。 因此,Live Share 用于结对编程的所有优点也同样适用。 此外,某些团队根据需要进行“swarming”(例如,团队团结一致参加消防演习),而不是全天候。
目前,Live Share 支持一个会话内最多 30 个来宾。
提示
若要在一个会话中启用 30 个来宾:
- VS Code:将“liveshare.increasedGuestLimit”:“true”添加到 settings.json
- VS:将“工具”>“选项”>“Live Share”>“增加来宾限制”设置为“True”
编码竞赛/黑客马拉松
编码竞赛和黑客马拉松是有效 mob 编程的短期、单一任务变体。 团队成员及其当前角色也可能是动态的。 由于该用例通常还对时间较为敏感,因此不需要采用全新工具就能进行实时协作,不受单一屏幕或键盘的限制即可协同工作,进而大大提高速度。
由于该环境中的参与者可能并不总是完全“受信任”,因此你可以随时从会话中删除(并阻止)来宾。 这为“主持人”提供了对环境的完全控制。
学校团体项目
团体项目最终看起来就像是 mob 编程,其中多名学生一同协作,并且可以在专注于单个任务或同时处理多个任务之间无缝切换。 他们可以使用 Live Share 实时协作,而不只是依赖版本控制来进行异步协作,这可以帮助实现团队协作的社交和教育优势。
开发人员流式处理
开发人员流式处理(通过 Twitch 或 Mixer)已经成为一种引人注目的新型教育形式。 虽然 Live Share 并不打算替换其广播平台(不过我们听说过这一诉求!),但它确实提供了一种方法,让主持人将程序与一个或多个来宾配对,然后流式传输该交互。 这样,查看者就可以通过查看两个或多个开发人员的自然交互和思维过程来了解更多信息,他们甚至可以在完全不同的操作系统和 IDE 中协同工作!
原型制作/项目开始
当团队开始使用新的项目/微服务,或创建新功能的原型/添加新功能时,为了快速取得进展并探索新想法,相互协作通常很有帮助。 由于新构建的代码库可能尚未提交到共享存储库,因此 Live Share 允许每个人参与到迭代过程中,而不考虑他们是否在同一办公室。
交互式教育
一般而言,Live Share 旨在帮助开发人员在其团队间分享知识。 教育是 Live Share 的基本用例,通过允许每个参与者与正在协作的代码库进行交互,而不只是观看屏幕,Live Share 非常适合此场景。 每个人都以不同的微妙方式学习,因此,通过赋予“学生”独立性,他们能够利用所给予的指导,而无需牺牲他们在此过程中探索自己想法的能力。
对等辅导/载入
当向开发人员介绍新的代码库、功能区域、技术等时,你可以使用 Live Share 来演示项目(使用 Follow Mode
),这样他们可以跟随你的步伐,但在他们自己的 IDE 中。 由于 Live Share 允许“来宾”独立浏览项目(例如打开文件、执行 Peek Definition
),因此他们可以遵循既定的做法,不过也可以根据需要执行快速探索(例如“此函数的作用是什么?”)。
团队培训
团队培训实际上好比对等辅导,但它是面向整个团队的,而且可能更专注于普遍有用的社交知识,而不同于新员工入职培训支持和/或在特定任务上提供帮助。
课堂讲座
当讲师教授课程时,他们可以使用 Live Share 与学生共享项目,而不是只是简单地展示屏幕。 这样,整个班级的学生都可以跟上教师的节拍,同时能够自行与项目交互。 此外,教师还可以要求个别学生帮助解决课堂的特定部分(例如“应在这里调用哪种方法?”),这可以在课堂的社交方面提供帮助,而无需学生走到讲台上,甚至无需在同一间教室内(例如在线课程)。
为了帮助进行课堂设置,Live Share 允许在只读模式下共享。 讲师可以使用只读模式与学生共享项目,而无需担心不必要或意外的编辑。
此外,Live Share 允许最多 30 个来宾加入协作会话。 这样一来,讲师就可以将整个班级的学生加入会话并一起查看代码。
若要启用此功能:
- VS Code:将“liveshare.increasedGuestLimit”:“true”添加到 settings.json。
- VS:将“工具”>“选项”>“Live Share”>“增加来宾限制”设置为“True”
代码评审
PR 是一种用于与他人进行协作的强大方法,但通常表示任务的完成(不包括“WIP”PR),以及将其合并的想法。 很多时候,在 PR 中提供的反馈可以在更早的时候给出,因此,团队可以轻松地、不断地向同事寻求建议,而不是等到他们“完成”任务后再询问。
由于 Live Share 允许你与他人立即共享项目,因此它可用于启用“非正式”/临时代码评审,无需寻求帮助,只需寻找输入,确保你的方向和/或方法与他人一致即可。 这可能有助于更快地完成后续 PR,并明确帮助在整个团队中分享社交知识。
此外,由于 Live Share 允许共享任意目录,因此你可以使用它来执行代码评审,即使当前未使用版本控制(不过建议使用!),或者如果你的团队不使用 PR(例如,你执行基于中继的开发)。
技术访谈
当就开发人员职位对候选人进行面试时,白板范围以外的讨论通常会有所帮助,观察他们如何在实际 IDE 中解决编码问题(特别是当你的团队/组织已经对你希望看到他们使用的工具进行了“标准化”设定时)。 这不仅让他们能够以一种更自然/舒适的方式工作(大多数开发人员不会在白板上编写代码!),而且还能在工作时为其提供即时反馈/帮助(例如生成错误、intellisense)。 很多时候,更重要的是了解候选人的思考过程,而不是衡量记住确切语法和/或 API 名称的能力。 通过这种方式,Live Share 提供类似于执行结对编程会话的体验,但允许参与者在其自己的环境中(包括 OS 设置,如辅助功能),并且同样适用于本地或远程面试。 通过从 Web 加入会话,候选人可以使用团队的开发环境和基本代码,而无需下载任何内容。
此外,实际开发不只是编写代码。 由于 Live Share 还支持共享调试、任务和终端,因此它允许面试人员在候选人诊断问题时对其进行观察,并向他们提供解决问题所需的适当工具(例如步骤调试、运行测试)。 由于所有上下文都是从主机进行远程访问的,因此候选人可以快速跳转到“面试环境”,而无需设置计算机(除了安装 Live Share)。 然后团队可以维护共享面试应用存储库(或使用其实际产品代码库),可以复制存储库并与候选人共享,只需在每次面试前向他们发送会话 URL。
远程工作
在家办公,无需使家庭开发计算机的工具链与办公室的工具链同步。 在家快速完成该代码行,而无需在办公室匆忙赶进度,在家克隆存储库,并查找所处理的确切行。 从轻型便携式计算机连接到重量级工作计算机。