早上使用了 gulp 工具来自动完成开发后,强烈的意识到作为程序猿“偷懒”的重要性!偷懒是一个贬义词,平时说到偷懒这个词总是和懒惰、不思进取、缺乏主动性联系在一起。但是这里提到的偷懒,不是传统意义上的偷懒,而是另一种角度的偷懒,这种偷懒是和创造联系在一起。

其实日常生活中很多东西的出现,都是和偷懒有关。例如人们懒得走路,所以一些懒惰又聪明的人就发明了汽车;人们不想爬楼梯,所以那些懒惰又聪明就发明了电梯;抢不到 12306 上的票,所以那些懒惰又聪明的人就开发了自动抢票插件等等。由于本人非常讨厌做无用功和重复的工作,对于那些觉得没有意义的工作,总想着能否用程序来对其进行处理,解我们的双手,让计算机替我们出色地完成工作,从而可以做更多有意义的事情。

软件开发行业上,无论是开发测试、还是部署等工作,更是如此!

例如,编写后台或者页面,要编写大量的代码,通过思考发现,其实里面很多代码都是类似的,重复的工作做了很多,不想写这么多代码,就把这些类似的代码抽象出来,包装成函数或类,或者封装成 jQuery 插件,然后使用几行简单的代码或者 API 便可以实现复杂强大的功能。Bootstrap TableMultiple SelectBootstrap Show Password 等 jQuery 插件正是这样诞生的。

例如,在开发的过程中需要对程序进行测试,步骤是这样的:卸载安装包 -> 进入代码所在目录 -> 更新代码 -> 编译打包 -> 安装新程序 -> 打开新页面。假如每次都做这样毫无意义的重复工作,那很可能会疯掉,于是乎,就有了一行命令便完成一系列工作的 shell 脚本。当然,假如你的项目需要注册用户登录,这些工作也是可以交给程序去做的。Redmine NotificationDBackup Login 等 Chrome 浏览器正是这样诞生的。

例如,平时开发完网站或者项目后需要将其部署到远程服务器上,典型的做法是在服务器开 FTP 服务,然后每次部署的步骤都是:将程序压缩打包 -> 上传到相应的服务器上 -> 登录服务器 -> 解压替换原来的程序。这些工作看似简单,但是在网络及其龟速的情况也能使我疯掉,那么是否也有“偷懒”的办法呢,答案当然是肯定的。这里我们使用著名的好莱坞原则:不要给我们打电话,我们会给你打电话(Don’t call us, we’ll call you!)。在服务器端编写一程序,监听需要部署的程序,假如更新了,那就自动从代码库中(使用钩子的方式)获取最新的代码。这样一来,我们无需做任何工作,便可完成自动部署的工作。

当然,非软件行业同样需要“偷懒”。

例如,公司的资产信息(超级多的 excel 文件)以及考勤信息(考勤系统只能生成 excel 文件)都是记录在 excel 中的,非常不便与统计和管理,试想下有一大堆 excel 文档的情况下,boss 让你统计出公司的全部资产信息或者今年每个人的考勤信息,你会不会坐不住了呢。而资产管理系统和考勤系统就是在这样的需求下诞生了,自动处理 excel,并录入到数据库中,完全 web 管理,还能生成统计信息。

例如,之前写过的一篇文章《如何批量读取 word 的内容和图片》就提到,朋友让我帮忙想想办法批量处理 100 份 word 文档的录入工作,而最后当程序用了几分钟的时间就将需要的内容全部录入完成时,你就可以体会到“偷懒”的意义所在了,假如手动录入还很有可能出现不必要的错误。这样的例子其实很多,有朋友需要选课,于是帮他做了个自动选课插件;有朋友需要获取网页上的一系列数据,生成 excel 报表,于是写了简单的小程序自动生成;有朋友需要投票,几行代码便可以让浏览器自动投票;有朋友需要对 pdf 进行处理,使用几条命令行轻松搞定等等。

我们是这样的一类懒人,我们使用技术改变生活!我们要做聪明又“懒惰”的人,用创造和分享来“偷懒”,从而提高工作的效率和工作的质量!

最后,当你平时在做重复而且觉得无意义的工作的时候,是否也会试着“偷懒”,是否也会想想利用工具或者让计算机来帮我们完成工作呢?假如有,分享下你的“偷懒”方法吧。当然,假如需要我来帮你“偷懒”,Just do it, I will try my best!