People make mistakes.
Anybody who claims that they never make a mistake is not being honest with you or themselves.
Sometimes mistakes matter and can have devastating consequences – in a hospital, onboard an aeroplane, at your bank. Mistakes aren’t all bad though, we really do learn by making mistakes. Sometimes a mistake is simply unimportant, and mistakes (or the willingness to make mistakes) are an intrinsic part of creative thinking.
What we really want to do is to stop mistakes happening in the wrong place.
Mistakes happen for many reasons and it is easy to blame individuals when mistakes happen, but more often than not we shouldn’t – instead we should examine the processes that allowed mistakes to happen. People often make mistakes doing boring, repetitive tasks – tasks that we are ill suited to from a psychological and evolutionary point of view.
The best way to avoid making a mistake is to design the mistake out of the process and change the situation or process so that the mistake cannot happen. You never hear about Window cleaners falling off ladders these days because they don’t use ladders, they use telescopic brushes instead.
If you can’t change your process, then the next best things is to automate a solution. Take people out of the loop and let them get on with something else. Fortunately boring, repetitive tasks tend to be exactly the sort of tasks that can be automated.
Writing software, building applications and websites, managing databases, configuring servers – these are part of the life of a digital agency. They involve creativity and problem solving, they can be hard work, but they are also interesting and often fun. Unfortunately there is also a great deal of boring, frequently complex work that has to be done on a regular basis without any mistakes; good examples are building assets, deploying code and updating software.
But what about checklists?
Checklists also help avoid problems and mistakes and they have a really important role to play, but they aren’t a panacea – checklists can easily create a false sense of security. A checklist takes time to complete and it’s also possible to make mistakes when completing a checklist. A good checklist for a non trivial process is actually surprisingly hard to write and checklists themselves need to be tested to ensure that they work. Perhaps worst of all people lose respect for a bad checklist and can end up not completing it properly.
Ideally a good checklist should be short and focussed, unfortunately checklists often consist of checks like ensuring that Google Analytics code has been added or that Favicons exist. Ideally these shouldn’t even be in a checklist, a better approach is to use build tools to do this basic setup and then use automated testing to confirm that your setup is correct.
Luckily for us these days there are a multitude of software solutions designed specifically to help us automate the vital but boring work away. Every business has different processes and workflows but there will almost certainly be a set of tools that will work for it. Tools like Gulp, Grunt, and Webpack allow us to build our front end assets – concatenating, minifying and versioning our files (we like Gulp and Assetic). Vagrant allows us to easily create and share reproducible development environments (and gives us the ability to make these development environments as arbitrarily close to production as we wish). Puppet, Chef, Saltstack, Ansible and Fabric can all be used to configure servers and deploy code (we like Puppet and Fabric).
Automation isn’t free, it requires investment in skills and development/configuration time but there is a clear business case, and it isn’t all or nothing – even a small amount of automation can have a positive impact, reducing time spent fixing mistakes and allowing your team to work more efficiently.