Most software development projects are designed to automate some kind of process.  Sometimes we automate a manual process, optimize an existing software process or solve a problem that most people didn’t know existed.  Any time I take on a project to automate something I’m always very conscious of how the new solution will affect productivity once it’s fully implemented.

Automating manual, paper-based processes can be very tricky, but provide the absolute highest productivity gains if done correctly.  Always keep in mind that the paper process you are automating most likely came about as a result of some other productivity challenge that the client was faced with.  Make certain that your points of potential failure (servers, databases, email) don’t halt productivity COMPLETELY.  I always try to bake in a failover plan when possible, even if it’s failing back to the paper process you spent all that time automating.  Developers always point to manual, human processes as being error-prone, but humans are able to do a much better job adapting and working around challenges than software ever could.  For this reason I make sure to leave any critical decision-making out of the automated workflow.

The last thing we would want is for our project to become a liability or to negatively affect the client’s revenue or productivity.  It’s the very reason developers have been saying Keep It Simple, Stupid for years now.