Thursday, January 19, 2006

Early Amazon: Group discounts

What do you get when you pair an eager but inexperienced graduate student with a freshly minted MBA? Yep, you know where this is going.

My first project at Amazon was group discounts. Now, I'm no marketing guy, but my understanding is that one of the tools marketing folks like to use is discounting. Want more shoppers? Offer a sale. Want new customers? Give them a discount on their first purchase.

Selective discounting did violate some of the basic philosophies of Amazon. Jeff envisioned Amazon as the "Wal-Mart of the Web", a place with every day low prices. Nevertheless, Amazon's fledgling marketing group felt they were missing a valuable tool. They wanted a way to offer discounts as part of various promotional campaigns.

Someone had to be sacrificed, and the new AI grad student programmer was the lamb. But I didn't see the project that way at the beginning. Changing pricing impacts systems throughout the code, from the website to warehouse to accounting. I was excited by this chance to dig my teeth into some juicy code.

To get started, this new hire computer geek met with the new hire marketing MBA. This project was ours, ours to define, ours to build.

Pairing two new hires without a clue is bad enough, but this was made worse by my wide-eyed enthusiasm. I started gathering up a list of what we wanted to build. The list grew and grew as ideas poured out. The answer to "do you need to..." was always "yes". Soon, we had requirements for the mother of all discounting systems, something that allowed individual discounts, group discounts for everyone coming to Amazon through a specific URL, limited time promotions, buy X get Y free, and every other promotional offer you could imagine.

Fear started to set in. Fresh out of school, I didn't know much, but I had heard others warn of being crushed under the steaming turd ball of project bloat. And this was starting to smell of steaming turd ball.

I tried narrowing the scope of the project. Having investigated the code changes required, I proposed offering simpler coupon codes instead of group discounts. In addition to having less complicated offers (all of the form "$X of a purchase of at least $Y"), the discounts would only appear at the end of the order form instead of on nearly every page on the website.

Coupons were soundly rejected. They wanted group discounts. They wanted the discount to appear on every page on the site. My prototypes probably did little to temper their enthusiasm. Once they saw a book detail page that said, "AARP members get an extra 5% off!" and "AARP Price: $X", it was like smack, and they were not going to be denied their prize.

So, I started coding.

To start, I knew nothing about Oracle databases. Fortunately, I worked at a bookstore. I plowed through textbooks like they were comics, learning about databases and good schema design. Despite my best efforts, the first review of the dozen or so new tables in my database schema was scathing.

I pushed on. Callbacks had to be inserted into almost every page on the site, detail pages, search results, browse pages, home pages, the shopping cart, the order form. These callbacks applied the discount and changed the wording on the page. New entry pages had to be created that greeted group discount members. Accounting and customer service tools had to be modified. New tools had to be created to create, modify, and maintain the various discounts.

It was huge. And, in the end, it was done. It all worked. Oh yeah, I got your group discounts right here.

It was an utter failure. The marketing group ran a half a dozen discount programs before deciding they wanted to deemphasize discounts in favor of every day low prices. A few years later, someone at Amazon implemented a quite successful coupon system.

Old code never dies. It lives on in the eddies between the lines. Several times, I begged to remove the group discount code, but I was always rebuffed. Those callbacks lived on for years, broken, but alive, pissing off any programmer who came across it and wasted time exploring what it was.

For years, I would cringe whenever anyone mentioned "group discounts". Even now, it pains me to hear it.

No comments: