Friday, June 17, 2011

Customer Service Pachinko


or The Importance of Humane Software Development


They look like ants from up here
A few years ago I had a customer service experience that really changed the way I think about the work I do.

I'd purchased a Dance Dance Revolution dance pad off Amazon for Hammer Night. The item page showed the item as a brand new copy of the game/dance pad bundle, and was priced appropriately for a first-party sealed item. What I received was a used, third-party dance pad, with a used copy of the game stuffed inside. I'm sure when I clicked to purchase the item, Amazon made it clear that I was buying from a third party, though I'm equally sure I thought nothing of it at the time.

I contacted the merchant and politely informed them of the mistake. It quickly became clear that the merchant was actually an individual operating out of their apartment. The first response I received apologized for the mistake and suggested that two purchases had been mixed up and were sent to the wrong people. Hmm. Not quite sure I believe that, but doesn't really matter. The seller says that once I mail the item back, he'll process a refund through Amazon. Cool. I reply asking about the shipping costs. It was only about $10 each way, but obviously I shouldn't be responsible for any of that since the "mistake" was entirely on the seller's end. The seller is adamant that he shouldn't be responsible for the shipping costs. We're at an impasse.

I start investigating resolution through Amazon. They don't seem to have any policies in place for dealing with merchants sending the wrong item. In fact, most of the policies seem to be in place to protect merchants and not consumers. The processes they do have in place require a full month to have passed before you can even begin, I assume to put as much of the resolution work on the seller and buyer as possible. I continue to exchange emails and make it clear that I intend to submit the purchase to Amazon for resolution, getting nowhere.

At 30 days, I file the purchase for resolution with Amazon. They advise me, via what appeared to be an email form letter, that I should ship the item back to the seller and they would process the refund. I ship the item back as requested, and reply to the email asking about shipping costs. They tell me it's my burden since I decided I didn't want the item. I reiterate that I was shipped the wrong item. I didn't simply not want the item I'd purchased. Again I receive what seems like a form letter, reiterating their policy.

I start to get angry. What's becoming increasingly clear to me is that Amazon's policies actually make it really easy for scammers. They can sell used crap as new, and the burden of shipping costs may often be enough cause the buyers to give up and not pursue getting their proper reimbursement. I have a low tolerance for this sort of thing, and I'm convinced that Amazon cares too much about its reputation to actually let this sort of thing happen. My next email to Amazon lays out my perspective on this, acknowledges that the people I've been in contact with so far are clearly not empowered to properly resolve the matter, and I request that the issue be forwarded up the chain. Again, a seemingly canned response.

By now I'm livid. I'm ready to punch the seller for running a scam, and I'm thoroughly pissed at Amazon for protecting this guy. I google for Amazon exec emails, and I copy one on my next email. This was Friday evening. Saturday morning I get a call from a VP at Amazon. She asks for the details, assures me that Amazon does care about their customers and wants to do the right thing. She asks for the total of the shipping costs, and a credit is issued to my card to cover the shipping. We had a brief conversation where I explained my frustrations with the way the process worked, and that I was much more frustrated that I was scammed, that the policies protected the scammer, and that the only people I could reach through published support channels were unequipped to carry out what I was certain was the philosophy of Amazon's leadership. In the end I felt that she was pleased that she was able to resolve my situation, but ultimately I think the overall matter was too overwhelming for even someone in her position to affect the appropriate change.

As software developers, the products we implement are often, in fact almost always, intended to replace people and allow companies to scale way beyond what they could with purely human labor. That is, what used to take ten, a hundred, or more people, now takes far fewer, and rarely no people, to accomplish the same work, since computers are able to do much of the monotonous and repetitive work. We are powerful and valuable in this way, as we're able to dramatically increase the value of non-software development staff by increasing what they can accomplish in the same amount of time. But at the same time, we've shifted from a world where phones could only be answered by real people, to one where entire call centers are replaced by Voice Response Systems and customers only interact with computers. Our software allows companies to grow so large that the folks on the ground are so far separated from the folks at the top that the vision can no longer be carried out.

