BoredomIsaSmell. Possibly the only smell you should heed when it comes to the decision to automate.
Examples of non-boring tasks, which would be less-suited to automation, with their boring counterparts, which would be more beneficial to automate:
-
Not boring: Coming up with a style guide for a new language
-
Boring: Re-indenting code
-
Not boring: Higher-level search-and-replace (i.e., finding all code that directly uses the database and making it use an indirect layer)
-
Boring: Literal search-and-replace (change "getSelectSql" to "selectSql")
-
Not boring: Extracting an interface
-
Boring: Implementing an interface (in a language like Java)
-
Not boring: Choosing between delegation and inheritance
-
Boring: Writing delegation code
-
Not boring: Planning
-
Boring: Collecting metrics
-
Not boring: Writing test procedures
-
Boring: Running test procedures
-
Not boring: Determining how to build and deploy the software
-
Boring: Building and deploying the software
-
Not boring: 20%
-
Boring: 80%
I HaveThisPattern. Every time I find myself saying "this is boring" while working on my Web site, I end up creating another script to AutomateBoredom: site maintenance, uploading changes, HTML validation, link checking, indexing, etc. Editor macros insert tag pairs while writing content. New pages use a standard page template for boilerplate material. I now spend almost all of my Web design time writing and editing content, not formatting, without using a ContentManagementSystem. (My site validation script indicates successful results with a GreenBar, and incorrect pages produce a RedBar. Reminiscent of a UnitTest, but written before I'd heard of them.)
This may explain part of the popularity of blog software: it lets people create a well-organized site without mucking around with HTML, alleviating the need to AutomateBoredom entirely.
See ThreeStrikesAndYouAutomate, AreBusinessAppsBoring