Messed Up Bits

I am starting to work on a new web site that is nearing completion. It was initially setup by a different company and handed off to my company after the client realized that the original “developers” were in a bit over their heads.

I have just one example to share about the state of this project (you can infer from this the overall health of other parts of the site, as constructed by the original programmers). While getting a walk-through from the developer who has been working for months trying to get the rid of the last lingering bugs, I was told: “By the way, the way that they originally set up the database is that the 1’s and 0’s in the Bit columns are usually backwards. So most of the time a 0 means true and a 1 means false. Except for a few cases where 1 means true and 0 means false.”

Save Your Work!

My wife and I are in the process of designing a kitchen (with the aid of our architect) for our new home. The locations of the windows, walls, fridge, oven and sinks is basically set. So the remaining design consists of choosing the number, size and layout of all of the drawers and cabinets, plus lots of other details. Our architect has designed a layout for us to use, and we plan on shopping it around to a kitchen store plus some private contractors for quotes.

Today we went to the kitchen store. After (rudely) pronouncing that she disliked many aspects of the plans that we had designed with our architect, with the stated reason that “we are living in 2007 today, and this kitchen looks like it is from many years ago” (we are more into functionality than the flashiest, sleekest look, and we have need for lots of storage space), we then gave the rep a chance to redesign the space as she saw fit.

This store uses some kitchen design program (I didn’t catch the title) to do everything: layout all of the elements in the space in three dimensions, design the interiors of all the different cabinets. It can provide technical specifications and diagrams for the construction crew, allows designation of colors and materials. And lets you see a virtual view of the kitchen from any height, angle and perspective, rendering the kitchen in full 3-D along with colors and textures. And it uses all of this information to give price quotes. Quite a cool piece of software.

As the sales-rep was rendering the screen to show us a 3-D perspective of the kitchen, an error popped up on the screen (with a pretty lousy and unusable error message, one which was probably never intended for a non-developer to see). This was followed by five more errors and the program abruptly closing.

This in itself shouldn’t have been much of a problem. The sales-rep should have been able to just restart the program, open our file, and continue. One problem – she never saved here work. 45 minutes of design time down the drain. There was no more time for her to start over, so we could not get a price quote, could not look at any more colors, surfaces. Nothing. Our time was completely wasted, and she made herself and her store look bad (and made it less-likely that we would buy from her). All because she didn’t save her file.

For me as a developer, this is a foreign type of behavior. When I create a new file, I always save it. And I have it wired into my subconscious that whenever I make any change and pause for a few seconds, I perform a Ctrl-S on my keyboard.

However, can we totally blame the sales-rep in the kitchen store for this? She is not a programmer. True, she should have saved her work incrementally as she proceeded (and hopefully she has learned her lesson for the future). I think that well-designed software should have been there to force her (or at least annoy her) into performing this most vital of steps. Many programs are now featuring auto-save capability. Some of the more sophisticated ones (like MS Office and Visual Studio, to name a few examples that come to mind) will also save any of your unsaved work if the program execution abruptly ceases. In my opinion, this feature should become as standard as File/Open/Save/Close. The kitchen design program that the sales-rep was using today incorporate many thousands of man-hours in development time, costs thousands of dollars per license, and is used by the kitchen store as the centerpiece of their technology suite. Yet, for failure to help protect the user’s from their own ineptitude, it has wasted my time, and may have cost them a sale.