« Localization on Mac OS X | Main | Using MD5 or SHA1 to verify the integrity of your downloads »
November 11, 2004
Costs of running a software small business
I'm writing this article for people who are thinking about starting up a business selling software on the Internet. These things often start out as hobbies, but as they become more serious, the costs (and potential benefits) start to rise as well. You may not be aware of some of these costs until you first stumble across them. So I'll list some of these costs as well as some hints on how to minimize them, and hopefully stay in business!
Net access
Your customers will expect prompt replies from you, so that means having always-on net access from your place of business. It's also helpful from a development perspective to have access to online documentation when you need it. Broadband is strongly recommended, and is more or less essential if you hope to do large downloads (like Mac OS X software seeds or updates to the Xcode Tools).
Hosting
To distribute your software and provide information to potential users you'll need proper hosting for your website. It's important to go with a reputable ISP who can provide reliable connectivity. At the hobby end of the spectrum, you can use the web space that is most likely bundled with your Internet access. As your software becomes more popular you will probably overshoot the bandwidth allowance of your provider and have to move to something more substantial.
You can pay for standard web hosting packages, virtual server packages, dedicated hosting (an entire machine all to yourself), and server colocation (where you provide the server and your ISP gives you space for it in its data center). As you move up the scale you pay more, but you get more control over the hosting. By the time you get into server colocation, you've got complete control over everything: you choose the OS and install it yourself and you configure and tailor every aspect of the server. This control comes at a price; you'll have to invest more time in setting things up, and the colocation fees will be high too.
I think that I definitely broke with the normal pattern for shareware authors when I started out, because I went down the server colocation path back in 2002, before I even released my first product. At that point I had already been running the website for several years, out of my own pocket. I had had a long run of troubles with unreliable hosts: sharing the machine with thousands of other sites, unreliable or downright broken email, down time, lack of control, poor security. I was absolutely sick of it. For me it was worth it to buy a server out of my own funds and arrange colocation for me to be rid of all those problems. And I am very glad that I did it, as I never have any problems with the server. And if I do have a problem, it's always my own fault, and I can always fix it (rather than wait for someone else to fix it).
No matter which hosting option you choose, you'll want to minimize your bandwidth costs. One of the best ways to do this is to recruit mirrors. In my own case this has been particularly critical because my server is in Australia, where bandwidth is still charged at the insane rate of 10 cents per megabyte. I also pay for hosting with pair.com over in the US where bandwidth is cheaper. That server hosts many of the images for this website as well as downloadable files. By spending a little extra money in the US I can hopefully reduce my Australian bandwidth bill. Pair is not the cheapest, but they have a good reputation and that's important to me after my prior negative experiences. And I only get them to host vanilla files served straight from Apache (no MySQL or PHP).
Server hardware
If you go down the path of server colocation, as I did, you'll need to buy a server. It's possible to cut corners and save money here, but I don't think it's worth the peace of mind. I recommend buying a complete package from an established vendor, like IBM. Buy a 1RU (one rack unit) server, because ISPs often charge you more when your equipment takes up more slots in the rack.
The IBM xSeries presents remarkably good value for money. For example, at the time of writing you can pick up their xSeries 306 (equipped with a 2.8GHz Pentium 4, 1MB cache, 512MB RAM, 36GB 10,000RPM SCSI disk drive, and CD-ROM) for $1,309, or less than half the cost of the cheapest Xserve sold by Apple ($2,999). A machine like this is more than enough to serve the average website.
Like most things in this business, as you get more serious you can (and probably should) spend more money. You may buy a single server the first time around, but as your business grows you may decide to purchase two servers the next time, and set them up in a redundant failover configuration, so that if one of them goes down, the other will automatically step in to ensure service to users isn't interrupted. You'll pay twice as much for colocation (because you'll use twice as much rack space), but the additional peace of mind is probably worth it.
I haven't gone that far yet, but it is something I would definitely like to do. I do make off-site backups, but when my server is in Australia and I live in Spain, I would feel a whole lot more secure if I knew that I had a failover arrangement in place. I've done a bit of research on that topic, and will add another article to the Knowledge Base on that subject in the future.
Other hardware
When you start off as a hobbyist you presumably already have a computer. As you get bigger, you'll need to buy more hardware. For example, if you develop for more than one target operating system (for example, Jaguar, Panther and Tiger), you'll need additional partitions, drives or machines to do the testing. If you have a large customer base, you'll need a laptop so that you can stay in touch with your customers even when you're on the road.
Even if you have only one machine, you'll want to make sure it's a good one. When you use your machine to make a living, its performance starts to matter. You may never play a game of Doom 3 in your life, but if you find yourself waiting for your machine to catch up with your typing and mouse clicks, then you probably need a better machine. If it can't even keep up with your typing then just imagine how slow it will be at compiling and doing other things. Just ask me how I feel about working on a 1GHz PowerBook 12" G4... By no means the slowest machine out there, but if I had a nickel for every time I have to wait for it to catch up with me in a day...
And then of course there is the need to preserve data integrity. If you lose your family holiday snaps due to a hard drive failure then it's very sad; but if you lose all of your business data (your records, your source code) it could spell the end of your little enterprise. Unless you're prepared to see that data go bye-bye, then you'd be wise to invest in a UPS to protect against power failures and surges, some kind of RAID set-up (even if it is only twin mirrored drives using Panther's in-built software RAID), and a good backup mechanism (whether it be to external drives, burning to optical media, or tape).
Software
Luckily, the core development tools (Xcode Tools) are free, but there are a lot of non-free tools out there which will come in handy when developing your software, maintaining your website, and administering the business.
Examples of commercial software that I've licensed for this website include Movable Type (for various sections of this website, including the one you're reading now), and UBB.threads (for the forums). Each of those will set you back a couple hundred dollars.
Fortunately, some things are free, like the Bugzilla bug tracking and feature request database. The operating system on the server itself is free too (FreeBSD). Of course, if you want these great free packages to stay around then you really need to support them, for example by buying a CD or DVD set.
Other tools which you may end up finding indispensable, all of them with hefty price tags include BBEdit, Adobe Photoshop, Macromedia Dreamweaver, Macromedia Fireworks and FileMaker.
Other, less expensive software that I've purchased for work includes ecto (in fact, I'm typing in it right now), Interarchy, Impression, MailTemplate, SnapzPro X and Mail Scripts, to name a few. [A couple of other products I've just started to trial, and which look like they'll soon become indispensable are Accessorizer and SpamSieve.]
Domain names
At the beginning you may not even require a domain name. You might be happy with "homepage.mac.com/johnsmith/" as your website address. In order to market your software, you will eventually want your own domain name. There's really no limit to how far you can go with this. You may choose to buy a different domain for each product, and you can also opt to get not only the dot-com name, but the dot-net and dot-org as well.
In my own case, I own quite a few domain names, but I direct them all to this one site, wincent.dev, because I want to build the Wincent brand.
SSL certificates
If you want to support SSL connections over HTTPS, then you'll need an SSL certificate as well.
Post office box, phone, premises
At some point you'll decide that you need an official physical presence in the world; not just a "cyber" presence. You can only use you're mother's mailbox for so long. Eventually you'll want your own post office box, phone line, and perhaps one day even leased office space. One of the beauties of Internet-based software business is that you can start off in your basement or bedroom if you need to, and the nature of the business is flexible and you can adapt it over time depending on how quickly (and even if) you grow.
Payment processing fees
This article over at macdevcenter.com reviews some of the payment processing services available to you. Personally I only have experience with Kagi and PayPal.
PayPal's fees are lower, and so they enable you to set your price point lower, which in turn makes PayPal the most popular option with customers (even though many people have misgivings about PayPal). If someone donates you a dollar, you'll lose about half of it in fees, but if they pay you for a $5 product then you'll only lose 50 cents. You can withdraw the money into your bank account whenever you want for a $1 fee.
You'll still want an alternative processing service, for those who don't like PayPal or can't use it, but the costs will be higher for both you and the customer. To use Kagi as an example; consider the product that sells for $5 via PayPal; if you were to sell it for $5 via Kagi you'd have only $2.50 after fees. Furthermore you'd have to wait a long time before you got access to the funds (for example, a payment made on 1 December wouldn't be mailed to you until 20 January, and if the cheque is being sent overseas then you will lose $10 for banking a foreign currency cheque, five to seven days for transit time, and 28 days for the funds to clear. What this means is that for the customer who paid you for the license on 1 December, you only actually get your hands on the funds three months later. This is effectively a cost to your business because not only do you miss out on earning three months' interest on that money, but you could well end up paying interest in the meantime because you are more likely to have to pay your bills using credit).
Another additional cost with Kagi is that they charge VAT (Value Added Tax) to all customers living in the European Union, even if the company selling the software is located outside the EU and has a turnover that is below the threshold for VAT. I don't have the figures on me right now, but you can turn over something like $100,000 per year before you're officially required to collect VAT. So this means that a lot of customers are needlessly paying as much as 25% above the price that they should be paying when they use Kagi.
The difference between Kagi and PayPal is most noticeable to the customer when the product is a low-priced one. For example, Synergy costs only 5€ when you purchase through PayPal, but $10 when you purchase through Kagi (plus VAT if you are unfortunate enough to be penalized for living in the EU). On a higher priced product, one that cost $25 or more, you could afford to equalize the prices across the board and absorb any differences so that the customer isn't affected.
Another alternative is to get your own merchant bank account and hook yourself up with a payment gateway (for example, see authorize.net for a list of resellers). Some of those resellers will open accounts for you even if you aren't in the USA.
Having your own payment gateway means that you can bypass PayPal and Kagi with all of their fees and technical problems, but as always, there is a cost. There's no protection from chargebacks and you have to develop the server-side software (or purchase it) to talk to the gateway. This can be a costly exercise, but as you move along the scale from hobby to serious, it eventually becomes unavoidable. Would a company like Adobe or Microsoft use PayPal or Kagi to collect payments for their software? There's evidently a threshold somewhere, and one day you'll have to cross it.
Wages
Generally when you start of there'll be only one employee: you. But even when you are self-employed you still have to worry about wages. Of course, you'll have to pay bandwidth bills and the other costs that we've already discussed, but at the end of the day you are not in business if the activity you're engaging in doesn't end up putting money into your pocket. That money which, figuratively speaking, "goes into your pocket" is your wage. It goes without saying that unless you have a wage you won't be able to pay the rent or buy food to eat!
You need to look at your time in terms of its dollar value. For example, in Australia, I can earn A$10 (US$7.50) per hour if I work "cash in hand" at a video store. If I work in a bookstore, I can earn almost A$17 an hour (before tax). These are both jobs that I've worked at in the past.
When it comes to running your software business, you have to think in terms of the value of your time. So, I'll take that base figure of A$10 per hour. For every hour that I devote to software when I could have been working in the video store or the book store, I will have to find A$10 from somewhere to help me pay the rent, to recover the money that I didn't earn. In other words, if you expect to continue in business, you have to make sure that each hour you spend working on your business earns you $10. This is actually a pretty modest figure, compared to what a consultant, a doctor, a lawyer, or other professional would charge per hour. In fact, it's much less than a plumber or skilled tradesperson charges. So $10 is a realistic goal, but you are going to need every penny of it in order to meet all those costs.
Of course, when you work on your own, you don't actually "pay yourself a wage" as such. There's no pay packet at the end of the week, the fortnight or the month. You take your income, pay your bills, and hope that there's some left over at the end. And along the way you use credit where necessary to ride you through the rough patches, and you try to accumulate a safety net when things are going well.
Tax
If you ever do get to the point where there is some money left over at the end of the month, you've officially got an income in the eyes of the taxation office. When you start off you might spend $5,000 in a year and only sell $1,000 of software. There's no tax to pay. Further along you might spend $5,000 but sell $10,000 in the year, and then you will indeed have to pay tax on the $5,000 that was left over, just as you would have to pay tax if you earned that money working as a sales assistant or a teacher.
Developer Program Membership
You'll want to join the Apple Developer Connection, or ADC. You can get a free online membership, but it really doesn't offer anything of much value. To get access to hardware discounts, software seeds, and regular mailings, you'll need to pay at least US$500 (annually) to get Select membership.
It is a lot of money, but I do think it's worth it, especially if you can time it so that it coincides with a hardware purchase (the hardware discount could even be enough that the ADC membership ends up "paying for itself", relatively speaking).
I started off as a free "Online" member and bought my first Select membership in November last year. Since then I've really appreciated the mailings, more than anything. It's also nice to receive the occasional copy of the operating system on official media. At the moment I only have one machine, so I am not about to go installing Tiger on it (I need my production machine to be totally stable); but if I did have another machine I think the seeds would be a valuable resource too.
The next step up from Select membership is Premier membership, which includes even more benefits, but with a whopping price tag. Definitely not for the small shareware operator. An intermediate step would be to go to WWDC (the World Wide Developers Conference), but that too had a hefty price tag ($1,500) last time I checked, especially when you add in airfares and accommodation.
Office supplies
A small cost compared to the others, there's still no avoiding the need for blank media, paper, envelopes, stamps, and the other material you'll need in the day-to-day running of the business.
Advertising
Luckily, you can probably do without paid advertising for some time because the Internet is based on communities. There are lots of opportunities for free promotion and for "word of mouth" advertising. Generally, the more popular your software becomes, the more it will start to promote itself. Just make sure you've got your website in order when the visitors come!
Of course, with increased attention comes increased competition. If you have a good idea expect it to be copied time and time again by people who can't come up with creative ideas of your own. The only remedy for this is to keep one step ahead as far as good ideas are concerned and hope that you have the time to implement them all! Legal warfare is probably not an option for the small operator!
Piracy
When I worked in the bookstore, shoplifting was a real problem, but I learnt a very valuable lesson from the owner of that store. Every day he knew that dozens of books, worth hundreds of dollars, were being ferreted illegally out of his store. He was an owner/operator, so it really was money from his pocket that was walking out the door.
But what really impressed me was that he always kept his cool. Of course, if someone was detected shoplifting he apprehend them and called the police, if he could. But he was always cheery and he never became obsessed with the theme that every hour at least a few of his books were being stolen from the shop. He had every reason in the world to have high blood pressure, yet he didn't have it. And this was because he viewed theft as one of the costs of the business, just like electricity or rent. You wouldn't lose sleep because you have to pay for electricity, would you? I think that we can productively compare shoplifting with software piracy.
There are lots of ways to look at piracy, depending on which side of the fence you're standing on: as a crime, as a fact of life, as a harmless pastime, as a game, and so forth. But as a business person, the only sensible way to look at piracy is as a running cost.
Piracy is basically unavoidable, like paying for electricity. If you suffer a demonstrable 5 or 10% loss in sales because of piracy, then you're probably just like every other software company in the world. You can think about ways to minimize that loss (just like you can try to minimize your electricity bill), but you'll never escape it entirely.
The problem is when that percentage gets out of control, as it has of late with my software. Over the last few months I've seen sharp drops in sales which correspond with periods when license codes are mass-distributed, or cracks start to circulate. You can match up the days on which leaks occurred with drop-offs in the sales; and you can watch the sales recover bit by bit when you blacklist license codes or block cracks. But once you've started to lose the war, the game is pretty much over. You'll have to resign yourself to about 30% loss in sales until you can completely re-engineer your protection.
So the goal should be to have adequate piracy protection that keeps the damage done to a manageable level (like 5 or 10%) and not spiraling out of control (30% or more).
General costs
If you work on your own you won't have to pay other people's wages, but you will have to do all the work yourself! Imagine all that money you'll save when you don't have to employ a UNIX systems administrator to set-up and manage your web, mail and database servers; when you don't have to pay a web designer or graphic artist; when you don't pay an accountant; when you don't have to pay for customer support staff, and all the rest.
Of course, the other side of that equation is that all of those jobs still have to be done (and more). And you are the person who will be doing them! And if you remember the point made above about the equivalency of time and money (your time being valued at $10 an hour), you've got to remember that every hour you spend doing UNIX administration, every hour you spend doing accounting, and so forth, effectively costs you $10.
You have to carefully evaluate where you spend your time, in terms of whether or not it will bring you the long term pay off. Ask yourself, if I spend an hour doing my tax return, will that time be well-spent, financially? (Of course, the answer is yes; if you don't do your tax return you might wind up getting fined or thrown in jail!). Ask yourself, if I spend an hour upgrading the mail server software, will that time be well-spent? And if I design new graphics for the web site? And if I spend a day learning how to set up a master and slave database replication setup?
All of these questions have to be weighed up. It's one of the great things about the job: the variety; but you have to remember that ultimately every hour you spend has to be justified in the long term, and it has to have be financially viable, in the "big picture" sense, otherwise you won't be able to keep doing what you love to do (developing software). This very article is a good example of just one of those evaluations. Why have I spent a couple of hours ($20) writing an article for which no one is going to pay me? The answer is that I do it because I think it adds value to the site, helps to build a community here, and I think that in the long-run that having a community following at wincent.dev is in my best interests. And along the way I know that it's a good thing, because it might help other people, and helping other people is never bad.
It can be a stressful thing at times, knowing that what you're doing has no immediate or tangible "pay off", and knowing that the rent will be due the next month and that above all else what the customers want is for you to work on the software. But it's a balancing act, because without all of the surrounding support work, the software wouldn't exist.
Posted by wincent at November 11, 2004 02:20 AM