自动化的艺术

2020-09-27 00:59:41

我不确定我对自动化的热爱是来自于不喜欢把同一件事情做两次,还是出于提高生产力和使一切变得更有效率的总体愿望。像许多程序员一样,当我发现自己在做手工任务时,我经常问自己“这是不是可以编写脚本”。

我最近读了沃尔夫拉姆关于他的个人生产力基础设施1的文章,受到了启发。我也写过我的个人基础设施2,但没有像沃尔弗拉姆那样深入,也没有像沃尔夫拉姆那样关注生产力。没有比现在更好的时机再来一次了!

我不仅想谈谈我在生活中自动化任务的一些方式,我还想花一些时间来解开人们日常使用的许多东西中开始出现的常见自动化模式。苹果的快捷方式、家庭自动化和IFTTT以前所未有的方式向大众提供自动化模式。在深入讨论细节之前,让我们先回答为什么的问题。

时间是世界上最宝贵的资源之一。如果你可以做些什么来腾出更多的时间给自己,你为什么不做呢?当我自动退出一项任务时,我会将执行上述任务的负担转移到其他脚本、服务、API或所有这些的组合。

就我个人而言,当我在构建东西、解决问题或学习新东西时,我感觉自己处于最佳状态和最有效率的状态。在这些情况下,这都不包括“手动做一些本来可以通过脚本/自动完成的事情”。或者当它执行…时。我把它自动化了。在任何情况下,当我发现自己处于自动化的位置时,我都会将其自动化。特别是如果我认为自动化任务所花费的时间比将来手动完成任务所花费的任何时间都要少。这是最终的回报:时间。

$$\BEGIN{公式}时间\增益=(时间\执行\任务\手动)-(时间\自动\任务)\结束{公式}$$。

重要的是要注意,在上面的等式中,自动化任务的时间还包括将来您可能必须修复的自动化本身中的任何错误。

通过自动化任务,我可以把时间集中在我感觉最好和最有效率的事情上,同时更有效率,做得更多。

对我自己来说,当我把事情自动化时,我倾向于先让它工作,然后让它变得漂亮。在上面的等式中,目标是将自动执行任务的时间保持在最小。通过让事情先运转起来,而不是浪费时间去美化它,我发现我可以赢得最多的时间和最有效率的工作。之后,清理我用脚本或API弄得乱七八糟的东西,在你开始工作之后就会容易得多,速度也快得多。你可以想象,我的大多数自动化产品一开始看起来就像一台鲁布·戈德堡(Rube Goldberg)机器。让我们深入了解一下我自动化的一些最新内容。

对于我们的初创公司来说,我们的招聘速度相当快。我想确保我们的入职流程是流线型的、始终如一的。手动将新成员添加到GSuite、Zoom和GitHub团队是一种巨大的时间浪费,而且往往会导致人为错误。我使用Rust脚本自动将新人加入到我们所有的工具中。这也是我修补Rust编程语言的一个很好的借口。我基本上自动化了“铁锈”中首席信息官的角色。

现在,当员工加入公司时,他们会被添加到一个配置文件中,然后配置文件会自动在GSuite中设置一个电子邮件帐户,为他们创建一个Zoom帐户,将他们添加到所有合适的GitHub团队,然后向他们发送一封电子邮件,列出所有工具和他们的帐户。随着每个新员工的反馈,它也得到了改进,这使得它变得更好。

我们在OxecComputer/cio开源了很多我在Rust中用来做这件事的库。

我最近自动化的另一件事是清除我每天收到的所有电子邮件收件箱中的时事通讯。其中大多数是人们博客的订阅,比如晨报3。因为这些博客实际上大部分是RSS源,所以我现在把RSS源的更新通过管道传输到Pocket 4。这样,我每天都可以在Pocket上查看我要阅读的内容列表,而我的电子邮件收件箱就是用来阅读的。我发现,当这些时事通讯被送到我的收件箱时,我实际上从来没有读过它们,因为我倾向于把我的收件箱作为待办事项列表,而且我会立即将这些时事通讯存档,因为它们不是优先事项。现在,我把我的收件箱清理得一清二楚,实际上有了一个地方来存放我以后想要读的东西。

