The coming storm for customer facing businesses

There’s a whole lot of change happening on the internet. A lot of things are coming together right now that will change the way that businesses handle customers. Everyone is familiar with the rise of Google and the fact that almost all of their revenue comes from advertising. Many analysts have posited that one of Google’s primary business end goals is to capitalize on local advertising. The ability to know the customer, know what the customer wants, and then link that customer up with the exact business to fulfill the need will bring in huge ad revenues. Companies currently pay very large amounts to bring in new customers and if Google can all but guarantee the ability to do this, then that would be a huge coup over all other forms of advertising. The move by Google to supply free wifi in San Francisco is seen as one of the first steps in accomplishing this goal.

Another major trend is the rise of reputation tracking as exemplified by Ebay. Ebay responded to the need of a customer to be able to determine whether it was advisable to buy something from someone that they’ve never met. Without this ability, Ebay never would have been able to get off the ground.

So, lets take these two ideas and mix them together and look a few years out. You’ve got a need, lets say your sewer pipe has ruptured and you’re in desperate need of a plumber. Now you’ve never used a plumber service before because this is your new home in a new neighborhood. You need to determine who you can call to fix the pipes. More and more, the default in this situation is to turn to Google and do a search for plumbers. Now if Google is able to pull off local search they’ll be able to return a list of plumbers within your area.

The problem now becomes, out of the list of twenty plumbers returned, which one do you choose? How do you know which service has the best plumbers, the best price, or the best customer service? Once Google is able to reliably offer the local search service, there will be someone, either Google or some other party, that will be willing to help you with that decision because there will be money to be made in doing so, and these reputations are going to have to be based on customer’s reviews.

This will force businesses to change the way they deal with customers. Customer feedback will become a much larger portion of the equation for attaining new customers. In the past the yellow pages was the only source you could go to in a situation like this and you would go with the ad that looked proffesional and was well done, because that was all you had to go on. It could be that the little corner plumber offered the best service ever, but couldn’t afford the fancy ad and that the big company with the fancy ad hired underskilled workers. You just don’t have a way to differentiate. With business reputation monitors though, which could be specific to the exact branch office that you would be dealing with, you would be able to look at the way that past customers felt about their dealings with this company. Were they satisfied, was the work completed as agreed, were than any issues that developed after the sale or with billing?

A business won’t be able to deal with bad customer relationships, because it would then have a measurable impact. In the past with businesses like this there were always more customers tomorrow, so doing right by the customers of today was not something you needed to worry about. New customers just didn’t have a way to access the thoughts of past customers so that factor just never entered the equation.

I am personally very excited about the prospect of this taking place. For me, the consumer, it means that I will get better service and prices.

A quick follow up on my Home Depot experience from my previous post. After posting about my customer experience on this blog, I then followed up with posting the same account to 3 top review sites that had reviews of Home Depot, and also posted it to the Home Depot corporate feedback form on their website.

I was somewhat surprised to get a call at 9am this morning with a quick apology and a note that the door had been ordered and would arrive on Dec 21st. At first I wasn’t sure where the apology had come from since there was no explanation, but later in the day I recieved an email from the corporate customer care, following up to my post. So apparently someone at Home Depot corporate is paying attention. I think that’s great, but the company still has an issue with customer facing reps that needs to be taken care of. As the reputation systems are developed and become more mainstream it’s going to become harder and harder to slide past these types of incidents and continue to bring in new customers. Having a corporate motto about customer satisfaction will actually have to mean something demonstrable.

Home Depot destroys customer loyalty

In one fell swoop Home Depot was able to lose me as a customer forever. Since purchasing a new home in the San Francisco Bay Area last september my wife and I have been making weekly trips to the Home Depot in San Mateo, CA for supplies for the house. In August of this year we decided to upgrade to Andersen sliding doors and windows, hoping that they would improve the value of the house and help with heating / insulation. This was going to be a decent sized purchase for us, but probably very middle of the road for Home Depot.

The initial purchase experience was decent. The salesman was knowledgeable and helped us pick out the doors that we wanted. The next step was to put down a deposit and have a contractor stop by to measure and make sure the proper order was placed.

