Wednesday, August 13, 2008
When bugs are features and features are bugs
If you are in India, and haven't been living under a rock, you wouldn't have missed the new Reliance mobiles commercial. It has a young couple on phone, who keep pulling each other's leg based on what they hear in the back ground. The girl hears a 'saas-bahu' serial in the back ground, the guy hears the girl flipping a magazine, the girl hears the guy burn his toast and so on. The point of the commercial is that Reliance's new phones give superior, digital clarity. That is the feature. But, really? Isn't that a bug? Aren't good phones supposed to eliminate back ground noise? Imagine if you are in traffic or train or a restaurant and you are using one of these phones- the background noise could be a pain in the...err...ear. Instead of fixing the problem, is Reliance trying to turn it into a feature? Is this a case of an Engineering problem being solved by the Marketing department?
I have seen it in many other places. And not just hi-tech equipment and software.
It was some time last year that I went to this posh and popular resort outside Hyderabad. The greens, the water, the cottages all looked good. I collected my room keys, picked my bag and hurried towards my cottage. No, I really hurried. Because, you know, I had to go. I opened the front door, slammed it quick, threw my bag on the floor and pulled the toilet door. It wouldn't move. So, I pushed it. No luck. I pulled and pushed. Again and again. With all my might. It wouldn't move. It was an ordinary looking wooden door with a very ordinary rotary knob, and a key hole. I tried the keys as well, but no luck. So, I called the reception.
"Hello, my bathroom door is struck"
"Oh, I am sorry sir. I will have some one come over immediately"
"Make it quick, please"
It took the guy two long minutes to come in. He walked in, grabbed the knob and...to my absolute disbelief...slid the door open. It was a f***ing sliding door. How was I to know? There was no sign on the door. Not even a subtle hint. I wanted to beat the crap out of that guy, but that wasn't his fault. Even if it were, I didn't have time for violence as I had to go.
That was a bug. A design bug, to be precise. In a land where 99% of doors are hinged, you can't expect a new guy to just realize that the door slides. Not while your thoughts are drowning in a bloated bladder. The resort manager, who I met later, said that this was a pretty common problem and the reason was that the architect wanted to have a certain "feel" while also conserving space. Hence, the door design. To the architect, it was a feature. To a hapless guest, it was a bug...almost a disaster.
The above should convince you that it is important to differentiate between features and bugs. And that Marketing department (or whatever you call the bunch of client facing folks who like to make decisions, look important but blame poor techies for screw ups) should never solve Engineering problems. Nowhere do I see this more often than in software. Many years ago, I had just begun working on a data warehousing project for a very big client. One of my first tasks was to attend to a bug that the client had logged- the roll up report, which was based on a certain cube, wasn't working as expected. It didn't take me long to figure out why- the roll up was supposed to be done using a certain (complex) formula and not using standard aggregation functions like sum and average. At the outset it looked like an impossible problem to solve. But, I was new to data warehousing and I thought there might be some way to do this so I went about searching for one. Meanwhile, the account's relationship manager got busy with some serious out-of-the-box thinking. In his case, the box was his Cranium!
He flew all the way to the client's office in Japan (we were in India) and demo'ed them a report using summation for rolling up values up the cube's hierarchy. He sold them the idea, showing how great this report was and how it gave them valuable insights they wouldn't otherwise have. He then promised to solve the main issue in a week's time and flew back. He shot me a mail on Friday saying we have a deadline, and we need to talk when he comes back on Monday. So, I did some out of the box thinking (in this case, the box was our DW server) myself, worked on the weekend and solved the problem even before he arrived. I met him with the reports :-) How? Well, I just queried the basic, leaf level data, rolled them up outside the system in a C++ program, populated a bunch of new reporting tables with the values and had the report ready for consumption. In other words, I completely bypassed the main system. The Relationship Manager had just sold a bug as a feature and I had to solve the main issue by bypassing the actual engine and storing data in completely new set of tables. I was a hero. Didn't that create problems in the future? You bet. But, I had moved on to another project, another team, another client and another country :-)
So far, I love my life.