为什么某些软件开发人员喜欢打开许多终端窗口并假装自己是办公室的怪胎?

我不假装自己是办公室的怪胎,但是我的标准工作环境包括四个在Linux上运行bash的终端窗口,每个窗口的文本尺寸为132×50,足以让我舒适地浏览代码,而无需太小了,我需要斜视才能阅读文本。

我还有其他一些窗口可能不会让任何人感到惊讶-电子邮件窗口,用于查找文档和代码论坛的Web浏览器,通常打开的0至4个PDF文档之间也包含与工作相关的文档。

就是这样 与许多开发人员不同,我只有一个监视器(1920×1080),并且我倾向于最大化使用我的大多数窗口,除了终端窗口是层叠(重叠)的。

但是,当我处于完全编码模式时,我正住在那些终端窗口中,几乎没有碰过鼠标。 编辑是通过运行在终端窗口中的EMACS进行的,并且熟悉Linux的开发,该开发可以追溯到30年前(甚至在Linux之前)。 1986年,我在80×25文本终端上使用EMACS在4.2 BSD机器上进行开发。 除了现在使用具有更大(虚拟)屏幕的四个终端外,我仍在使用自那时以来并没有真正改变的技术,思维和行动方式以及肌肉记忆。 例如,在30年前,我将通过输入字符串Control-Z!m Enter停止编辑并运行构建。 挂起编辑器,然后重复最后一个以“ m”开头的命令,该命令将生效。 30年后的现在,我停止编辑并通过输入字符串Control-Z!s Enter运行构建。 挂起编辑器,然后重复最后一个以“ s”开头的命令-这将是错误的。 出于熟悉,有话要说。

如果您不了解在开发软件时跨多个终端进行工作的用处,那么您将深表同情。 阅读此非常有用的指南以获得见解:

Unix作为IDE:简介

从广义上讲,有两种类型的程序员:一种生活在集成开发环境(IDE)中;另一种生活在集成开发环境(IDE)中。 以及生活在他的操作系统中的人。

我都去过 我开始在Windows(95之前的版本)上工作,大部分时间都花在了MS提供给开发人员的各种工具上,从FoxPro到Access / Excel到Visual Basic,最后到Visual Studio。

在这项工作的过程中,由于使用Perl扩展了一个应用程序,因此我了解了命令行。 我已经对Unix / BSD / Linux熟悉了,但是并没有真正将它们用于专业软件开发。 但是,一旦完成,我就再也没有回头。

了解了通常称为POSIX工具包的功能之后,您将了解为什么命令行如此丰富的环境,以及为什么UNIX风格的操作系统 IDE。

findgrep,rsync,xargs之类的工具以及其他数十种工具甚至比最复杂的文件管理,搜索和操作工具都强大得多。 他们可以做什么没有实际的限制。

甚至在我编写一行代码之前,我就已经非常依赖命令行了。

例如,当我需要能够在超过100,000个文档的图像档案中搜索具有特定元数据值的文件,然后找出它们的分类方式时,可以使用这些工具在15秒钟内完成。

来自整个城镇。

在编写软件和测试时,我不仅在编写一个模块。 我经常打开六个左右的文件,每个文件都进行更新以适应其他文件中的更改。 然后,我必须能够部署到我的测试平台,然后在我的生产环境中进行经过验证的部署,并在需要时将其回滚。

我舒适的航站楼数量在3到5之间,但是据我所知,同时进行几项工作时,我可以达到近十二个。 我打字的速度比许多程序员慢,但我可以向您保证,我的工作速度比许多程序员都要快。

首先要回答问题的第二部分,没有真正的软件开发人员必须假装是个怪胎。 这是工作要求之一。