The contractor showed up on time and was very proffesional. The order was then placed and shipped to our house. It took about a month for delivery but wasn’t an issue since there were some non-standard sizes.

The day after the order arrived a team of contractors was scheduled to install the doors. Again they were proffesional, showed up on time, and were able to get the work done quickly. If the purchase experience had stopped here, Home Depot would have garnered high points. Everything was completed as expected and handled proffesionally. There was one small hitch though. One of the sliding doors had been damaged in shipping and wouldn’t slide on the rail. The contractor told me it was no big deal and that I would just have to call Home Depot and they would send another one out right away.

Call #1) So, the next day I called and talked to a Home Depot rep from special services and described the situation. They informed me that indeed this was not a problem and that they would take care of it immediately. The door would take about a week to arrive and they would call me when it did.

Call #2) After two weeks, things were busy and I had forgotten about the door, I call Home Depot back. The door was supposed to have been scheduled for delivery on Sept 10th, but the rep that took the call could not find any information about the door being delivered or even ordered. I ask if they have one in stock, to which they responsd that they would have to check. They tell me that if I wanted to come to the store and bring the old door in they would see if they had one to replace it. I try and explain to them that the door is 8′ long and I don’t have a vehicle that it’ll fit in. They tell me that they’ll have to call me back.

Call #3) Another call after I had determined that Home Depot was not going to call me back. The rep from special services is confused by the order and can’t figure out what’s happening. I’m transferred to someone else. He informs me that there was no order for a new screen door, but that he would need to talk to someone to fix it since he wasn’t sure how to place it. I’m put on hold for 40 minutes. Getting frustrated I pick up my cell phone and call in to Home Depot again and the person who put me on hold is no longer around, but the new rep takes the call. They assure me that they will get things sorted out and call me back.

Call #4) After another couple weeks pass I call in again to check to see what the status is. Again the rep that takes the call is unable to understand the order system and can’t determine if the door has been ordered or not. They assure me that they will figure it out and call me back.

Call #5) Tonight at 5:30pm I called again, this time determined to not hang up until someone is able to do something about the order. The first person to take the call again cannot determine what is happening. He admits to not being able to understand the order system. I tell him that I’m rather upset and would like to talk to someone that can help. I’m put on hold and after a few minutes connected with a Manager, Tony. I try and explain to Tony what has happened and that all I needed was to replace a screen door that was damaged in shipping.

Tony immediately takes a very confrontational tone and asks why I haven’t talked to any supervisors. I try and explain that I was not aware that I was required or had the option to speak with a supervisor. Tony tells me that he’ll have to call me back.

At this point I admit to getting rather upset and raising my voice at the prospect of being hung up on again. I tell him that if he can’t help me with this problem then I would like to investigate getting a refund for the price of the screen door. Tony informs me that he can’t determine the price right now and that again he’d have to call me back with that info and that further more his system has no record of there being an issue with the door or my having called so obviously there was nothing he could do. Tony claimed that as far as he was concerned the order was completed successfully, even though I was currently on the phone with him trying to explain that indeed it was not.

I try and explain that as a customer, the failure of the reps to log previous calls should not have been my problem. I have no visibility into Home Depot’s internal systems or methods. It’s become apparent that nothing has been entered into the system since the original order. Tony asks for the name of the reps that I had talked to previously and unfortunately I didn’t think to take them down at the time. I ask Tony why, since I was now talking with a manager, the problem could not be resolved. He refuses to discuss any more options with me but declares that he needs to talk to the original rep that took the order and he would call me back. Tony makes it very clear that he does not have any intention of replacing the door that had been damaged in shipping.


The night after I posted this, I started looking all over the web for recommendation and business review sites. Found about a half dozen and left a full description of my situation. I also went to the site and filled out their customer feedback form. The next day someone from corporate called to let me know that my screen door had been ordered.

Several weeks later I received another call that the door had arrived. Of course even though I paid for delivery of the initial goods I’m told that they can’t deliver this item. I have to get a truck to go pick up the door.

