Or a better title may be "Sometimes the customer really doesn't know what he/she wants".
I was looking through some old project files over the weekend, looking for some code examples. I came across an ecommerce project that Chad and I had finished up a little over a year ago while at Tellus. We had some issues with the production process, basically we underestimated some things and they waited to inform us about some things until late into the project. The end result was that their final cost ended up being about 50% more than what we had originally quoted them and there were still a few pieces of functionality "missing" from the 1.0 release that they expected to be included. To make a long story short the client ended up having someone else build them a site that was "more like what they wanted using better technology" (classic ASP).
Up until that point the client had been a model client for the most part and accounted for a large part of the the projects we had either recently done or had in the queue. We had built a couple of out-of-the-box e-commerce sites for them, a couple of different web applications for them, and had even been pushing the limits with what had been done on the web in their industry in a couple of places.
So what went wrong?
The site that we delivered was elegant and truly a piece of art. I'm not describing the aesthetics of the site, though they were fine - I'm talking about the functionality built into the site. It really had everything - pricing based on product, size, color combinations; color/material combinations that could be defined at the product level but overridden when necessary at the sku level; multi-level pricing based on different quantities that could be different for each product and again overridden at the sku level; content managed pages; a coupon and special offers rules-based engine; the list of custom modifications goes on and on and on. We even integrated the store with another application that we had been working on with them for over a year - a product visualization application.
The site was great, the client was great, so what happened?
Well, we screwed up a couple of things and they screwed up a couple of things. Because of letting some people go, we had gone through a couple of project managers on that project. Because of this there where a lot of gaps in communication between what we thought had been communicated to the client and what actually had. The project champion on their end kept asking for more and more very specific functionality. She is the one that drove all the deep customizations for the site. As developers we thought she understood that the more she added, the more work we did, the more they were charged. Apparently she didn't.
We finally got everything settled, we took the site live, they started getting orders and we thought everything was well. After a little while they started asking about some functionality that was not part of the site that they had assumed would/should be - they considered it basic stuff. We told them that we could add those things, do another release, but we had pushed those pieces out of the original release because of the their other items taking priority. We found out later that they had an SEO "expert" come in and review the site and basically the expert told them that what they had was junk because they needed to change META keywords and descriptions for each page as well as a couple of other things and the site did not allow them to do so. We told them we could fix those things, but I think at that point they were determined to pay us no additional money. Actually I think some executives had told the project manager on their end that she was to spend no more money. Seriously, incorporating those "fixes" would have taken us no time. But that was probably the last straw and they really didn't want to have anything more to do with us after that point.
Within a couple of months they had shut down the site and ended up going with a "packaged" hosted application that I'm sure didn't give them half of the what our original site had given them.
It really is too bad that things turned out the way they did. They really got a lot more value than what they paid for. I was running that site yesterday and poking around in it. I'm still amazed at some of the things we came up with. It's a damn shame.
I don't know that there is a moral to the story, but here are some of the things that I learned:
- For the umpteenth time I learned that open communication is the most important part of any project.
- If you have doubts about someone on the client team make sure those doubts are raised with other stakeholders on the their team
- Make sure that the client understands the repercussions (schedule, budget, and impact on ease of use) for any functionality they request