Tag Archives: software

VAT basics for software vendors

The dreaded VAT. Ugh. Value Added Tax (VAT) is the European equivalent of sales tax and it is a Royal Pain In The Arse. However, if you are running a business that makes sales in Europe you need to understand VAT. In particular it has important implications for your choice of payment processor, even if you are based outside the EU or below VAT registration thresholds. I have put together a few pointers here in the hope that it will help someone grappling with the complexities of VAT. But please note:

  • I am not an accountant. If you need proper advice, talk to a proper accountant.
  • The VAT rules are complex and may be interpreted differently by different people.
  • The rules may be different in different countries.
  • The rules change over time.

Only VAT registered businesses have to charge VAT. You have to register for VAT once your sales reach a certain threshold. At the time of writing,  UK-based businesses have to register for VAT if their EU sales exceed £77k in a 12 month period (technically it is UK sales, but the ‘place of supply’ for EU consumers is classified as the country of the seller). You can also choose to register for VAT before you reach the threshold. But it usually isn’t worth it, unless perhaps you think having a VAT number is essential for your credibility. Personally I waited until I couldn’t avoid it any longer.

Even if your business is not based in the EU, the EU still expect you to pay VAT on any sales inside the EU once you reach a threshold. This is controversial and it isn’t clear to me exactly what the EU can do to enforce this if you are based outside the EU. Talk to your accountant.

The VAT rate varies between countries. At the time of writing it is 20% in the UK and 19% in the Netherlands. It also varies over time, it used to be 17.5% in the UK.

The UK also has a simplified flat rate VAT scheme with a lower VAT rate. But you can’t claim back VAT on purchases. Worse still, it appears that you will effectively be paying VAT on sales outside the EU. So that doesn’t seem at all attractive.

The VAT rules are complex and depend on:

  • where you are based
  • where your customer is based
  • whether your customer is a business or a consumer
  • whether you are selling goods or services

Technically you do not have to charge VAT to an EU business, even if they aren’t registered for VAT. Apparently they are then responsible for “self-charging” the VAT. However the burden of proof is on you to show that the customer is a business. So most vendors require a VAT number as proof of business status.

There also seem to be disagreements over whether software is goods or services. What if you ship a CD?

Here is a simplified summary in pseudo-code of whether a seller needs to charge VAT on software as I understand it:

paysVAT()
{
    if ( seller registered for VAT)
        if ( customer in EU )
            if ( customer is a business )
                if ( customer in same country as you )
                    return TRUE;
                else
                    return FALSE;
            else
                return TRUE;
        else
            return FALSE;
    else
        return FALSE;
}

Except that people in Norway and Switzerland (which aren’t in the EU) pay VAT in some circumstances. Don’t ask me why. Also you don’t pay VAT on some items, e.g. postage. And outside the scope of VAT (O), not rated for VAT (N) and zero rated for VAT (Z) are all different VAT codes meaning no VAT is payable. As I said, it’s complicated. Not complicated and interesting like quantum mechanics or the love lives of celebrities. Just complicated.

The only upside of being registered for VAT is that you can claim back the VAT you pay on any purchases you have made (make sure you get a VAT receipt). Or, if you are buying from another EU country, you can tell them your VAT ID and they shouldn’t charge VAT (see above). So any equipment you buy in the EU is now 20% cheaper. This is small recompense for the giving 20% of your sales in the EU to the VAT man. Try not to think about that. Instead give yourself a pat on the back for having reached the VAT threshold. A lot of businesses never do.

Note that when you register for VAT you may be able to claim back the VAT of products purchased before you registered. When I registered I could claim back VAT paid on goods purchased within the last 3 years and services purchases within the last 6 months. So keep your VAT receipts.

Congratulations on making it this far. Here is the important bit. How you process payments has important implications for VAT. When someone pays you via a payment processor, such as PayPal, legally they are buying from you and the payment processor is just handling the payment on your behalf (like a bank cashing a cheque). So you are responsible for collecting what VAT is due and paying it to the appropriate government. This can be a major headache if you are selling hundreds or thousands of licences per month.

When you use a reseller, such as Avangate or Fastspring, legally you are selling your licence to the reseller and the reseller is then reselling it to the customer. The reseller is then responsible for deciding what VAT is due, collecting the VAT and doing the paperwork. They then pay you net of the VAT and their commission. Leaving you to sort out the VAT for their one payment to you per month.

