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.

Apple and VMware

With the latest announcement that Apple was moving to an Intel chipset I think there’s something in the works that not a whole lot of people are considering. Apple has always lived on the fringe of the corporate network. Graphics Designers and diehards have been able to get their way, but for the most part it’s been all about Wintel for corporate desktops.

Microsoft has been able to keep a lock on this market because of the vast amount of resources applied to developing custom applications for businesses. No one wants to redo that work. It would just cost too much and take too much time.

Some things are lining up now though that could bring a very interesting proposition into this area. VMware has been pushing for awhile the ability to run a stable, easy to manage, virus free operating system as a base on the corporate desktop and then run a vm on top to handle the legacy applications. Until recently the logical choice for this was a linux base. This way you don’t have to worry about end of lifeing of OSs by Microsoft or the pain of upgrading. You can also distribute standard image vms within the corporation to make management of the desktops easier.

The problem with this was that a lot of corporations were gunshy about linux. Who would support it. They didn’t understand open source. There weren’t the right applications for the base OS, Microsoft refuses to release a linux version of Office. However, now OSX has gained the same reputation for stability and protection from viruses that linux has, but it’s supported by a mainstream company that has been around since the beginning of the PC.

By moving the mac to intel, VMware will be able to support OSX as both a base and guest vm. This will allow Apple to sell into corporate accounts for mainstream desktops. They will be easy for the IS people to support since there’s a unix base down underneath there, and most importantly for a lot of companies, they will be virus free. Reducing huge expenditures in time, people, and money.

I truly think that there is a perfect storm lining up for this combination.

Getting a startup going (Lesson 1)

One of the first things I’ve learned since joining as the first employee of a startup is that you can’t do everything. No matter how many good ideas you have, there’s only so much time and so much that you can do. In a startup, there’s limited personnel, but lot’s of things that need to be done. This is where outsourcing and contractors come in. Some of the areas are obvious, with a new company you’re going to need a lawyer and an accountant. But some other areas I hadn’t considered, some of which I had thought of as core peices of a business, but there are markets for pretty much anything you need done.

With a software / web startup there is a fair amount of design work that needs to be done. But, there probably isn’t enough to warrant hiring someone full time. You can get better, faster, and cheaper work done by contracting the work out to a design team. There are very proffesional teams out there that can get your work done in a very short amount of time as well as being fully involved in your design process.

Hosting and sysadmin work is something else that can easily be contracted out. At the early stage of a company there just isn’t that much of a need to bring someone on full time for this. Hire a contractor to get you up and running, then get an hourly rate for maintenance. Once the company is up and bringing in revenue and churning through millions of pages a day bring someone on full time.

Some software projects can also be easily outsourced. These work best if you can cut chunks of code off that can be heavily spec’d out. The clearer and less ambiguous the spec the higher your chance of a succesful result. Rent-a-coder is a good start for finding someone to do this.

You can even outsource a lot of your HR functions from benefits to payroll.

In the past I when I was considering a startup of my own I was concerned about how to handle these areas where I didn’t have the most experience or abilities. Now I see what people mean by focusing on what you know and hand off the rest.

New Job

I’m not sure if I mentioned it here, but I quit my job as Engineering Manager/Site Architect in September. Webshots just wasn’t where I wanted to work anymore.

I received an offer to work with a ground level startup, YouService. It sounded like an exciting opportunity, so I jumped at it. I needed something that I could get behind since I had received a large number of headhunter calls to work with other small companies, but none of them felt right. The only thing I have to say is that Google’s Adsense is not a business plan.

After working with the new company for a month and a half now, I don’t know why I waited so long. Work had become so painful that I dreaded getting up in the morning. It took me awhile to adjust to having fun and feeling ok about it. I felt like something was wrong since I was enjoying each day, so I must not have been doing something right. I have to sit back and realize that we’re getting a lot done and yet I’m enjoying every minute, so it’s ok.

Now I’ve just got to keep pushing this company so that it makes it off the ground. Things are looking pretty good so far, though. I love getting involved with a startup from the beginning. There are so many things that I’m learning about how to start a business.

Home content management

So my dream of having a home based content management system is one step closer to reality. My new work felt that I needed a fax machine, so they picked up a Brother MFC-8220 for my home office. This is an all-in-one unit that has fax, copy, scan, print. It’s got a very nice b&w laser printer built in and does very well with copies and scanning, haven’t tried out the faxing yet. The best part for me though was the 25 page auto document feeder for the scanner.

It comes with a version of PaperPort from scansoft, PaperPort 8 SE, which is a rather nice app for scanning and managing documents. The only problem was that it wanted to save things in a proprietary format. This concerned me because I didn’t want to put a lot of work into scanninng documents only to have them be locked up in a format that I couldn’t really use. A quick check of scansofts webpage though and I found that they had a version 10 out of PaperPort, for $69 upgrade of $99 full, that defaulted to pdf for the documents. It also ocr’d the text and provided a searchable index of documents. This was exactly what I wanted. I purchased and downloaded the software and was up and running in no time.

I was able to crank through most of the documents in my filing cabinet in one evening and arrange them by type of document. The next step was to put the dirs where I had all of the pdfs under cvs control and to check them in. I’m now able to check out all of the pdfs from any of my computers and I use a mix of linux, mac, and windows and view the documents. The documents are also backed up across the different systems and cvs manages the versioning.

For managing the cvs repositories I use Eclipse, which is available on all of the different platforms and because no other app comes close to its cvs tools. So at this point I think I’m 90% to where I want to be with home document management. The only issues are that the scanner won’t do duplex, but it does allow you to scan through a stack of pages and then flip them over and scan again and is able to interleave the pages properly in the final pdf. This is a small pain, but not really a big deal. I’m incredibly happy with this setup.

A matter of trust

I’ve been very interested in following the Web2.0 discussions lately. I think we’re at the cusp of some rather large changes for computing and the internet. I wholely believe that in 2 years we’re going to see a significat portion of applications moved to the internet. Sun’s mantra that the network is the computer will finally be realized. There’s been some naysayers, but the advantages for the user and the supplier are just too large to ignore.

Updates and maintanence become orders of magnitude easier. You update central servers and all users are automatically updated. Companies will have to think ahead on apis though to make sure that changes are not too harsh on users that have grown accustomed to the way things work.

Web based apps just simplify the way things work. The user just has to open a browser and go to the right place. It also makes it much easier for companies supporting a large number of desktops. The number of applications on those desktops will drop as adoption increases.

One of the major issues lingering though is the matter of trust. Most people don’t have a whole lot of trust for other corporations, and they shouldn’t. However, running core applications on the web means that there needs to be a level of trust generated between the two parties. Not only that the company will keep and use the user’s data in a trusted manner, but also that they will available when the user needs them.

There’s a default lack of trust for most users right now, but as more of these applications arrive the barrier for attaining this trust will become more realistic. The trust should be based on the company’s ability to serve the user and not on a fear of the unknown. Several years ago, most people would not have done anything with online banking, but the pros just overwhelmed the cons and it became mainstream.

I believe that Microsoft’s announcement that they are going to have a “Window’s Live” and “Office Live” and push users to use the new services will open the door for other companies to create these web based business applications. Microsoft’s announcement will bring the idea that it’s alright to run applications on the web to the mainstream consciousness.