说到电子邮件收件箱…。我对Gmail过滤器绝对是个固执己见的人。在撰写本文时,我有72个不同的过滤器。我通过配置文件不断改进电子邮件的标签和自动存档。这个管理系统是我为Gmail过滤器制作的一个小GO工具,叫做gmailfilers5。

对于邮件列表,我倾向于将邮件存档,除非它们是直接发送给我的,无论是抄送还是发送到。这让我的收件箱保持干净,同时也确保每个邮件列表都被分类到自己的Gmail标签中,这样如果需要的话,我可以很容易地查看所有的邮件。通过在配置文件中维护Gmail筛选器,而不是在用户界面中维护,我节省了大量时间来尝试查找我想要编辑的筛选器,并对其进行编辑和保存。此外,如果我犯了一个错误并想要还原它,我现在有过去过滤器的git历史记录,所以这就像git还原一样简单。

这些只是我在日常生活中自动化的一小部分事情。如果您对其中更多内容感兴趣,请参考我在个人基础设施上的原始帖子6。

作为开发人员,自动化并不是一个新概念,我们倾向于通过持续集成(CI)和持续交付(CD)来处理自动化的日常模式。对于世界其他地区来说,看到自动化模式开始在消费产品中发挥作用,这是很有趣的。

最近,我换回了iPhone,买了一台iPad。我很高兴能使用新的“快捷键”功能。快捷方式允许用户执行多个任务,并将它们一起简化为一个操作。例如,你可以在从办公室回家的路上创建一个快捷方式:获取最新的交通报告,在开车回家的路上播放你最喜欢的新播客,然后在你回家时打开灯(假设你有智能灯)。您可以根据已安装的应用程序和您的首选项构建任何您喜欢的应用程序。它确实具有相当的可扩展性,同时也很容易被iPhone的大众市场采用。在新冠肺炎和在家工作的时代,我相信你可以想出一个不同的例子;)。

说到可以自动打开的灯,家庭自动化是更广泛的观众可以为自己创造自动化模式的另一种方式。在Google Home、苹果的Homekit和Amazon Alexa的采用之间,越来越多的人看到了技术可以释放的力量,以及通过自动化日常任务节省的时间。这些设备中的大多数都有创建和使用“例程”将多个任务链接在一起的概念。

例如,当我离开家时,关掉所有的灯,设置温度,使空调不再运行,然后打开安全系统。或者,当我说该睡觉的时候,关掉所有的灯,把安全系统设为“开机回家”。这种用户体验和易用性使消费者能够像开发人员通过编程和编写脚本一样提高工作效率并节省时间。

当然,如果消费者没有受过教育,物联网设备也有阴暗面。无论是你的灯泡、恒温器、家庭安全系统还是冰箱,研究你购买的物联网设备的安全性都是很重要的。

If-This-Then-That(IFTTT)已经存在了相当长的一段时间,但我想花点时间把它作为一种早期的方式,把自动化带给更多的观众,而不需要人们编程。IFTTT克隆现在一毛钱一打。还有Zapier、Huginn和Automate.io,仅举几例。所有这些产品都有一个共同点:通过将各种任务组合并链接到一个单一的自动化工作流程中来提高个人工作效率。

我很高兴自动化的模式已经开始成为主流,这样大众市场消费者就可以看到开发人员通过脚本实现的无需编程就能获得的生产力收益。用户界面可能不同,但目标是相同的:节省时间并消除重复执行手动任务的需要。开发人员在编写脚本使他们的生活变得更容易之后的感觉不应该是排他性的。我希望在未来,我们继续看到更容易、更有创意的自动化方式,同时赋予每个人相同的自动化超能力,而不仅仅是程序员。