Using a reseller is a big win if you are registered for VAT. I am registered for VAT and use Avangate as my payment processor. They do the heavy lifting in terms of calculating, collecting and paying the VAT on my sales. But if you aren’t registered for VAT be wary of using a VAT registered reseller – approximately 20% of your sales will be disappearing in VAT (which the VAT registered reseller has to charge) which you could be keeping if the customer bought from you direct. So if you aren’t registered for VAT, a reseller such as Avangate or Fastspring may not be the best solution for you. Check out e-junkie.

VAT admin is fairly straightforward. To keep the VAT man happy I have to file:

  • an EC sales list every month
  • a VAT return every quarter

My Quickbooks accounting package generates the numbers for these. It only takes a few minutes to file reports online once all the transactions and VAT codes are entered correctly into QuickBooks. The VAT man then debits (or credits) the appropriate amount from my business account each quarter. It is not too bad, as long as I don’t think about the wheelbarrow loads of cash Avangate keeps to pay the VAT man. Maybe they roll around naked in it on the last day of every quarter. I probably would.

When I first registered for VAT I tried adding the VAT onto my existing prices. But I found that sales dropped more than 20%. So I ended up keeping the gross price (including VAT) the same, whether the customer pays VAT or not (Avangate gives you this option). Whatever you do, make sure it is clear whether any prices you quote include VAT. EU consumer expect to be quoted prices inclusive of VAT and won’t appreciate it if you try to sneak on an extra 20% at the end of the purchase process. You may be legally required to quote the price including VAT in some countries.

A final note of warning. The VAT man has a lot of powers. I understand the UK VAT man can kick your door in and seize your equipment without needing even a warrant. He might not be impressed to find out that the computer you reclaimed the VAT for is an XBox. Do not mess with the VAT man.

If I have made any mistakes, missed anything out or if the rules are substantially different in your country, please add a comment.

** Please note that this article was written in 2012. It doesn’t cover changes since then, notably ‘VAT MOSS’. **

Thanks to Marcus Tettmar of Macro Scheduler automation software for checking this through and advising me on some of the finer points.

33 tips for giving great technical support at a small software company without being swamped

To have the best chance of success you need a great product, great marketing and great support. Many companies with great products and marketing fall down on the support.

Good support is essential to a good user experience. Any non-trivial piece of software is going to result in questions that need to be answered and issues that need to be resolved. But supporting customers is often seen as an onerous chore. An overhead. Something to be done by those not talented enough to be developers.  This is a very unfortunate attitude. But it also an opportunity, as software companies that provide great support can really stand out from their competitors. The lower they set the bar, the more opportunity you have to shine.

The fact that the support staff and the developers are often the same people in a small company is a real strength. Because the developer knows the product better than anyone else, they can give better answers. Also, the direct feedback developers get from customers can be very helpful in further improving the product. This means that a small company can often provide much better support than a large company that has multiple layers of support between the customer and the developer. The downside is that the more time developers spend on support, the less time they can spend doing development. Eventually you may reach a level of sales where you are spending nearly all your time doing support, with very little left for the development and marketing required to grow the business. The challenge is to provide great support without being swamped by support work.

I have been supporting my own wedding table plan software since it was first released in 2005. I have managed to grow my sales for 7 consecutive years without being overwhelmed by support. In fact technical support emails have stayed at roughly 40 per week for the last few years despite increasing sales. Before that I had never really done much technical support, so it has been a learning experience. Here are some of the things I have learnt along the way.

Manage customer expectations

Make the level of support clear to the customer:

  • Is it free or does it have to be paid for?
  • Is it email only or is telephone support also available?
  • What sort of response time can they expect?
  • What languages do you provide support in – just English?

I don’t provide technical support by telephone or instant messaging, because it is too disruptive to me as a one-man-band.

Manage your own expectations

Your software is a means to an end for the customer. Very few customers will read the documentation you spent all those hours writing if they can possibly avoid it. Some of them won’t even read to the end of a 1 sentence error message (really). Some of your customers will be ‘technically’ challenged (often without even realizing). Sometimes the problem exists between keyboard and chair. Get used to it, because human nature isn’t going to change any time soon.

Make it easy for the customer to contact you

