摘要:没完没了地重复执行管理任务让我倍感烦恼,难道这是一个程序员的宿命? 我所具有的脚本编程能力迅速让我冷静下来,看来在学校里学习一些基本的程序设计真的很重要。任何工作都有可能从几个简单脚本中获益,从而自动化执行任务。 我们招聘非开发人员职位的时候,也会有这样一种心态希望应聘者...
拒绝重复劳动,以自动化的方式取而代之,这就是黑客的方式!
没完没了地重复执行管理任务让我倍感烦恼,难道这是一个程序员的宿命?
我所具有的脚本编程能力迅速让我冷静下来,看来在学校里学习一些基本的程序设计真的很重要。任何工作都有可能从几个简单脚本中获益,从而自动化执行任务。
我们招聘非开发人员职位的时候,也会有这样一种心态——希望应聘者具备以自动化方式解决问题的能力。我们更多地在自动化方面投入研究,我们的团队也就可以更少的减少重复执行任务的时间。我们的团队成员越多,获益就越大,工作也会变得令人愉悦。
这周早些时候,我遇到了一个实际问题。提交费用报表的时候到了,我感觉不太舒服。可能出于某些原因,我们的会计让我们逐行填写一个电子表格,以明细每项费用。
在许多公司,人力资源和财务部门每天将处理大量的电子表格。我想,每个月有数以万计的人重复着类似的事情,白白浪费着时间。如果他们有一点儿编程经验,我想他们会非常认同我的观点,并试图寻找一种更好的解决方案。这就是我所说的所谓招聘非开发人员职位时的心态。即使他们不能自己设计解决方案,也应该知道,一定有更好的解决方案存在!
解决思路
1.快速定义需求
- 记录每笔费用的详细信息,包括日期、金额和说明
- 可以按月或按人进行查询,生成报表
- 保留数据副本
2.考虑一下票据与工作流之间的关系,这是主要问题
- 发票可能是物理的,也可能是电子的
- 费用会随机产生
- 如果每个人自己保管一个月,票据可能会遗失
- 每个人都要按月填写费用条目,耗时太久,效率太低
3.多动动脑子,用智能的方式减少痛苦
要避免每个人长时间保管收据,以及从数以千计的邮件中痛苦地查找电子发票,我们可以考虑将发票以电子的方式进行集中存储。存储的位置可以是一个电子邮件地址,例如“expenses@mycompany.com”。
为了避免逐个查找邮件,可以考虑采用某种自动化的方式从邮件中自动提取出票据信息。这样的话,数据库可能用得到。要想生成报告,数据库可以在结构化查询语言的基础上输出特定的信息。我们可以将数据存储在以分隔符(如“,”)分割的文件中,该文件可以用Excel之类的软件打开或导入。
另外,我们最好先看看别人是否已经有了更好的解决方案,然后决定是否需要自己动手实现。(请留意原文链接中给出的解决方案)
技术概述
如果你对技术细节感兴趣,我可以透露一些。我将一个名为Mailman的Ruby程序托管在Heroku的cedar stack之上,每分钟轮询一次邮件服务器。邮件附件保存到AWS S3上,票据信息则保存在一个PostgreSQL数据库中。 借助一个名为Tinder的库程序,可以在第一时间通知公司,大家的辛苦钱来啦!使用另一个托管在Heroku上的Rails程序,可以把数据以HTML或CSV的形式展现出来,从而可以按照日期或人员进行查询。
电子邮件中应该会有合计项,采用OCR(Optical Character Recognition,光学字符识别)技术对票据图片进行识别,似乎显得过于复杂。如果有人觉得步骤麻烦,可以试试Amazon Mechanical Turk(面向程序员的应用协作市场)。
如果大家感兴趣,我乐意在github站点分享代码。
结语
拒绝重复劳动,以自动化的方式取而代之,这就是黑客的方式!
原文链接:Automate Everything