Technology generally makes our lives better, but we have to do a really good job designing our systems to be able to provide nearly the same quality of service to humans as other humans can. We're often focused on speed, scalability, quality, and the abstract elegance of the code itself. For many of us, the user experience is also key, and we invest time in making sure the user experience is easy. All of those are really important. What's also important, and often overlooked, is how we handle the atypical problems that arise. Real humans are generally quite good at assessing situations and adjusting to resolve them. We often do a poor job around the boundary between software and human support, and the broader user experience.

A girl and her bank

A friend of mine had an unpleasant experience with her bank. She had gone to a restaurant and begun to pay for her meal with her debit card. When the slip came to add the tip and signature, she changed her mind and decided to pay with cash. The authorization had already been applied to her account, and as you would expect, the restaurant didn't reverse the authorization. In fact, I'd guess they don't even know what a reversal is, much less that they should perform one in unusual situations like this.

Later that week, she made another purchase. Combined with the authorization still pending on her card, her account was now below the minimum balance for her account. The bank issued a charge for going below the minimum balance, which they deducted from her account. That charge took her balance below zero and they charged her an overdraft fee. Ultimately, none of this should have happened, and things snowballed out of control.

She went to her local bank branch and spoke with the manager. It was his strong opinion that she shouldn't have been charged an overdraft fee due to a charge from the bank. He was also generally of the opinion that she shouldn't have had the minimum balance charge due to the slowly expiring authorization. Unfortunately, all of the charges and fees are managed by the bank's central system, and even as a bank manager, there was nothing he could do about the fees. However, he did have the ability to convert the account into one with no minimum balance. This would at least prevent the same scenario from happening again, but it's disappointing to know that software was tying the hands of people who were knowledgable and humane.

I'm sure that if the bank manager knew who to talk to upwards in the company, someone would be empowered to resolve the problem properly, perhaps by requesting an adjustment to the software that determines when fees should be issued. In my opinion, an adjustment that empowers the bank manager to fix the problem is ultimately a better solution. Why do we now trust computers more than our people? Almost certainly the bank manager knows more about bank operations and customer service than anyone in the bank's IT department. Why doesn't our software better empower our people, rather than try to replace them?

CableCard pachinko
I hate automated voice systems. I dread calling support lines, knowing that I have a relatively simple question that a knowledgeable human could answer trivially, and having to navigate menus with my fingers crossed that I'll eventually find the right person. I feel like I'm a ball in a game of pachinko, with equal chance that each pin I bounce against, each menu selection I make, has equal chance to send me farther or closer to where I want to end up. It's easy to feel hopeless and become demoralized. If I'm a business owner, I never want my customers to feel this way, and I'd trade a great deal of efficiency for customer satisfaction.

Sometimes even being able to get to a human isn't enough. My TiVo recently stopped booting, and decided that replacing it would be less expensive than a repair. When I moved the cable card from the old device to the new, I discovered that the card would need to be reactivated. All of my channels were coming through clear, including HD, except the premium channels, which displayed a screen indicating I'd need to contact the cable company.

My cable provider is Comcast, renowned for terrible customer service. I rarely have to contact them, and really enjoy the high speed internet they offer, but when I have spoken with them, it's hit or miss. I've had to wait more than an hour on hold to speak to a person. On one occasion when my cable was not working, I called and the person I spoke with was unable to locate my account in their system, and suggested that I may be with a different cable provider. Based on my past phone support service, I opted for the online chat, a decision I would soon regret.

I imagine that online chat support is heavily concurrent, that each support agent is handling several conversations at one time. As long as each individual gets prompt enough responses, in theory the service could be better. This doesn't seem to be reality though. I'm already an outlier by using a cable card, and I accepted that trade off when I chose to use a TiVo instead of a standard issue cable box. But I do expect that the cable company can support the card they provided me. The individual I'm chatting with via their online support doesn't seem to have had sufficient training on cable card support. To make matters worse, I think he knows it, and is unwilling to admit it or ask for help. Our conversation lasted, not exaggerating, three hours. There seemed to be a significant amount of multitasking, where I wouldn't hear from my agent for up to fifteen minutes. I was quite clear about the events leading up to the problem, and even suggested an activation signal may need to be sent (as I'd observed when the card was initially installed). I was met with questions about whether the cable was securely attached to the sockets on both ends. I was asked to reboot my device (and I complied). About two hours in, the agent suggested that an on site service call would be the only option. And from that point, with all of the multitasking, it took another hour to schedule the service appointment. I've never been so close to leaving Comcast.