Don’t hide your support email address. Allow the customer to email you from the software itself. This also gives you the opportunity to add some useful information to the email (the software version, their OS, whether they have a licence etc).

Be responsive

Generally speaking, the faster you respond, the better. When I send an email to support I expect to get a response by the same time on the next working day and hopefully within a few hours. I try to answer my support emails at least twice a day, 364 days a year. I do this because I want to give a great service, but it also means I don’t come in to a massive pile of support emails every Monday morning. It means taking a laptop with me whenever I am away for a night. But I find it isn’t a huge chore to spend an hour a day answering support emails on holiday. Especially when I remember that the business is paying for the holiday!

But not too responsive

The downside of being very responsive is that it makes some customers lazy. If they know they will get a response within a few hours they may email you about things they could easily look up themselves. The best response to this is ‘throttling’ (NB/ I don’t mean strangling) – when you notice that a customer is being lazy, take longer and longer to respond to each email. Eventually they will take the hint.

If you are trying to look like a bigger company than you are, then you probably don’t want to answer support emails outside of normal work hours.

Respond as clearly as possible

  • Quote the customers email in your reply where appropriate for context.
  • Number step-by-step instructions.
  • Use quotes to refer to elements in your software, e.g. select ‘Help’>’About’ from the main menu.
  • Write in short paragraphs, not big chunks of text.
  • Avoid technical jargon unless you are sure that your customer will understand. For example, say “window” rather than “modal dialog”.
  • Use proper grammar and check the spelling.
  • Avoid long email signatures.

Use images and videos

It is often helpful to include an annotated image with your response. For example you can do a screenshot, highlight important items in the screenshot and then email this as an attachment, along with some text. I find the screen capture tool SnagIt is excellent for doing this (available for both Windows and Mac). In some cases it may also be worth doing a short screencast, uploading it and then sending the customer a link (SnagIt can also do this).

Restate unclear questions

Support questions can be very vague. I have even had people email me just “It doesn’t work” – it wasn’t even clear whether they were referring to the website, the installer or the software. It often takes a few emails to understand what the problem is. If you aren’t 100% sure what they mean, make your best guess at what they are trying to say and restate it in your own words followed by “Did I understand correctly?”. Ask them if there are any error messages. Ask them to send you a screenshot (include a link to instructions on how to do this).

Finish an email exchange

If the customer started the exchange, you should generally finish it (i.e. send the last email). But it is probably not worth responding to an email that is just a 1-line thank you.

Pick up the phone when required

Even if you don’t officially offer telephone support, it sometimes can sometimes save a lot of time and aggravation on both sides if you pick up the phone and talk to the customer.

Put your documentation online

If you have your documentation online you can easily include links to relevant pages in your documentation in your email. This might also encourage the customer to look in the documentation first next time. But don’t just send a link. Answer their question in the email and then include the link as supplemental information.

Help the customers to help themselves

The beauty of a software product business is scalability. In theory, you only need to create your product once and then you can sell it to as many people as you can convince to buy it with negligible marginal cost. In theory. In reality, while a software product business is inherently much more scalable than a consulting business, the marginal cost per sale is not negligible. Far from it. Customers need support.  Here are some of the way you can reduce the support cost per customer:

  • improve the user interface and documentation, based on customer feedback
  • add an FAQ
  • allow customers to retrieve their licence key direct from your website (emailed to the registered email address, for obvious reasons)
  • encourage customers to look at documentation, FAQs, forums etc before emailing you (below is the window I show when customers select Help>Technical support in PerfectTablePlan).

Note that it has been shown experimentally that the more text you show someone, the lower the percentage of it they read. So it is generally more productive to concentrate on simplifying the user interface, rather than writing more documentation.

Of course, you can also reduce support requests by making it difficult for the customer to contact you (the Amazon model). But this leads to less feedback and a worse user experience, so I wouldn’t recommend it.

Allow customers to help each other

If you have a sizeable user base you can set-up a forum to encourage users to help each other. This can have various benefits:

  • customers may be able to get answers straight-away by searching existing content on the forum
  • customers may answer some questions for you
  • customers may respond faster than you can
  • it increases your SEO footprint

But it also has its drawbacks:

  • nothing looks sadder than a deserted forum
  • a forum has to be actively moderated or it will end up reflecting badly on your company
  • spam can be a problem

