|Do you know where your variables are?|
Humans are very practical beings. When we need one tool, we're very happy to misuse another tool to get the one that we want. The extreme example being the lowly paperclip - in one study (admittedly done several decades ago), only one paperclip in 10 actually got used to clip papers together. The rest went to a variety of uses, many of which involve the wire being bent until it becomes a different tool. Or even just mangled as a convenient outlet for a desire to fidget.
However to the toolmaker, these creative uses are often flabbergasting. And as programmers, we are often in the position of being the astounded toolmaker.
Here is an example that happened to me.
The first real piece of software that I wrote was meant to be a desktop tool for understanding how much business Bristol-Myers Squibb did with its various suppliers. All of the receipts from their various North America operations were collected together by one department, which then categorized what everything went for and attempted to spot areas where they could negotiate a good contract with a single supplier and save money.
This was very successful, with savings in the hundreds of millions of dollars. But there was resentment in the rest of the company since they had to hand over a lot of accounting data, and didn't have any way to understand for themselves what we understood.
The tool that I wrote was supposed to solve this problem by letting every other department know what we had found out about them.
So I put a lot of work on building the best tool that I could for this purpose. I had fairly strict performance criteria, it had to run with a large dataset on a 486 with acceptable performance. Being user friendly was critical. And, of course, I tried to make it as easy as I could to get whatever information you wanted out in any level of detail.
The tool was rolled out, and achieved its goals. However its primary success was in achieving a goal that nobody knew we had. While I had meant to build a top-notch tool to understand where money went, I had also built a passable address book. You could rapidly find anyone who BMS did business with in the previous 3 years. And right there you had their name, address, and phone number, which you could use to do business with them again.
Afterwards we estimated the cost of that not-great address book at about $1,000,000 US.
So, what stories do other people have of cases where the tools that you built got used in ways that you weren't exactly planning on?
Update: "one one" became "only one". Thanks, grinder. He also corrected Sqibb to Squibb...