A few days later, the repair person arrives and seems equally unprepared to resolve the problem. I explain again precisely what precipitated the issue, and eventually provided the same suggested solution. It was like I was speaking Greek. The repair agent is on the phone with their support staff, trying to get advice on how to resolve the problem, checking signal strength, and basically everything unrelated to the symptoms I've described. The people they're speaking with on the phone don't seem to be helpful either. In an incredible stroke of luck, the repairman lost cell signal and was disconnected. He called back in and got a new person, who indicated that he should have called a different number. The repairman asked if she could transfer him, and she was about to, but decided that she might be able to help. He provides what information he can, though not everything I'd told him, and she looks at something on her side and says, I kid you not, "Did the customer recently change TiVos?" A ray of light. Finally someone who knows what they're doing. We're on speaker phone and I respond with a resounding yes. She sends the signal and not one minute later, everything is fixed.

I can't imagine the tangled skein that is the network of support staff for a company like Comcast, but it's surely inefficient. Like any company I've worked with, there are always at least a few people who know what they're doing. I can't even count the number of times when I've wished I could just get an engineer on the phone, someone who actually understands how something works because they built it. There must be better ways of empowering support staff to find solutions to problems. I'm sure when my online support agent was stumped, he went to a knowledge-base, as he was trained, and couldn't find what he needed. But somewhere there was another support person who knew exactly how to solve the problem, and he wasn't empowered to find that person, to find the solution and make the customer happy. In the same way, my online support person wasn't able to get an on site tech who knew how to solve the problem assigned to my appointment. And the on site tech was just plain lucky to find someone who could solve the problem.

We have the technology

As software developers, I believe we can help solve these problems. In fact, I think it's our responsibility, that we should take more accountability for developing these systems. And I don't just mean software. The nature of our discipline leads us to think more about how systems work, not just software systems, but real-world systems too. We need to do more to cross the boundary between the software we write and the people who use it. We need to be prepared to say we need more people and less software sometimes. We need to constantly remind ourselves of the hell that our software can create.

Software is an incredibly powerful tool, properly applied. The problems that come with software aren't always obvious at first. I'm sure Amazon was far more concerned with scaling their servers than they were their customer service capability. It's very hard to provide great service to that last 1% of their customers, the ones who have unusual issues. But sometimes even one customer not getting proper support is too many. Their rapid growth left gaps in their support process that need addressing. It needs to be easier for their customer support staff to escalate issues, and be encouraged to go above and beyond to resolve problems.

My friend's bank obviously cares a great deal about uniformly managing customer accounts, and letting bank managers focus on the less monotonous aspects of banking. In the process of building their systems, they transferred power from their legion of bank staff to their software developers. But my friend isn't a record in a database table. Her life isn't a series of log entries. She's a person and deserves respect. By abstracting the banking process, she was abstracted in the eyes of people like us. Her money may seem very little, and of little consequence to such a large bank, but what she has is very important to her. She deserves the benefit of the doubt, and needs bank managers who are empowered to do what's right.

As the complexity and ubiquitousness of technology increases, companies like Comcast will struggle to find enough support staff who can absorb the knowledge required to help their massive number of customers. They must continually improve the systems they employ to share knowledge internally and externally. They'll have to find better ways to enable their people to work as one team to support their users. And there's almost no aspect of their support that can't be improved by thoughtful software developers.

Shameless...
I love working for Braintree. One of the things that makes me so proud to work here is our relentless devotion to great customer service. When customers call us, one of our exceptional support staff answers the phone. There's no voice response system. If you're a developer who needs help integrating, you get help from one of our engineers. The people who help you are the people who designed and built our systems. And we're always looking for ways to support our customers better.