Every once in a while I run across a situation that just amazes me. While this topic is not strictly about software development it is about the subject of the business of software.
Our customers give us money for something we have already written.
This is an important point to grasp. We write software once and sell it many times over with no production costs other than initial development. Unlike almost every other industry in the world we only have to write the software once! We do not have to produce something new every time a customer wants to purchase something from us.
Yes we need to maintain the code and provide updates to our customers. However we do not need to create something new out of whole cloth every time a customer wants to buy it. It is about as close to printing money as you are going to get — legally.
I am not saying this is easy! I would argue that software development is one of the most mentally challenging career choices out there.
Do not steal from your customers
Your customer has already given you money for your software that you wrote. Do not try and go back to that customer again unless you have written something significantly new. If your software has gone from v1.0 to v2.0 then absolutely charge them an upgrade fee. However, do not force your customers to purchase another license just because you do not like the way that they are using your software.
I own several Macintosh computers. Those who know me claim I buy Macs like other people buy lattÃ©s. That might be an exaggeration but I do tend to buy the new shiny. I normally have two machines running at once, sometimes I am using even more at the same time while I do software development and testing.
However, when I purchase a piece of software I expect to buy ONE license for my personal use. If my wife likes it she gets her own license. If my son likes it he also gets a license. I do not expect to, nor will I, purchase one license per machine that I am currently using. That is gouging your customers.
Do not pretend to be a lawyer
As you can guess, this blog post was prompted by a piece of software putting in a stealth change which blocked me from using it on two of my machines. I immediately contacted the author of the software and expressed my displeasure with this change. The author wrote me back and told me that I had been using their software illegally.
Guess what, you are not a lawyer. Neither am I. We also are not a government body. What that means is that we have no authority or ability to make something illegal. Violating a software license, whether it is a valid license or not, does not illegal make. Stabbing someone is illegal; there is a law against that. Purchasing software and using it outside of the scope of the EULA is not illegal; at most it is a civil disagreement. When talking to your customers do not claim that something is illegal. It makes you sound like a moron.
If you want to sound like a lawyer, either hire one to handle customer support or go to law school. Don’t use legalese to sound impressive or try and scare your customers. Scared customers do not give you more money.
Customers want to like you
You solved a problem for them. They like you. They want to be your friend and shower you with affection. However that can quickly be turned into hate. When you treat your customers poorly they will become your worst nightmare. They will tell their friends not to buy your software and perhaps even start writing nasty blog posts about your software.
Word of mouth is a powerful thing. Most people when they are happy tend to keep quiet about it. However when they are upset they want to share their frustration. Guess which kind of customer is going to be vociferous; the one you made happy or the one you screwed over?
I learned long ago, never to wrestle with a pig. You get dirty, and besides, the pig likes it. –George Bernard Shaw
I learned long ago to never fight pirates. They enjoy it more than you do. From their point of view it is a challenge just to see if they can outsmart you. They enjoy it so much that they will do it for free! You, however, like to get paid for your work. No one is going to pay you for adding code to your software that is targeted at pirates. However you have a good chance of losing money if your customers get caught in your anti-piracy code and can’t use their software that they purchased.
Assume your customers are doing the right thing. Put in a serial number to keep your customers honest and then stop. Do not put in authorization checks to your server. Do not put in network checks on the license. Do not waste your time with junk that can cause problems for your customer if you made a programming mistake. Just like the lock on your front door is not going to stop a determined thief, your serial number is not going to stop a pirate. However both of them are going to stop an honest person from being tempted. That is your goal.
Spend that time making your software better and you will gain far more than you might lose to pirates. Your paying customers will be happier for it.
As with everything on this blog, this is the opinion of the author. But it is an opinion born out of experience and I practice what I preach. There are no network checks in my software. There is no authorization check to my server to stop a license from being used more than once.
Guess what happened with the software that prompted this article. I removed their software from my second machine, rolled back to the previous version on the remaining machine and I will be replacing it with their competitor’s software as soon as possible. They will not be seeing any more money from me. When someone asks my advice for a piece of software that solves that particular problem; guess who I am going to recommend.
I could have set up a rule to block their network check and continued to use their software. It would have been trivial and taken a lot less of my time than this article or writing the software author. However I have no interest in working with a developer who treats his customers like thieves.
Don’t treat me like a thief and I will give you money for your software. It is that simple.