I'm starting a new business called Kynetx (nothing to see there yet). As I go through some of the things I do, I'm planning to blog them. The whole series will be here. This is the fifth installment. You may find my efforts instructive. Or you may know a better way---if so, please let me know!
Jason Fried at 37Signals has an excellent list of all the reasons they don't sell installable software. That inspired Joel Spolsky to write about gnarly programs. Interestingly, I know people with the exact opposite response as Jason: "Boy, I wish we just sold software and didn't have to keep things running 24x7." More on that later.
There are basically four options for deployment, as far as I can tell:
- Sell software that gets installed on customer hardware
- Package your code onto a hardware appliance and sell the box
- Package your code onto a virtual appliance and sell the appliance
- Sell a hosted solution
All of these have advantages and disadvantages and each is appropriate in different circumstances. Some products, a plug-in for Outlook for example, just have to be installed. Often there are choices between these options.
As Jason points out, option (1) is difficult because you don't have control over the environment. You need technical support, sales engineers, and consultants to spend time with customers helping them get it right. Not to mention that the software release cycle means that your customers will see updates much less frequently.
Option (4) is just the opposite: you've got perfect control over the environment--avoiding all those problems--and you can release new features every hour, if you like. But when you're selling mission critical components to enterprise customers, they're often loathe to trust a hosted solution. This is especially true when you're small.
The other bugaboo with option (4) is that running a 24x7 operation for mission critical apps is hard and expensive. I'm not saying "impossible" or even "no fun." But getting support calls at 3am just sucks sometimes.
Options (2) and (3) are compromises. An appliance can be installed at the customer site but is a controlled environment. A big advantage of appliances is that in certain business models, you can charge more for an appliance than you could or the software because it seems more substantial. Hardware appliances usually require that you invest working capital in inventory. Virtual appliances might put some customers off.
Either way--virtual or physical--some products are more appropriate for appliances than others. When customers might use your product to solve problems of vastly different sizes or for very different problems, building a one-size-fits-all appliance is hard. Database appliances, for example, would be difficult for that reason.
No matter which path you choose, you need expertise. Building installable software that has as few support issues as possible, running 24x7 operations, and making appliances all have their own peculiar issues where good engineering comes into play. These are some of Joel's gnarly problems and getting them right is where you earn your salt.
Find the gnarly problem you like solving because then you'll be paid to do what you like. If you hate the whole idea of installable software, don't pick a business where that's required and then try to force fit a different solution. What ever you do, don't try look for businesses without gnarly problems. If you find something that doesn't have gnarly problems, no one will pay you for doing it.