One mistake that many companies fall into is trying to completely automate certain business processes. Sure there are a lot of business processes that are just screaming to be automated, and some of them seem to have been invented just to be automated, but sometimes a bit of thought should be put into whether or not we should automate them.
A lot of programmers want to automate anything that is able to be automated, no matter how convoluted the process may be. They will jump through hoop after hoop trying to shove a business process that involves a small amount of human intuition into a complex algorithm that tries to simulate what a human would do. In some cases, especially for large companies, dealing in large volumes, this can make sense to try and write hugely complex algorithms to solve relatively simple problems since the savings are multiplied huge numbers of times.
For example, look at credit card applications. The process of reviewing a credit application can be very relative. Someone could have blemishes on their credit that are of little concern to a credit card company. I used to work a lot with credit scores years ago (when writing insurance software) and one thing I found interesting was that people will often get negative items on their credit histories because of healthcare insurance companies. What will happen is that someone will go to a doctor to have a procedure performed and the doctor will then send a bill to the insurance company. The insurance company will drag their heels on the bill while they are deciding whether or not they are going to pay or how they can get out of paying it. The doctor doesn’t get paid for months and decides to send a bill to the patient. They don’t care how they get their money, only that they get it. Well, the patient gets a bill for, lets say, 40,000 dollars. The patient obviously does not have this kind of money and calls their insurance carrier who just talks them in circles. The doctors office eventually gets fed up and sends the bill to collection which puts a negative mark on the person’s credit. Eventually (hopefully) the insurance company relents and pays the fees, but not before damage has been done to the person’s credit. This doesn’t happen as much anymore as it used to, because most of the time all of this is worked out before the procedure happens, and there are better processes in place to make sure that these things don’t happen.
The whole point of this though, is that for a lot of purposes these medical related negative items on your credit history are irrelevant. So, lets say a credit card company decides that they are going to devise a computer program that is going to try and approve their applications for them. They really have two options, they can devise an algorithm where they keep piling on rule upon rule upon rule in order to attempt to automate the process more and more. In this way they are cutting out the need for a human to ever look over the application, or they will devise an algorithm that covers the 90% case, and then passes on the last 10% that it cannot process to a human in order to have it reviewed. In the case of the medical negative marks you would have to either work into the system an algorithm that would selectively factor in different marks on their credit history (based on the customer pulling the score and for what purpose they are pulling it) in order to determine a credit score, or they would have to have someone at the office pulling the credit score review each credit response and try to determine if there is anything that they can safely ignore. Obviously for these credit agencies this choice is easy, they calculate thousands of credit scores per day. They would never be able to keep up if they were processing these manually, so they have invested huge amount of resources in order to completely automate every last bit of the credit scoring process.
So, what is the best option for your process?
Well, like all things in life, there is no clear answer. There are numerous factors that go into whether or not you would want to automate a process like this. In this situation, here are just a few of them:
1) Is this process able to be automated at all? Is there some part of the process that cannot be calculated and can only be decided by a human being? If so, how often will this case come up? Some processes simply cannot be automated because it requires a judgement call that does not fit into an algorithm. Other processes don’t have these cases, or if they do, they can be replaced by an approximation of this judgement call that is good enough. If you replace the judgement call with a approximation, how much will it save versus the potential loss in accuracy of your decision?
2) Should we automate this process? This is a hard one for developers, because when it comes to software, everything should be automated. Leaving anything to a human should be avoided at all cost because humans make mistakes and when dealing with software there is so much minutiae. This doesn’t translate to business processes though. Think about how much you hate those automated call systems that most companies have setup. They try to trap you in a web of questions in order to try and get you to not talk to a person. This person is the most likely avenue to have your issue resolved, but every second you are on the phone with them you are costing them money. So they looked at the business and they did their cost calculations and they said, if we automate the call system and we can solve 50% of problems without our customers talking to a person then we can cut our call center staff by 50%. And that is true as long as they can actually solve 50% of calls without someone talking to a person. The loss here is immeasurable though. Every time I have to call up Verizon on the phone I lose just a bit more of my patience for them. Eventually I will just start off every call screaming. The gain here is measurable, but the loss is not easily quantifiable, and so the business is likely to take the one with numbers. This leads me to my next point…
3) What is the potential loss/gain if we do not automate it? This not a strictly monetary decision as we looked at in the last number. This question can involve many factors that are very hard to quantify. The only thing that I can really say is to try and decide what values are most important to your company and go with those. If your first and foremost value is customer service, then if you are in a situation where one of your variables is a negative effect on customer service, then even though this may be hard to quantify, you need to put a large emphasis on that variable. Many companies claim to be customer oriented, and it is these kinds of decisions that really show their true colors. Hopefully the processes that you are involved in don’t have a lot of politics, non-quantifiable variables, and other complications in calculating benefits and losses.
4) Will it cost more money to automate it than it does to do it manually? Programmers may cringe at that questions, because we innately want to automate everything. There has been times where I would have been willing to program replacements for all of my co-workers! 🙂 The real question remains though. If there is a task that only occurs once a month and it takes someone 20 minutes to do it, then how much does it cost to manually perform the task versus how much time and resources would it take to automate it? If you are a small company then other questions might come into play, such as whether you even have the resources available to automate it if you wanted to. Some tasks could be automated, and even potentially save time or money, but how long would those savings take to achieve versus how much can you afford to spend your resources now?
5) Will we lose accuracy in our decision making if we do it? Sometimes you will be in a situation where automating a process will cause you to have to make less accurate or informed choices. If automating the process will cause a huge savings in resources while only losing a small amount of accuracy then the choice is simple, but if automating a process would cause numerous poor decisions to be made then the choice might not be so simple. Especially if the decision that is being made is core to the business. So how do you make this decision? Well, you have to decide how important the decision is, how much accuracy you will lose, and how much savings you will get from automating. These numbers are of course all relative, but if one of these variables is significantly higher than the others then the decision will be fairly simple for you.
6) Will we lose our “human touch?” This decision is actually far more in depth than most people make it out to be. Some people see a process and say, yep, this can be automated and it will save us X dollars per year in labor, so lets do it. But consider this simple example, which is not really a business process per se, but it illustrates the point. An online store has a customer checking out who enters in failing credit card information. For most companies the answer is simple, display an error to the customer telling him that his credit card information failed and that he needs to try again. But for other (more thoughtful) companies, this is not a clear cut decision. Some companies would rather let through the failing card so that the merchant themselves can contact the customer to get proper payment. This way the customer cannot just “give up” on the order and abandon it. By letting the customer place the order, the merchant is securing a sale that could have potentially been abandoned. What if the failure was a temporary problem at the card issuers bank? The customer would have had little opportunity to fix the problem and would have moved on. To a small merchant, this sale might represent a good chunk of that day’s earnings and therefore they would rather accept the order and spend the time to follow up, rather than potentially lose the sale. On the flip side though, a large store who does a huge volume may not see this as a good way to have their employees spend time. The way they see it, they might have an occasional lost sale, but if we have to hire an additional customer service rep to follow up on all the failed cards (most of which would probably have been fixed and resubmitted by the user) then we would lose money. So, is your business personal with your customers? If so, then this is very important, otherwise (if you were something like a military contractor) it might not be much of a factor for you.
7) Will we lose agility? Once a business process has been written into software it is much harder to change than an informal process. Especially in larger companies, changes in software are usually done by months and quarters, not days or weeks. Once you codify a business process, it may take you a long time to change it, or you may resist changing it, because you don’t want to go through the hassle of changing the software. If you try to account for this, and devise a system that non-technical people can modify, how much will this cost you? Creating a system that will allow non-technical users to modify processes could add quite a bit of complication to a project. It is good though that recently with the rise of DSL’s and customer modifiable workflows like the Windows Workflow Foundation, this is becoming a more surmountable task, but is still far from being an insignificant development cost.
Often decisions about whether to automate a process are not always as easy as we want them to be. Generally speaking a lot of companies will look at a process and see how much time it takes, how much effort will take to automate it, and then make a decision based on those two variables. Hopefully this article will get you thinking a bit more about the processes that you have to automate in your business, and the most important part of any business equation is to think!
Loved the article? Hated it? Didn’t even read it?
We’d love to hear from you.
i think that you are wrong, i for example cant understand why havent everybody adopt some fuctional test framework and in many companies all of the functional tests are done manually. I think that its good to have testers, but its also good to use frameworks like selenium for automatic tests, because it takes alot of time for developer to test every combination and sometimes they dont and we got new errors.
I agree completely. I’m more referring to business processes. In software everything should be automated (within reason).
Excellent article here, and you’re right, most tech people thing complete automation is a no brainer! It’s good to see some valid questions to be asked first and some further thought put into deciding where to draw the line.