Automatically report crashes

It is often possible to detect that the software is going to crash or has crashed and send yourself some diagnostic information. This allows you to monitor how stable the software is and gives you some clues for debugging. For example, on Windows you can use the Win32 API method SetUnhandledExceptionFilter() to detect when things have gone horribly wrong. Don’t send it without their permission though. Give them the option to see the information you are going to send and then allow them to send it with a single button click.

Remember that every computer is different

There is a rumour that there are 2 identically configured PCs somewhere in Nebraska. But I don’t believe it. The customer may have configured their OS with all sorts of strange options you have never heard of. Anti-virus software, malware, DLL hell and hardware issues can cause problems. A cosmic ray might have even passed through their RAM! So I generally don’t spend too much time on a bug report unless either I can replicate it myself or 2 separate people have reported it.

Be proactive

I actively seek feedback from my customers. It increases the support burden somewhat, but I think this is more than compensated for by increased customer satisfaction and improved feedback.

Make use of feedback

I think all developers should spend at least some time supporting the products they developed. A few days every now and then in the support trenches answering customer emails and phone calls would give developers a better appreciation of how customers think and of the real costs of that cool feature shoe-horned into the release a week before the ship date.

Look at every support request as a possible way to improve your product. The first time you get a support request you answer it. The second time you get the same request you need to start thinking about how you can improve the product so that question doesn’t get asked a third time. By continually improving your product in this way you can greatly reduce the average amount of support time required per customer over time. Obviously you need to make it easy for customers to contact you to make this work.

Don’t take things personally

No matter how hard you try some people are not going to like your software. I once got so angry with Microsoft Project that I nearly threw a monitor out of a window. An angry customer might send you an angry email. Try not to take the criticism personally (link note: funny, but sweary). Maybe the customer is having a bad day. Perhaps they just don’t have any manners. As long as they remain a small minority, try not to lose any sleep over it. On the plus side – at least they cared! And it is often possible to turn a passionately angry customer into a passionate advocate for the product. Indifference is much harder to convert into a sale.

Don’t shoot the messenger

If someone reports what they think is a bug, you should thank them, rather than taking it as an insult to your programming skills. Experience shows me that most people who encounter a bug won’t bother to report it. If you have ever tried reporting a problem to a big company like Microsoft, you will understand why. An unreported bug can result in a lot of unhappy customers and lost sales. Customers who report bugs are a precious resource and should be treated accordingly.

Tell a customer when you have fixed their bug

Whenever a customer reports a bug  I record their email address along with the bug report. When it is fixed I then email them. This encourages them to report other bugs they find in future. Similarly for feature requests.

Give credit where credit is due

When I list bugs fixed in a release I also give the names of the customers who reported the bugs (first name + initial of last name). If a customer has been particularly helpful, e.g. putting significant effort into helping me find a bug, I may also list them in the software ‘credits’ window. It doesn’t cost me anything and it encourages these customers to feel more ownership of the product and report more bugs.

Google translate is your friend

I only officially provide support in English. But if someone emails me in another language I will use Google translate to read their email and reply in English, including a translation of my reply from Google translate. The quality of the translation may not be great, but it is probably good enough.

Use the right tone

Being professional doesn’t have to mean cold and impersonal. Try to sound like a real person, rather than a robot. Include your name in your signature. I address people by their first name (where known) and I’m not above including a smiley, where I think it is appropriate. Different markets and cultures may demand different levels of formality. Usually you can take your cue from how formal the customer is. Above all, try not to blame your customer or make them feel stupid.

Only support your own product

It isn’t your job to teach your customer how to use a computer. Try to steer clear of providing support that isn’t directly related to your own product. Otherwise you might find you end up as their general IT helpdesk.

Get the price right

If you are swamped in support emails, consider raising your price. Depending on the price elasticity of your product, you may be  able to generate the same or more revenue with less customers and therefore (hopefully) less support emails.

Firing a customer is the final resort

Sometimes a customer will buy your product when they really shouldn’t have, either because it is the wrong tool for the job or because they don’t have the skills required to use it. They will then bombard you with email after email. In such cases it may be best to refund them. Allow them to keep using the software, but tell them that you won’t be able to provide any further support. Something along the lines of “It appears that our software is not a good fit for your requirements. We have therefore refunded your purchase in full. Please feel free to keep using the software, but please note that we won’t be able to provide further technical support.”. This is the nuclear option. I have only had to resort to it a handful of times in 7 years.

