A question was posed at our meet-the-big-shot meeting over lunch yesterday by a fellow co-worker of mine directed to the big-shot. The group of us were enjoying pizza from a local pizzeria while the big-shot explained our group's business plan for the foreseeable future (it was rosey, of course).
In a nutshell, it was asked if any consideration had been given to producing a resalable piece of software - the kind you can stamp on a CD, box up, and sell on Amazon (AKA COTS - Commercial OffThe Shelf, AKA Shrink Wrap) .
The answer began badly; very badly. In the cliche way you might imagine, the big-shot leaned back in his chair as if deep in thought and replied, "That is a very good question." He went on to spout something about how the Group had considered that possibility, and would continue to consider that possibility; as if he took a cue directly from our president. I can't tell you what he said after that because his manager voice lulled me into a state of hypnosis that was only broken when he asked, "Did any of that make sense? Do any of you understand what I am saying?" It was no exaggeration to say you could hear the electricity hum through the light fixtures it got so quiet. I think someone, and it may have even been me, nodded their head and we moved on.
The truth is that we are a consulting company, and not a software company. As a consulting company, we can produce a software solution, but not a software product. Each software solution we provide is going to be custom made for the customer, even if we reuse 90% of existing code from another production effort we will still spend the 10% to customize it. When we finish the solution it will have our customer's logo on it and look to it (branding), not our own. We will have used our customer's money to produce their custom solution. Depending on how the contract is worded, they might even retain the intellectual property rights, meaning that they own the code we wrote and we can't reuse it for anyone else.
Interestingly though, and I asked about this very point at the meeting, the customer can never own our experience for having created the solution; so we could go to another customer and say, "Look, we built this software that monitors how many times employees go to the rest room during the day, we could build a similar solution for you, but we have to start from scratch." And that would be perfectly legal.
Developing a software product, conversely, has a completely different strategy. First, you have to find the cash to build it yourself at your own risk. It has to be built to be flexible, it better be bullet proof, and simple, and useful for a large audience. Then you have to have your company tax and accounting systems set up to handle selling a product, you have to worry about manufacturing, supplies, distribution, and marketing. Not to mention a help desk, and bug fixes, and patch rollouts. At the end of the day, if your product is popular, it will probably be reverse engineered by a competitor anyway! It's very hard to make a big company out of selling software, but if anyone can do it, Joel can.
In consulting when our customer finds a bug in our system the exchange typically goes like this:
Customer: "Excuse me, my good fellow, but while I was waxing my mouse ball, I inadvertently came across this strange message: 'You have violated core security, shut down eminent'. I am sure it is something I have done, and I do apologize."
Consultant: "Oh, nady-dah; I will fix that problem straight away and load the new file to the server. You were ever so kind to bring it to our attention! Have a wonderful day, old chap, and do call again."
In software company when your product has a bug, 500, 000 people it discover it at the same moment, try to call your help desk (which was maybe wisely subbed out to India to save money for patch roll-outs), get frustrated and go to their blog to type stuff like:
Customer: "I H8 MiCrOsOfT! they R Jerx!"
My advice? Stick with consulting, kid.