Step Back and Automate, Automate, Automate
我和某一群程序员工作过,当被要求给出一个模块的代码行数时,就是将文件粘贴到word编辑器里并利用它的“行数统计”功能。他们下一周也是这么干的。再下一周还是这样。真是太糟糕了。
还有一次我参与到一个部署流程繁琐的项目,需要将代码签名并将结果移交到一台服务器中,需要点击很多次鼠标。有的人就把这个过程自动化了,该脚本被执行了上百次,一直经受着考验,效果远超预期。真是太棒了。
所以,为什么有的人愿意一遍又一遍做着重复的事,而不会退一步花点时间把它自动化呢。
常见误区#1:自动化只适合测试用
当然,自动化测试事伟大的,但就止于此了?重复的任务会存在于任何项目中:版本控制、编译、构建JAR文件、文档生成、部署、以及报告。对于这些任务,脚本要比鼠标强大多了好么。执行起单调乏味的任务也更快更可靠。
常见误区#2:我有一个IDE,所以我不需要自动化
你有没有和你队友发生过类似“你在我电脑上(签出、构建、测试)过它么?”的争论呢?现代IDE有数以千计的潜在配置,本质上是不可能保证团队中所有人都采用了完全相同配置。诸如Ant或Autotools的构建自动化系统可以为你提供可控性与重复性。
常见误区#3:为了自动化我还得学习新语言
纯正的shell语言(如bash或powershell)都能助你一臂之力来构建自动化系统。如果你需要通过网页交互,可以采用像是iMacros或Selenium等工具。
常见误区#4:我不能自动化这些任务,因为我无法处理这些文件格式
如果你必须处理word文档、表格或图片部分,对自动化来说确实是挑战。但这真的有必要吗?你可以用纯文本吗?逗号分隔符?XML?一个可以在文本文件里生成绘画的工具?通常,略微调整这份处理就能产生好的结果,并极大地减少枯燥乏味。
常见误区#5:我没空去想办法
你无需学会所有的bash或Ant才能上手。边走边学。当你认为某个任务可以也应该被自动化时,只需要把工具学到足够它能工作即可。在项目中越是早点这么干,就越容易发现这一点。一旦你成功了,你(和你的老板)就能看到对自动化投资的意义。