That saturday I show up at Home Depot to pick up the sliding door. Once they go back to get it, the rep realizes that it’s been smashed by a larger package sitting next to it and is in even worse condition than the initial door.

3 weeks later another call that another replacement has arrived and they still won’t deliver it. At this point I just want the whole fiasco to be over with. I pick the door up and bring it home, 12 months later.

Developing with AJAX, communication protocols

I and several other developers from YouService met with Ross Dargahi, from Zimbra, for dinner a week ago and discussed how Zimbra is doing AJAX development. One of the main ideas I took from the meeting dealt with how the client and server should communicate. If you look at a lot of the AJAX tutorials out there you will find quite a bit of emphasis put on using xml as the transport language. However, there are other options that I would like to go over.

XML is a logical choice, it’s agnostic in terms of technology. There is no assumption about anything with the client. You could have a fat client, webapp, webservice, you name it, and as long as the client understands the apis it can deal directly with the your server. The whole mashup craze likes this a lot. Any third party developer can hook up to your system. Whether you allow this is a business decision and requires monitoring and authentication on the server side to enforce policies. In terms of flexibility, using xml is at the top of the heap. The downside, if you’re creating a webapp is that you’ve now got to put a whole lot of logic into the client side code. You need to be able to take that xml, parse it, and turn it into a meaningful datastructure in order to do something with it. This is where a lot of the difficulty in developing AJAX applications comes in.

Lets look at the other end of the spectrum. You’re developing a webapp, so why not have the server just send back html. This is an option that you don’t see discussed too much, but it does have its place. With this option the client side code just needs to fetch the result from the server and insert it into the page, usually using a div.innerhtml. This is the fastest way to develop. The client side code becomes very simple and easy to debug. The downside to this approach is that outside developers are very limited in their ability to plug into your services. Your webapp is now tightly coupled with the server and vice versa. Data reuse on the client side becomes problematic as well. If you have a single piece of data, say username, that you would like to display in multiple places on the page you would have to make mulitple requests to the server to fetch that data for each position. The client is now incredibly dumb and doesn’t know anything about what data it has so it can’t reuse it.

Both xml and html have their drawbacks, but getting back to the dinner, Ross strongly advised using JSON as the protocol. JSON supplies a very nice middle ground. It’s open enough, with parsers written for almost every language. You can define and expose interfaces to outside developers. It also makes the client side coding easy enough that it’s doable, but strong enough that you can put real logic in the client. JSON allows you to focus on the the fun part of developing, not the parsing of xml into datastructures and catching all the errors.

Having worked with all three models, I now feel very strongly about using JSON. It just has the right mix of flexibility and ease of development.

VMware and my linux laptop

With my linux setup I’ve been pushing the edge of what you can do on a laptop. I run vmware so that I can test Windows applications. VMware isn’t the happiest with the setup though. It won’t run bridged mode netwoking over a wifi nic. You have to use nat mode instead. This was a painful lesson as networking would just freeze up completely when you try and config bridged mode, to the point that I had to pull the battery to get the computer to shut down.

Another painful lesson was that VMware isn’t all that happy with being on a suspended laptop. It wouldn’t come back after the suspend and would have to be forced down. Of course if you do this you’ll have to clear out the file system locks to get the vm to come back up again afterwards.

So, general rule is that you have to be careful about what you’re doing while using vmware on a laptop. Shut it down before you close the lid and setting up networking takes some extra care over a wifi card. The amazing part is that it does work though once you get it setup.

Linux on a laptop

Work just purchased a new development machine for me. I was given free reign to choose whatever I wanted to work on and I ended up going with a IBM/Lenovo t42 laptop and putting Mandriva 2006 on it. The whole experience was delightful. Linux runs absolutely great on it. The wireless was picked up right away. Everything just worked.

There were a few small edits that I had to make to complete the package though. It needed some tweaks to the laptop-mode settings. I also had to edit the acpi script for closing the lid so that it called suspend properly.

A very good choice for a system if you’d like to try putting linux on a laptop. Very well supported.