Don’t tolerate abusive customers

The customer is not always right. Buying your product does not give them a right to be abusive, no matter how much they paid. Politely and professionally fire them if they can’t behave like a decent human being.

Never send an email in anger

People can sometimes be unreasonable, even downright rude, especially when they are safely at the other end of an Internet connection. But never, under any circumstances, respond with a rude or sarcastic email. Your email might be posted onto forums for all the world to see, forever more, devoid of its original context. Not good. Also, sending a rude response is only going to pour petrol on the fire. Always keep your emails polite and professional. If you find yourself getting angry, go and do something else for a while, until you can send a calm reply. If you can’t reply professionally, don’t reply at all.

Use the right tools

You don’t need a lot of tools to provide good support. I mainly use:

  • an email client (Thunderbird)
  • a bug/feature request tracking database (OnTime)
  • a screen capture tool (SnagIt)
  • a phrase expander for quickly typing common phrases (PhraseExpander)
  • a database of licence keys (home rolled)
  • VM software for emulating different operating systems (WMWare Workstation)

As I am the only one doing support I find that it is sufficient for me to use my Thunderbird email client to check previous correspondence (search by email address), track status (using different coloured tags for: awaiting their response, follow-up later etc) and enforce a simple workflow (move to different folders). If you have multiple people doing support you may also need helpdesk software (such as Helpspot) and/or a ticketing system.

You can use remote access software such as CoPilot to remotely log in to a customers computer. But I try to avoid this where possible, as it is time consuming and also the customer might blame me for any problem they have with their computer afterwards (e.g. a virus infection).

Think twice before outsourcing support

It is cheap to outsource your support to e-workers in developing countries. But they won’t know or care about your product as much as you do. And moving yourself further away from the customer reduces that all important feedback that you need to keep improving the product.

Time new releases carefully

You are going to get the most support emails after you put out a new release. So try to avoid putting out a new release just before you go on holiday.

Have the right attitude

While it can be frustrating to provide support to someone less technically minded than yourself, remember that not everyone is a computer geek and these people are paying your salary.

Remember the golden rule

The basic rule of technical support is to treat your customers how you would wish to be treated. If you bear that in mind, you shouldn’t go far wrong.

Further reading:

If You Want to Write Useful Software, You Have to Do Tech Support (Nick Bradbury)

Did I miss anything? What have been your experiences supporting your software? What surprised you?

Monetization: Ads vs Toolbars vs Charging

I believe that the best way for most small software vendors to make money off their software is to charge for it. So I was interested to spot a post on BOS by someone who had tried ads, toolbars and charging to monetize the same piece of software. He kindly agreed to share his experience anonymously. Obviously it is only one data point, but the results are pretty unequivocal.

I developed a freeware program six or seven years ago. A piece of utility software, for either home or business use, in an extremely crowded and competitive niche. The downloads grew organically and settled into what they are now, around 30,000-40,000 per month. I’ve never used any paid advertising, but have always had a forum and been responsive to user queries. That, coupled with regular updates, built the software a fairly loyal user base.

My original idea was to make money by attracting visitors to the website and using Google Ads. This isn’t generally done on software sites, but it kind of worked for me (I still had a day job though). Eventually it was making one or two thousand dollars per month. I experimented with toolbar installer offers – Bing for the US and UK, Ask for the rest of the world. The revenue wasn’t too bad, but the ads made more.

Eventually I decided to try selling a ‘Pro’ version of the software, with even more features. I planned to keep the free version as a ‘gateway’. Note the free version still has more features than non-free competitors. It took about 6 months to write (evenings and weekends), and was finally released (with no marketing, apart from the website) in Jan 2012.

As you can see, from the first full month the sales revenue brought in ten times what the toolbar did. I wound down the site ads, and eventually removed the toolbar (you can see the revenue tail off in the chart).

I quit the day job!

See also:

Selling software vs selling eyeballs

Farewell to software on CD?

I currently offer a CD as an optional extra when customers buy my wedding table plan software. I have put stamps on so many CD envelopes that I might instinctively lick the Queen’s face if I ever met her. The graph below shows the % of sales that have included a CD over time.

