January 3, 2012

Automate Everything

I recently attended the Great Lakes Software Symposium, where a lot of attention was given to continuous delivery.  And one of the takeaways I got from these discussions was that our friend the computer is the fastest, most reliable, and most accurate worker on the team.  He's also relatively cheap, doesn't get bored, and is willing to work crazy hours.  He should thus be given as many of the repetitive and lower-value tasks as possible - and preferably all of them.

On the other hand, you are a far brighter, more innovative worker.  You're capable of coming up with solutions that your computer co-worker couldn't fathom, making you way more valuable than him.  Therefore you should be given the problems that require the most insight and creativity.

To free you up to focus on the difficult and high-value work, everything that can be automated should be automated.  Everything.  Not just building and testing, but also deploying, configuring your application, configuring the application's environment, resolving issue-tracking tickets, setting up a new developer's local environment, adding a new developer to a project (adding him or her to version control, issue tracking, etc.), and any other repetitive task you can think of.  This is generally the fastest, safest, and most cost-effective approach to delivering software.  Making humans work on stuff that could be automated is unreliable and a waste of time, talent, and money.

0 comments:

Post a Comment