热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

总有一款适合你的远程软件开发和结对编程工具

总有一款适合你的远程软件开发和结对编程工具,Go语言社区,Golang程序员人脉社

原文:Tools for Remote Software Development and Pair Programming
作者:Brian Cooksey
翻译:Vincent

译者注:作者以视频通话、屏幕共享与远程控制、共享代码片段、在线IDE与代码托管环境为例介绍远程软件开发和结对编程工具的优劣。

有时我希望可以方便的与同事交流一个严重的错误或着讨论技术方案。但异步通信并不总是适用于这些棘手的问题。值得庆幸的是,过去几年来,开发人员纷纷带来了大量的在线协作工具。从屏幕共享到结对编程,总有一个工具可以满足你的协作需求。

视频通话

电话沟通虽然很常见,有效性也是众所周知的。在Zapier,通常一个快速的视频电话能帮助你与同事解决复杂的问题。在一个分散的团队中工作,每个人都可以独立应对他们所面临的大多数挑战。如果你使用视频通话工具,在协作的问题上,两名工程师可能只需要花费10分钟,然后由一位工程师来实施完成。

图片描述

就目前的选择而言,视频会议软件并不缺乏。我们倾向于使用最方便的Zoom.us或Slack的内置呼叫功能。关键是要找到一个可靠的高质量的工具。

虽然只有音频的通话是可以的,但是高质量的视频可以让你了解同事的肢体语言,这方便他们更有效地了解你们正在讨论的话题。

屏幕共享+远程控制

有时候言语并不能表达清楚问题。这时候可以提供一个可靠的屏幕共享工具,将会帮你更加清晰的表达解决方案。我们发现屏幕分享这种通信方式有助于提高用户体验,它可以迭代地诊断错误(尝试输入,查看结果,尝试另一个输入,查看下一个结果),或者一起探索日志数据。该工具也允许屏幕共享的人与远程机器交互,这对解决问题是非常有帮助的。尽管点击可能会延迟,但对于它的价值来说却是不值得一提的。

图片描述

我们在Zapier的goto是Zoom.us,它具有内置的屏幕共享,或者Screenhero,同时另一个人也能操控。

共享代码片段

你曾经写过一个脚本,并且帮你解决问题?或者你写的脚本帮助你自动完成一个乏味的任务。你的劳动有多大意义?代码并不是真正的添加到源代码控制中,这是一种痛苦的编程手段,但你又不想失去它。

图片描述

这时GitHub Gists和JSFiddle的代码段共享工具派上用场。您可以保留代码,却不会影响你的程序。在远程开发团队中,这些平台可以作为共享网络驱动器的有效替代品。在Zapier,我们使用Gists来转储代码和设置开发环境。这个空间可以存放从API一个版本的数据格式转移到另一个版本的数据格式的转换文件,许多其他奇怪的代码段,在线摘录,项目链接。

在线IDE和托管开发环境

代码编辑器和虚拟化开发环境这两类工具是最令开发人员满意的。近年来,一些公司面临着从本地开发转移到云端的挑战。像Cloud9和Codenvy这样的服务提供了一个在线编辑器IDE和一个完全托管的虚拟机或docker容器。 这使得开发人员在有网络的情况下可以在任何地方任何设备上编程。 这也意味着远程结对编程与共享在线工作区一样简单。 你可以编辑相同的文件,单击相同的开发服务器,共享虚拟终端shell,运行测试命令。 这种空间中的一些工具,如Koding,提供了一种将远程卷和ssh安装到云环境中的方法,并允许本地编辑文件,同时仍然在云端托管开发服务器。

图片描述

尽管Zapier并没有广泛使用这套工具,但团队中的一些成员将其用于边缘项目和一次性任务。 我们的平台工程师之一本·彼得在Cloud9上开发一个项目,当他需要一个开发环境的时候,他可以通过Chromebook进行编码,这通常不能在本地处理应用程序。 他还发现,将开发环境托管在可寻址域中有助于构建涉及入站请求的功能(例如测试OAuth2流或webhooks)的情况。

Tunneling

如果一个完整的托管开发环境比你想的复杂,另一个选择是在本地运行你的堆栈,打开必要的端口,以便其他人实时查看你的工作。有一些付费的解决方案,比如ngrok,你可以用它来完成。他们很快就安装好了,而且不需要你在网络上做任何防火墙设置。

图片描述

如果你可以转发网络上的端口,你还可以使用SSH进行访问。 其实设置通道与在ssh命令中包含-L选项是一样简单。您甚至可以通过运行Screen或tmux,将通道转换成一个完整的结对编程会话。 主机启动会话,远程人员加入(屏幕的详细说明)。 通过共享终端来启动编辑器,运行shell命令,然后点击共享的本地服务器。 有时网络延迟可能是一个问题,但它是一个稳定的手段来进行结对编程(结合视频通话)。

我们在Zapier使用隧道的另一个很巧妙的方法是测试需要从第三方服务获得回调的功能。 当测试类似OAuth2流或入站Webhook的回调URL时,指定本地主机:8000作为回调URL不会始终有效。因此你可以建立一个公共托管的URL,然后在你的机器上进行隧道。

疯狂的科学家

让我先说一下,这不是我们在Zapier经常做的事,我也不会推荐它。然而,这个解决方案太有趣了,以致于不得不在这里提出来。

在Zapier的一次演讲中,一位同事和我在一个项目上遇到问题,我们想要建立一个配对的编程工作站。问题是我们有两台笔记本电脑,没有外接鼠标或键盘,也没有额外的监视器。这一对开发者要做什么?

我们的解决方案是使用rsync。我们在一个笔记本上安装了一个cron作业,每秒钟运行一个bash脚本:

  1. 从远程笔记本电脑中提取文件,跳过最近在本地系统上修改过的文件。
  2. 将文件从本地笔记本电脑中推送到远程笔记本电脑,保存修改的时间,这样系统就可以同步了。

只要小心保存,我们可以一起处理文件,并保持对方最新的变化。有两个独立的机器有一个额外的好处,我们中的一个可以更改后端,而另一个更新前端代码,给出真正的并行输出。

虽然我已经尝试使用触控板进行绘图,但我讨厌它。我无法与同事进行典型的白板会议,但 远程工作的好处是大于坏处的。这些工具背后的技术总是在改善,不断减少了虚拟办公的不足。谁知道“如何合作”的新概念,将来会如何。在几年后,也许我可以戴上虚拟现实头盔,在虚拟白板上用手上的记号笔画画。


推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文介绍了在RHEL 7中的系统日志管理和网络管理。系统日志管理包括rsyslog和systemd-journal两种日志服务,分别介绍了它们的特点、配置文件和日志查询方式。网络管理主要介绍了使用nmcli命令查看和配置网络接口的方法,包括查看网卡信息、添加、修改和删除配置文件等操作。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • 之前项目在windows2003服务器上设置定时任务,每天执行。现在把项目移植到linux系统。也要在linux系统上设置计划任务。但是之前我从来没有做过。所以多得不 ... [详细]
  • Jenkins教程:使用Jenkins进行持续集成
    【注】本文译自:https:www.edureka.coblogjenkins-tutorial本文将重点介绍Jenkins架构和Jenkins构建管道,并向您展示如何在Jenki ... [详细]
author-avatar
qs08y602lt
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有