% CD sales

The overall trend is hard to miss. Some factors have varied over that time:

  • I have stopped CD sales for periods of a few weeks at a time, e.g. near a new release.
  • I have emphasized CDs less over time on my purchase page.

But I don’t think these have had much effect on the general trend. Download speeds are always increasing and customers are getting used to buying downloads instead of physical media. Anyone with a broadband connection can now download PerfectTablePlan in a minute or two. The demise of CDs is hardly ground breaking  news, but I thought it might be worthwhile to show some real data.

I won’t really miss CDs. They are an extra hassle to organize and the profit margins are slim and decreasing. I didn’t want to use the ugly looking CDs in a cardboard mailer that print-on-demand CD companies offer. I didn’t really feel it reflected well on the quality of my software. Particularly in the wedding market, where aesthetics are important. Instead I send a full colour silk screen printed CD, in a DVD box with a professionally designed, full colour wrap and insert.

I order the CDs and packaging in batches of a thousand and burn and post them as required. I have managed to delegate quite a bit of this to a family member. But it is still a fair amount of hassle. CDs go missing in the post or get eaten by dogs. Also the UK post office recently hiked the cost of sending a CD + DVD case in a Jiffy bag by airmail from £2.10 to £3.86. A monstrous overnight price increase of 84%. But I don’t feel I can increase the CD price much above the current £7/$10 when you can buy game and film DVDs for less in the supermarket. The only plus side of CDs is that my data shows that customers that order a CD are 3 times less likely to ask for a refund (my terms stipulate that they have to return the CD). Given that refund requests are low, this isn’t a huge advantage. Also (repeat after me) correlation does not imply causation.

I might run an A/B test to see if removing CDs from the purchase page makes any difference. But, given that only around 3% of customers are now buying a CD, I can’t see it making much difference. If I was starting a new product now, I don’t think I would even bother to offer a CD option, unless the download size was huge.

Am I the only one still sending out CDs?

An experiment with Pinterest

Pinterest is the latest darling on the social media scene. Pinterest reportedly hit ten million monthly unique visitors faster than any other website. It is currently claimed to have some 15 million users. Basically it allows you assemble (‘pin’) images from anywhere on the web into themed folders (‘pinboards’). You can download browser plug-ins that allow you to pin an image from a website to one of your pinboards in a few clicks. The social element comes from ‘following’ other Pinterest users and commenting on and re-pinning their images. It is a simple idea slickly executed. The emphasis on images makes it rather different to Facebook, Twitter and other social media brands.

83% of US users of Pinterest are women and typical pinboard themes include:  fashion, funny images of cats, interior design, places to visit, food and wedding ideas. Check the Pinterest home page to see a sample of images currently being pinned. The interest in weddings is particularly relevant to me as I sell wedding seating planner software. So I started to create some wedding reception themed pinboards as an experiment. I quickly decided that scouring the web for pictures of pretty seating charts, place cards  and wedding cakes wasn’t a) a good use of my time b) the right thing for a 46 year old heterosexual man to be doing (GRRR!). So, using outsourcing site odesk.com, I found a nice lady in the Philippines to do it for me for a very reasonable hourly rate. She also (unsurprisingly) proved to have much better taste than me. I think she also really quite enjoyed herself! The resulting Pinterest pinboard is at http://pinterest.com/tableplan/.

Here is some data from my little experiment:

Cost: approx $50, plus a few hours of my time
Total ‘pins’ to date: 551
Clickthroughs to http://www.perfecttableplan.com/: 154
Avg time on site: 0:42
Bounce rate: 75%
Traceable sales (from analytics and cookie tracking): 0

So that works out >$0.30 per click for not very targeted traffic (as shown by the bounce rate and avg time on site) and not a single sale. Not very encouraging. What’s worse, it only generated traffic while new pins were being added. As soon as new pins were no longer being added the clickthroughs fell off a cliff:

I may get some SEO benefit. But Pinterest isn’t looking a like a win for me. Also there are issues with Pinterest terms and general IP issues. Pinterest’s terms originally claimed that they could sell anything you pinned. They have since amended that to something more sensible. But pinning images you don’t own the copyright to is still problematic. I think most sites will be happy for people to pin their images, as long as they are correctly attributed – it is free advertising for them.  And it is obvious that most Pinterest users are happily pinning images without any thought about copyright. But it could conceivably get you into trouble for copyright infringement.

