There is so much you have to understand as a uISV. You’ll be wearing a couple dozen hats — search engine optimizer, marketer, blogger (you’re marketing, right?), tech support, customer service, webmaster, accountant, payroll, banker, purchasing, etc etc for quite a while (until you no longer need the role or decide to outsource it). Oh, and I hear there is some development involved too. With this many things on your plate, you can’t afford to spend time worrying about irrelevancies. Yet a lot of people get caught up with them, and they’ll happily munch your time without providing any return.
I’m going to say some controversial things in the following paragraphs. This might be a helpful time to point out that, again, this advice is specific to my experience and circumstances as a very, very little fish selling to customers. If you sell $1 million custom installations to three-letter agencies you will probably want to disregard this advice.
Your license terms are mostly irrelevant. In the consumer market, nobody will read them anyhow. (.2% of my site visitors find license.htm — 25% of them buy, incidentally) They’ll use the software in whatever fashion the software permits itself to be used, regardless of whether you say you need to buy two copies for a husband and wife (hah, never going to happen) or two copies for a laptop and a desktop (hah, never going to happen). Similarly, the actual wording of the license will only be important if you attempt to enforce it against someone. That requires you paying a lawyer a very large amount of money on an hourly basis to recover a very small amount of money, which you will probably not even see at the end of the day. So why on earth would you go ahead and consult a lawyer about your license terms — might as well take $1,000 in small bills and burn it as incense. Instead, you have two options. One is copying the license verbatim from a product from nolo.com. The other is writing the license yourself (I did this). “Oh no, I could get sued!” Do the reality check — the vast majority of commerce you participate in, day in and day out, is governed by no contract more formal than an oral promise or a handshake. If you are selling a product directly to a customer, you’re very similar to McDonalds. Do you know what the terms and conditions for your hamburgers are? No, because there are none. There was no contract signed when you got your car cleaned this morning, when you picked up your laundry yesterday, etc etc. Yet somehow these industries manage to muddle through despite there being lawyers lurking around every corner scrutinizing software licenses for an improper use of legal jargon. Whereas.
No competitor cares about your code. I understand that every programmer thinks their code is their baby. Here is the thing about babies: while most people absolutely love their baby they’ve got negative a billion desire to have anyone else’s baby. Supposing your code has some secret sauce in it (and it probably doesn’t — 99% of programming in most fields is pretty pedestrian), integrating your secret sauce with someone else’s product in a similar field is riskier and more expensive than just developing the secret sauce from scratch. Every time I see someone say “Uh oh, I need to obfuscate my code to keep it from competitors” I want to cry on the inside. Your primary line of defense against that is trusting your competitors (you trust random prospects on your website, why wouldn’t you trust folks who are your professional peers) and your secondary (and much, much, much less cost-effective) line of defense is asking your lawyer to send somebody a nasty letter. A determined effort to reverse-engineer your code, on the other hand, will succeed no matter what defenses you employ against it… not that any legitimate company will make that effort.
Nobody is going to try to sell your application as their own. This is another worry which keeps programmers up at night. Reality check: 10% of this business, on the outside, happens in the IDE. The other 90% is where you make your money. It is not efficient to steal someone’s code and then rebrand it, because you have to do the other 90% just as well as they do, and you’re naturally less than efficient at that. This is why the only folks who habitually decompile anything, pirates, only care about stripping out your copy protection so they can distribute your product for free.
You can pretty much ignore your competitors. The market in your niche is much, much larger than you can comfortably absorb by yourself (if it isn’t, find a new niche, now). Most potential customers will not learn about every bit of software in the space because that takes time, dedication, and expertise. Your customers lack these, which is why they want to pay you to make their problem go away. Matching every feature of your competitor just because they are there, or worrying about your release schedule because a major competitor is getting ready for a +=.01 version upgrade, is the height of folly.
The IRS isn’t really that scary. The overpowering fear of the taxman many small businessmen seem to have is irrational. (You may live in a country where it is rational. See bit above about this advice being controversial.) Many, many people in the US are involved in various economic activities which don’t quite fit into the W-2/1040EZ paradigm, and the vast majority of them are not being audited, fined, or imprisoned in any given year. Don’t totally ignore your tax implications, obviously, but I would not obsess about them the way some people do — after all, you need to make money to have any tax implications. I’ve seen some folks say, with apparent seriousness, that if you sell $200 worth of software in a year and aren’t incorporated with an accountant your state will lock you up and throw away the key for sales tax evasion. If that were the case, eBay would be the largest collection of jailbirds in history.
Back in real life, your state and national government likely have free resources available to figure out exactly how much tax you owe and how to pay it. They produce simple, easy to understand pamphlets and they have covered the uISV situation before, probably in two pages or less. (Example: Wondering whether you owe sales taxes on software in Illinois? By Jove I think they’ve answered that question before.) Give them a quick call, ask for the appropriate pamphlet, and they’ll happily send it to you because, hey, when you succeed they make money for doing nothing. They are emphatically not trying to bury a landmine in the forty-second codicil to the thirteenth annex of subchapter six of the internal revenue code so they they can make their quota of small businessmen busted this year. (After you have significant revenues, I think hiring a professional to do your taxes and/or your accounting is a good use of money, because the alternative is a poor use of time, and you ideally have a lot of the former but little of the latter.)
Your choice of programming environment doesn’t matter a whit. Pick whatever you, personally, are productive in. You can debate the merits of having garbage collecting or strong typing all day long, but in my entire professional career I have never seen debating compile successfully. The amount of time you will spend programming relative to your other tasks will be tiny, and deployment concerns for runtimes are almost invariably overblown. Several free install programs such as NSIS will happily let you slurp down the installer for .NET or the JRE or whatever if you get one of the (very, very few) customers who does not yet have this installed on their machine.
Worry about what really matters — figuring out how to sell a quality product to the right customers in numbers sufficient to achieve whatever your financial goals are. Don’t fall for the time-wasting bogeymen.