前言
了解本课程开发背后的动机以及你将从中学习到的内容。
“我永远会选择一个懒人去完成一项困难的工作,因为懒人会想出更简单的方法来完成它。” —— 匿名
作者注
我认为我们都可以认同,从事技术工作可以很有趣,但其中也常常会遇到一些并不那么有趣的任务。对于这些令人头疼的琐碎工作,我倾向于用自己作为开发者的强项——写代码——来消除重复的行政事务。没错,我可能有点懒,但这恰恰是因为我珍惜自己的时间。你可能会惊讶于花在更新 Jira 评论、压缩文件并发送给同事、修改配置文件以及复制粘贴目录上的时间究竟有多少。
在之前的一份工作中,我发现许多任务本可以通过脚本轻松自动化。任何让你感觉重复的事情都应该引起你的警觉。如果还没有,那你现在就应该改变思维方式。仔细审视你每天的工作内容,思考一下,阅读本课程,看看是否能改变你的视角。理想情况下,这确实应该带来转变。
某个周末,当我注意到工作中的重复性任务后,我记录下了从开始到结束的所有步骤,并着手开发了一套自动化命令。这套工具不仅对我自己有效,也让部分同事受益,让我有更多时间专注于 Reddit……哦,我是说,我的工作。
我记得读过一个有趣的程序员故事:他把所有耗时超过九十秒的任务都自动化了。他的咖啡机连接到了局域网,他通过发送指令控制它,并计算自己走到机器前取咖啡所需的时间。他还编写程序,如果咖啡机在下班后十五分钟内仍处于登录状态,就通过 Twilio 给妻子发一条短信,告诉她今晚要加班。
由于过去在 Linux 虚拟机上已经习惯使用 Bash 脚本,我决定用它来实现我的目标。我需要访问文件系统,可以利用强大的搜索命令,存储变量,读取用户输入的标准输入,并使用条件语句来决定下一步操作。完美!但随后我想:我能不能用 Node.js 实现同样的功能呢?
起初我先写了 Bash 版本,但在进一步探索后,我发现可以直接用 npm 创建项目。于是,我重写了整个项目,并向团队展示。好消息是,我和团队被分配了工作时间来推进这个项目,一位技术架构师也热衷于将这个工具整合进我们的工作流程!
在本课程中,你可以通过两种方式来实现所学的代码:一种是将其当作一组全局命令,就像终端中的别名一样;另一种是创建一个构建工具,在部署项目时自动处理你平时繁琐的重复任务。
本课程将帮助你打造类似我所构建的工具,但需要强调的是,每个公司的流程和业务规则各不相同。请不必担心。课程第二部分详细介绍了如何识别并梳理你的工作流程。一旦明确了你的路径和流程,应用本课程所学知识就会变得非常容易。
最终目标
让我们直截了当地说:当你完成本课程后,你应该能够创建全局命令,并开发出一个定制化的 Node.js 构建工具,用来自动化你讨厌的重复性任务。这个构建工具将围绕你公司目标或个人需求进行设计。无论哪种情况,目的都是让生活更轻松一些。毕竟,生活本身已经够难了,对吧?