If you are a big name company with a big marketing budget, it may be worth putting some effort into Pinterest. Especially if you already have a big catalogue of images you own. But, based on my experiences, I think most small software companies can find better ways to spend their time.

Competition

Centurion tankA couple of years ago I got to drive a Centurian tank. 50 tons of clanking, smoke belching, killing machine. I can only imagine how terrifying it must be for an infantry man up against one of these heavily armed and armoured monsters. But, quite unexpectedly, I felt very vulnerable in the tank. My top lip was exactly level with a big spike of metal that formed part of the drivers hatch – if we had stopped suddenly I would probably have lost teeth. I could hardly move without bashing a knee or elbow on something hard. It was so noisy I could barely hear the shouting of the instructor, perched on the front of the tank only a few feet away. And, with my eyes only a few inches above the hatch, the visibility was poor. The tank was also very hard to drive, requiring an odd mix of finesse and brute strength. Just changing gear is quite an accomplishment for the inexperienced. I also got to sit inside some Russian tanks of more recent vintage and their ergonomics were even more nightmarish. Being inside one of these things on a battlefield, full of fuel and ammunition, a prime target for every enemy tank, aircraft and gun, must have been terrifying. It was a lesson that, what appears as invincible strength from the outside might feel very different from the inside.

  • Your competitor has more staff than you? That means that they have got to make more sales to turn a profit and they spend a lot more time in meetings.
  • Your competitor is better funded than you? That means they are spending more of their precious time and energy dealing with investors.
  • Your competitor’s product has more features than yours? Their product is probably more complex to use than yours.
  • Your competitor is using trendier technology than you? That probably also means they have a lot more third party bugs and issues to deal with.
  • Your competitor is based in a trendy location with better access to talent? That probably means they have to pay higher salaries and office rental and are more likely to get their staff poached.

Strength and weakness can be just two sides of the same coin.

I keep a vague eye on competition to my own table planning software. Over time I have built up a list of over 100 other products whose functionality competes directly with mine or overlaps significantly. New competitors appear fairly regularly. I notice that their website might look a bit more “web 2.0” than mine or their price is cheaper and my heart sinks a little. But, so far, it has never made a noticeable impact on my sales and I quickly forget about them. In fact my sales have gone up every year in the 7 years since I first released PerfectTablePlan. I just keep improving the product, marketing and support, day after day, year after year. While many of these competitors have since fallen by the wayside, with products and websites not updated for several years. Some of them are giving away their products free in the hope of making a few pennies from advertising. Some of them never even launched. Those that are still active are targeting rather different niches to my software.

Many companies respond to competition by trying to copy their competitors feature for feature. This is almost certainly a mistake. You will always be at least one step behind them. It is much better to listen to your customers and innovate. It is certainly a lot more interesting and rewarding. It is also much easier to market a product that is different[1].

There are cases where competitors can be a big problem, for example:

  • markets where there is a strong network effect (I wouldn’t want to compete head on with Ebay or Facebook)
  • markets where you might have to compete with the company that owns the platform (for example a Microsoft Office add-on isn’t likely to last long if Microsoft releases a new version of Office incorporating this feature)

So it is probably better to avoid these types of market, unless you are happy to accept that level of risk. But there are vast numbers of markets big enough to support multiple products. There are some 2 billion people with access to the Internet and they all have different requirements. Even a niche within a niche can provide a decent living for a small software business.

Competition can actually help you. The main competition for my table planning software is Excel and Post-It notes, not other table planning software. My competitors are helping to raise awareness of the fact that there is such a thing as software for table planning. Some of the people whose awareness they raise, are going to search for other software solutions and find and buy my software (thanks!).

So next time you find out about a new competitor, don’t panic. It is natural to focus on their strengths and your weaknesses, rather than your strengths and their weaknesses[2]. But they are probably doing the same, and they may be more afraid of you than you are of them.

In truth your biggest fear should be having no competition. If there is a no-one else doing what you are doing then either you are genius who has found an untapped market or the market doesn’t exist. Unfortunately, it is almost certainly the latter.

Further reading:

‘Choose your competition’ by Eric Sink

[1]This is why adverts for commodity products such as instant coffee and soap powders are so consistently awful.

