The legacy of software


What happened this week was that Dell had an incredible offer for a dicontinued server, but within a few hours they got more orders than they had boxes, and then – oops – failed to communicate that to the folks who had already gotten an order confirmation over the web and were expecting their boxes to arrive.

It’s an old story, really, with Dell. Their web ordering system is completely separate from their back-end sales and production management system. My local Dell sales rep has actually told me that when you enter your order over the web, he actually has to read the order off the web system, and enter it into the “real” system. (To be sure, place the order, then call your sales rep and make sure he enters your order in the real system immediately—yes, I’ve been instructed by my sales rep to do this.) It’s what we call sneakerware.

This, I think, is a major part of the reason for their disastrous customer service during the order fulfillment process. Here’s what I reason happens:

  • The web system doesn’t really know how many of these 1600 SC units were sold, because that’s the internal system that keeps track of that, and the two don’t talk.

  • When you order something, it takes several days before you get an order confirmation saying they heard you correctly, that your credit card went through, and when you can expect to get your box.

  • You don’t get email notifications when your order ships.

  • You can’t see your order status or your order history online, and there’s no place to keep your shipping and payment details.

  • When a part is back-ordered, you’re not really told anything, except that yor box won’t ship in two months – you have to call in to find out what the problem is and how you can route around it.

This is part of Dell’s legacy. They started as a mail-order company, and they had sales people be the customer’s interface to their internal system. Along comes the web, and they build this completely separate system, but the internal system stays the same, so the real interface between the two are the sales agents.

It is also obviously a less than desirable way for Dell to run their business – it is costing them loss of customers and money to pay sales agents. Yet Dell has been in this situation for almost a decade, and they haven’t managed to fix it. Why? That’s what puzzles me.

Perhaps they figure that the cost and risk of reimplementing their internal software applications is just too high, and that sticking with what they have and routing around the pain helps them focus on beating their competition instead of slaying internal dragons. You could excuse them for thinking that way.

But if we ignore Dell as an isolated case for a minute, and think of the industry as a whole, isn’t it a sad admission of defeat in our industry, that one (two) of the largest IT companies can’t get their internal IT systems to work right? Isn’t it tragic that it has to cost $400 million in revenue, and still not work. I know that these are really big companies, but I have a feeling that the solutions that we have today—like SAP, Oracle Apps, Windows, Office, and all that—are just too big, they’re doing too much, most of which isn’t necessary, or they do it in really bad ways. I mean, something’s gotta be wrong.

That’s why I like the mantra of “Less Software”. Once you get into the mode, you realize that you can do a lot more with less. There’s a tendency, both in the individual programmer and in the software companies, to pile on more code to solve the problem. The programmer, because it’s easier to write code than to read it, and because we hate throwing code away. The companies, because the more stuff there is, supposedly, the more they can charge.

Programming in Ruby on Rails helps me write less software. I find that because it requires so few lines of code to get things done (no repetition, and a really tight, flexible language) and things follow the principle of least surprise, it’s much easier to read, refactor, write, and even throw away code—because you know that if you really need it, it would be a small effort to write it again, or dig it out of the source control system.

I was listening to Kent Beck while jogging last night, and he was relating a description of the Microsoft ship process: Software is like jelly, and you keep testing and fixing bugs, and the jelly shakes and moves, but then all of a sudden it stops shaking for a minute, and that’s when you ship!

There’s got to be a better way, and I think some of the keywords are Less Software and Agile Software Development. It could be a fun project, rewriting Dell’s order system …



There are no comments yet. Be the first one to leave a comment!

Leave a comment