如何决定何时编写脚本而不是手动编写?

时间:2009-10-29 20:46:53

标签: scripting automation estimation task-management

有时我发现自己需要做一些可以自动化或手动操作的事情。例如。我刚刚运行了一个特定的脚本8次,每次运行之间做了一个小的改动。我当然可以编写一个可以自动执行此操作的脚本,但在这种情况下,我决定每次都手动运行它会更快。

但有时我意识到在我花了很多时间手动做某事之后,我最好先把它自动化。

任何关于经验法则的建议,在我开始重复流程之前,是否值得花时间编写脚本来自动化它?

澄清:我正在谈论的事情是sysadmin类型的东西,如移动文件,重命名等等,以及DBA类型的东西,如运行SQL脚本导入某些数据(这就是我今天在做什么)。请注意,我是开发人员,而不是系统管理员或DBA。

11 个答案:

答案 0 :(得分:8)

我是“Three Strikes and you Automate”规则的粉丝,如该链接所述。

答案 1 :(得分:4)

我有脚本编写的原因包括

当:

  • 你第二次这样做

  • 它变得不止一步

  • 很容易出错

  • 很容易忘记如何手动执行

答案 2 :(得分:4)

不要只考虑在自动化过程中可能会或可能不会看到的节省时间。还要考虑手动运行流程可能导致错误的可能性。

正确完成后,自动化流程应尽量减少出错的可能性。这可能会导致您自动化,即使它不会节省净时间。

当然,另一方面,如果一个进程自动运行,请务必密切关注它以确保它没有偏离轨道。

答案 3 :(得分:2)

除了显而易见的,编写脚本的一个原因是因为编写脚本的行为甚至比执行任务更有趣 - 并且您可以在此过程中学到一些东西。

对于许多极客来说,做一些聪明,有趣和有趣的事情超过了任何其他好处;所以在这种情况下,即使花费的时间比手动完成任务要长,自动化任务也可能符合这些标准!

答案 4 :(得分:1)

  

如果有一个系统管理   老实说,就是这样:没有简单的系统管理员   任务很有趣两次以上。如果你   发现自己做了一个简单的沉闷任务   超过两次,自动化。

- http://www.ibm.com/developerworks/linux/library/l-punix.html

答案 5 :(得分:1)

如果错误始终与您重复执行的操作集相同,则自动化会减少错误源。

几年前,当我开始使用我的一个(asp.net)项目时,我有一个手动发布过程,涵盖了3个书面页面。我一步一步地将该工作迁移到构建批处理文件(使用命令行选项等来选择单个操作或所有内容)。

脚本完成后,它完美无瑕地运行,每次运行都节省了一个小时的手动工作。

有时,这只是编写脚本的乐趣;)

答案 6 :(得分:1)

这是开发者的网站。

如果您认为可能需要再次执行相同的操作,请立即自动执行此操作。但是不要忘记像YAGNI(你不需要它)这样的法律,并避免在自动化上花费太多时间。只需要一点点哄骗就可以获得适合你的东西。

下一次,重构并改进它,但只是一点点。记住YAGNI。

第三次尝试将它放在一个漂亮的小包装中,你可以给它一些输入,它会在错误条件下运行完成并做出明智的事情并记录错误。

希望你没有使用shell脚本,而是使用像Python这样的真正的脚本语言,你可以随时调整代码并改进代码,直到它成为一个能够远程运行和管理的完整自动化框架。一次调用就有数千台服务器。

答案 7 :(得分:1)

我的经验法则:

  • 如果感觉单调乏味,花一点时间思考如何自动化它,将会有多少工作以及它可以为您节省多少工作。
  • 如果自动化非常容易,或者显然可以节省大量工作,请立即开始自动化
  • 如果您决定不自动化并且手动操作变得非常繁琐,或者如果您决定自动化但遇到困难,请再次考虑,这次更久。

答案 8 :(得分:0)

我的规则很简单:从长远来看,我是否可以节省手动操作或编写脚本的时间。

如果您只需要执行几次特定任务,然后再不执行任务,则可能不值得编写脚本。但是如果您只需要进行微小的更改就需要重复执行任务,那么编写脚本会节省您的时间。

答案 9 :(得分:0)

优秀的程序员往往是懒惰的,因为他们试图以最少的努力和时间来做事。因此,如果它能节省总时间,那么它可能是值得的。

答案 10 :(得分:0)

我的规则就是这样:当它变成你不再需要思考的东西时编写脚本。如果您仍在谨慎地进行操作,仍然需要了解有关该过程的内容,或者仍然对结果特别感兴趣,请不要编写脚本。但是,如果它成为你必须做的事情才能完成某件事,并且做这件事是一件苦差事,那就完全没有脚本。