热门标签 | 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. 将文件从本地笔记本电脑中推送到远程笔记本电脑,保存修改的时间,这样系统就可以同步了。

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

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


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
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社区 版权所有