[2] Microsoft should take note before they ruin a product with 90% of the highly lucrative desktop operating system market in their panic to compete with Apple in the tablet market.

Photo by Alistair Joseph.

Promoting your software

This is a video of a “Promoting your software” talk I did at ESWC 2011. In it I discuss my experiences attempting to try every form of promotion known to man including: SEO, Google Adwords, magazine ads, affiliates, Facebook ads and hanging out in wedding forums using a female pseudonym. With real data! You can’t read the slide text in the video, but I have included the slides below.

A couple of people asked me afterwards whether anything I tried had worked. Yes! I wouldn’t have survived long as a microISV otherwise. But I didn’t really want to dwell on what had worked for me because it might not be relevant for different products with different price points in different markets. Also that isn’t the sort of information I want to give to my competitors.

Things were running a bit late due to problems with the projector, so I didn’t have time for the audience participation at the end. Projector problems are really not what you need when you are just about to do a talk to a room full of people! Many thanks to Alwin and Sytske of Collectorz for doing the video and to Dave and Aaron of Software Promotions for helping to sort out the unruly projector.

Cppcheck – A free static analyser for C and C++

I got a tip from Anna-Jayne Metcalfe of C++ and QA specialists Riverblade to check out Cppcheck, a free static analyser for C and C++. I ran >100 kLOC of PerfectTablePlan C++ through it and it picked up a few issues, including:

  • variables uninitialised in constructors
  • classes passed by value, rather than as a const reference
  • variables whose scopes could be reduced
  • methods that could be made const

It only took me a few minutes from downloading to getting results. And the results are a lot less noisy than lint. I’m impressed. PerfectTablePlan is heavily tested and I don’t think any of the issues found are the cause of bugs in PerfectTablePlan, but it shows the potential of the tool.

The documentation is here. But, on Windows, you just need to start the Cppcheck GUI (in C:\Program files\Cppcheck, they appear to be too modest to add a shortcut to your desktop), select Check>Directory… and browse to the source directory you want to check. Any issues found will then be displayed.

You can also set an editor to integrate with, in Edit>Preferences>Applications. Double clicking on an issue will then display the appropriate line in your editor of choice.

Cppdepend is available with a GUI on Windows and as a command line tool on a range of platforms. There is also an Eclipse plugin. See the sourceforge page for details on platforms and IDEs supported. You can even write your own Cppcheck rules.

Cppcheck could be a very valuable additional layer in my defence in depth approach to QA. I have added it to my checklist of things to do before each new release.

ESWC 2011

No proper post this week. I’m too busy finishing off my talk ‘Promoting your software’ for ESWC 2011 in London next weekend (19-20 Nov). I am going to talk about my experiences attempting to try every form of promotion known to man including: SEO, Google Adwords, magazine ads, affiliates, Facebook ads and hanging out in wedding forums using a female pseudonym. With audience participation! Plus real data!

There are also some other interesting looking talks. Chatting to other people in the business over coffee or beer is also invaluable. If you haven’t booked a ticket, it isn’t too late. Don’t worry if it is your first time – people are very friendly. Do come and say hello.

On the subject of conferences, the ASP is putting on ISVCon in Reno, Nevada, USA in July 2012. Being UK based it is probably further than I am prepared to fly for a conference. But I hope it is a huge success.

13 ways to fail at commercial software

  1. Don’t bother with market research, because you just know lots of people are itching to buy your new product.
  2. Only release the product once it is perfect. However long that takes.
  3. Go into a market with very strong competition and compete with them head-on, because you only need a measly 1% of this market to get rich.
  4. Go into a market with no competition. How hard can creating a new market and educating all the potential customers be?
  5. Only think about marketing once the code is nearly complete.
  6. Write software for people who can’t or won’t buy software (e.g. 10 year olds, prisoners, Linux fanatics, people in developing countries, developers).
  7. Don’t worry about marketing, because good software sells itself.
  8. Concentrate on the technology and impressing other developers.
  9. Don’t listen to what your customers say, because you know best.
  10. Don’t worry about usability. It took you thousands of hours to write the software. Surely the customer can spend an hour or two learning to use it.
  11. Embrace bleeding-edge technology.
  12. Don’t worry about backups, because modern harddisks are very reliable.
  13. Don’t even try. Just give your software away for free.

Did I miss any?