每个终端窗口都有其自己的上下文:当前目录,可能是第二个目录,可以使用pushd翻转到另一个目录,可能还包含一些环境变量,当然还有可以使用上下箭头导航的命令历史记录。 在许多情况下,终端会话在另一台计算机上; 通常是一台服务器。 终端会话很便宜,只需移动鼠标即可轻松切换上下文。 (如果碰巧在不允许您指定焦点跟随鼠标的旧版操作系统上,请移动鼠标并单击。)

不只是终端窗口; 一个Web开发人员通常会运行多个浏览器进行测试。[

为什么?

因为我们想模仿电影中的黑客。 现在,每个人都知道黑客是非法的,因此我们不能这样做。 至少通过打开许多终端机并假装很酷,我们会感觉很神。

我听说Google采访都是关于您可以在多个不同的屏幕上切换终端的速度。 有一个阈值得分,高于该阈值将为您找到工作。

干杯兄弟

我将从您的问题中出现的问题开始,然后是:

  • 错误/未经证实的论点是,开发人员喜欢开很多终端; 而您观察到的是它们确实打开了很多终端
  • 他们假装极客的错误/未经证实的论点

实际上,您可能会这样问:为什么有些软件开发人员会打开很多终端? 这使他们看起来很怪胎。

上一次,我做了一些有趣的集成项目,只是检查我是否还记得编程。 我使用Rabbit MQ,MySQL和PHP(是的,我知道这不是代理的首选,但我的团队不会讲Java或C)。 无论如何,我最终得到了两类代理(侦听器和提供者)。 当涉及单元测试时,我有:

  • 3个提供程序代理实例,每个记录到单独的终端,每个从不同的数据库实例读取
  • 两个侦听器代理实例处于打开状态,每个实例都记录到单独的终端上,都从Rabbit的队列中读取(一个作为备份代理到测试代理崩溃)
  • 一个脚本将随机数据推送到3个不同的数据库中,并在自己的终端中运行
  • 一站式登顶

这意味着7个终端窗口。 我觉得怪胎吗? 一点也不。 只是需要他们。

在影响人们之前,请先考虑一下事情。

我当前的终端窗口的外观…..

  1. Trunk(用于单元测试的构建环境–即使用主机编译器构建代码)
  2. Trunk(目标的构建环境–即使用ARM(交叉)编译器构建代码)
  3. 私人开发分支(用于单元测试的构建环境)
  4. 私人发展处(交叉编译)
  5. VIM
  6. VIM
  7. VIM
  8. 串行控制台到嵌入式设备1
  9. 串行控制台到嵌入式设备2
  10. 设备1的Syslog消息传递
  11. 来自设备2的Syslog消息
  12. 用于打包构建的自定义脚本(即,将其设置为在NFS上运行)

我不是极客,但是在我正在开发的reactjs产品中,我至少需要打开3个终端选项卡:一个运行一个文件观察器,它将我的代码转换为浏览器可使用的JavaScript,一个运行本地Web服务器,第三条用于git命令和检查正在运行后端服务的docker映像。 终端和命令行界面是大多数开发人员必不可少的基本工具。 它并没有像使用适当的工具来完成工作那样冒充贬义。

多个终端是提高开发人员生产力的最大方法之一,而且实际上并不那么昂贵。

您可以将代码放在一个终端上。 您的执行登录另一个。 电子邮件或第三个窗口另一部分的闲置时间。 然后可能是您的IDE中的另一个选项卡,位于第三台显示器的另一部分。 您还可以将一台显示器设为纵向模式,这使您可以灵活地运行以纵向模式更好地工作的任何工具。

我不知道要假装自己是一个怪胎的开发人员,还是不是一个怪胎的开发人员都不会给人这种印象。

我知道一些开发人员,如果他们在新的工作地点没有多台显示器,而这些显示器可能会带回家。 我已经看到一些开发人员从家里带入椅子以及各种各样的东西。 因此,不要以为公司在无用的东西上花了很多钱。

我出于个人原因一直都在打开几个选项卡:这确实很有效率。

我通常有一个用于git的选项卡,一个用于运行Ruby终端以简化脚本的选项卡,几个具有活动服务器和守护程序的选项卡,以及一个用于所有其他内容的通用终端。

为什么? 如我所说,方便。 在编写脚本时,有时我希望使用bash(有时是Ruby)进行操作,切换选项卡比手动退出并重新启动要容易。 此外,我可以使用诸如edward之类的服务在一个选项卡中运行所有服务,但是如果我想查看多个特定服务的输出,通常切换到该选项卡比键入尾部更为方便。命令。 另外,如果我需要运行一个非常特定的git命令,例如“ git push -f origin :master”,并且我需要先做一些其他工作,请在几次按向上键和需要“搅动”并重新输入命令对我来说值得10秒钟。

是的,它看起来有些怪异,在选项卡之间来回切换,在一个选项卡中键入一些命令,然后再切换到另一个,然后继续。 但是,它的生产力也绝对很高。

您不相信多个终端有用吗? 我向你保证,他们是。 软件开发人员之所以使用它们,是因为这是出于战术目的,而不是假装是极客

现在我有10个终端打开。 1是一个偏远的上流社会。 另一个正在打开一个烟灰通道,使我可以访问另一台机器。 我用另一个来构建我的代码并将其推送到远程计算机。 另一个是进入该机器以在那里执行命令的棚屋。 另一个正在运行一个程序,以使我的代码在多台计算机之间同步。 另一个是烟灰缸,它允许我将远程桌面连接到远程mschine。 当我不想打扰其他终端时,我用它来执行其他命令。

我还将使用它们来跟踪不同的命令历史记录以便于使用。 一个可能是该命令确实使用了此程序包,另一个是第二个命令。 也许我会为一个长期运行的程序准备一个。 有时我对几种不同的包装持开放态度。 我可以轻松触发所有这些的构建。

这要看我在做什么

当我开始专业编程时,您的终端是物理的东西。 必须关闭编辑器以检查其他内容,切换到文字处理器以添加到文档或进行一些快速研究始终是一个问题。 即使对于非编程任务,例如研究如何在家中进行一些项目,甚至跟踪我最喜欢的运动,我通常也会使用多个Windows和选项卡。

此外,我总是发现在命令行上更容易进行版本控制。 另外,一旦您知道要使用的确切命令,命令行通常会更高效。 最后,我了解我自己的大部分脚本,不想浪费我的时间将它们变成图标和其他东西。

一个用于编译的终端,一个用于确保构建正确的终端。 我可能需要对某些内容设置权限或访问操作系统的某些部分或注册DLL。 从终端打开注册表非常容易。 我可能正在运行一个服务,该服务会显示在终端中。 在进行软件开发时,有很多理由要打开终端。

最好问他们为什么这么做,因为很难量化“假装”

作为一名程序员,我一次打开40–50个窗口(很多可能是终端,很多是浏览器窗口)并不罕见。 尤其是当我一次同时处理多个概念(4-10个窗口解决一个问题)时,这并不是假装,只是使整个系统保持功能状态。

即使没有编程,我几乎总是打开多个窗口。 我也更喜欢多台显示器。 使用终端或命令行界面可以有效地完成许多事情。

如今,测试确实非常重要。 打开多个终端可以通过运行脚本轻松调试不同环境中的测试结果。 不用关闭会议,我们中的一些人只是将其保持打开状态,因为我们知道无论如何都会很快需要它。

你只有一只眼睛吗? 偶尔拥有3或4个完全独立的眼睛会更好吗? (我在一个屏幕上打开了我的电子邮件应用程序,在另一个Quora上打开了我的浏览器。

那些不假装的人实际上正在对所有寡妇做一些工作。 但是那些假装的人可能实际上是在假装自己像其他人一样工作。

我不会“装作一个极客”,每个人通常都有一个目标。 这个问题是超低质量的。

我们不喜欢或假装,我们这样做是因为这是必要的。