热门标签 | 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触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • Linux基础知识:Vi与Vim编辑器详解
    Linux基础知识:Vi与Vim编辑器详解 ... [详细]
  • 如何撰写适应变化的高效代码:策略与实践
    编写高质量且适应变化的代码是每位程序员的追求。优质代码的关键在于其可维护性和可扩展性。本文将从面向对象编程的角度出发,探讨实现这一目标的具体策略与实践方法,帮助开发者提升代码效率和灵活性。 ... [详细]
  • 通过利用代码自动生成技术,旨在减轻软件开发的复杂性,缩短项目周期,减少冗余代码的编写,从而显著提升开发效率。该方法不仅能够降低开发人员的工作强度,还能确保代码的一致性和质量。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • 如何在您的计算机上配置Python和PyCharm开发环境
    本文详细介绍了在Windows 10系统上配置Python和PyCharm开发环境的步骤。内容包括Python的安装与卸载、PyCharm的安装与卸载,以及如何在Windows 10中通过双击安装文件“python-3.7.2-amd64.exe”来完成Python的安装。此外,还提供了关于环境变量配置和基本设置的实用建议,帮助用户快速搭建高效的开发环境。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • Linux Shell变量初探:初始值解析与使用指南
    本文探讨了Linux Shell中变量的基本概念及其在BASH中的应用。变量是用于存储可变数据的标识符,能够代表不同的值。文章详细介绍了BASH shell的主要优势,包括强大的命令编辑能力、自动补全功能、命令别名设置、作业控制以及前后台任务管理。此外,还涵盖了编程脚本编写和通配符的使用方法,为初学者提供了全面的指导。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
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社区 版权所有