Looking back at my time working on Sifter, my second biggest regret is that I didn’t automate more. (The biggest was stubbornly refusing to implement some features we received a lot of requests for.) I’m not talking pure software automation, in the sense that no humans are involved, but business automation. Judicious business automation saves time and creates happier customers. And, as an added bonus, it minimizes the need for training. That training could be for new employees or a new owner. If you’re discerning about automation, everybody wins.

It sounds so simple, but automation isn’t black and white. Each process could be automated anywhere from a little, to needing no human intervention at all. And automation can be a time-saving pleasure or a rabbit hole of optimization. The degree to which you should automate a task depends on several variables.

Automation–done well–is a priceless investment. It will pay dividends for as long as you run the business. For far too long, I viewed automation as a distraction from core work. The truth is, doing the tasks manually was the real distraction. As the business grows and new team members join, more automation means they’re able to contribute faster instead of learning tedious manual processes.

Automation also benefits your customers. Becoming more efficient enables you to manage your time better to work on the things customers need. Of course, if automating a particular process saves your customers time or pain directly, that’s an even bigger win.

Don’t overlook the cost of context switching. Even if a task takes a minute to perform, it’s likely that the interruption-driven nature of context switching is costing closer to five to fifteen minutes of productivity each time you perform the task. Unless a task can be done in under ten seconds without dropping what you’re doing, it’s likely to be costing you more in context-switching.

Only automate when you’re familiar with the process and you’ve done it a handful of times manually. Your familiarity with the process will allow you to automate it to the right degree.

Automation is contextual and progressive, not binary. Take steps towards better automation rather than fully automating in one fell swoop. For one, you’ll get it wrong; for two, you may throw your cost/benefit equation out of whack. Automate just enough and improve as needed.

Don’t automate sincerity. As a small business, closeness to customers is a competitive advantage. Don’t fake emails from the CEO if the CEO won’t be responding to customers who reply. When your customers receive what looks like a genuine email from the CEO and reply to it, only to get an answer from customer support, it’s deceptive and chilling. The next time they get an email from the CEO, they won’t trust it.

Think twice before automating human discretion out of a system. It’s one thing to automate repetitive tasks that don’t involve judgment, but it’s quite another to remove the human element when it’s a key part of the process. This is particularly tricky with support. While many support cases look similar on the surface, they’re often subtly complex enough that it makes sense for the process to remain manual. Create the tools to empower your team to give better responses and help more swiftly, but keep them involved.

Keep balance in mind. If a customer can create an account online without intervention, they should also be able to cancel without intervention. If you can build a billing system to automate taking their money, you can build a cancellation system to automate stopping taking their money.

Finally, make sure automation doesn’t create more problems than it solves. Writing additional code always introduces the opportunity for more bugs. If you engineer a large system to solve a problem, there’s a good chance the system will require more maintenance than doing the process manually. Keep your automation responses proportional.

One of the most universal examples for automating self-service is trial extensions. If your software uses limited trials, there’s no need to require customers to contact support to extend their trial. The vast majority of trial extensions will be requested when someone simply didn’t have time to use the trial, and your system will have data to objectively know whether someone used it. If someone never logged in, you know they didn’t get to use the trial; if they haven’t created any data or invited any team members, they haven’t used it. In these cases, you can simply provide them with the means to extend their own trials. This will simultaneously reduce support requests and increase conversion.

With software, automating development processes will always be worth it. In particular, testing and release management are ripe for automation. These are tasks you can be confident you’ll need to perform indefinitely. Script a resilient release process, and write automated tests. Then invest in a good continuous integration solution.

Exception handling is another great way to add layers of automation to your application. Instead of simply generating an exception and logging it somewhere, have your system automatically record the affected user, and email them in plain language to ask for more information. While exception notifications and stack traces are helpful, it’s often the human context that helps get to the bottom of exceptions.

Ensure you don’t accidentally email someone for each exception: once a week should be fine. You may also want to keep a list of exception types for which you don’t need to bother your users because the stack trace is always enough information for those specific types of exceptions. Make the debugging automation opt-in, or keep track of how often users are being emailed and give them a way to turn this off. Alternatively, you can present a form on your exception page that requests more information. In my experience, however, when people are in the middle of a task, they’re less likely to provide any additional information.

Like many things, good automation is an art, and art is driven in large part by inspiration. The best source of inspiration is doing front-line support because customer requests are a gold mine of automation opportunities. Enabling customers through self-service can increase their happiness, reduce support requests, and help everyone. Self-service shouldn’t be a way to force them to do your dirty work, though. It’s a way for them to reduce friction so they can achieve their goals with less effort.