The Business of Software Wiki

A part of Joel on Software, and a companion to the Business of Software discussion group.

10 questions to ask before you write the first line of code

This article was originally published by Andy Brice on the successfulsoftware.net blog. The original article is here.

I would guess that the majority of the software that I have written in my career has never been used. Or, at least, not used enough to justify the long hours I and my colleagues lavished on it. I am sure that I am far from unique in this. I flatter myself that the software was intuitive, well documented and robust, but we never managed to convince enough people that the software solved a real problem for them. Creating high quality software is hard, but it just isn’t enough. The software also has to be marketed effectively.

Effective marketing means:

  • identifying a problem that people will pay you adequately to solve
  • letting these people know about your solution
  • convincing them that your solution solves their problem, at least enough to try it
  • doing all the above cost effectively

This is no easy task in a complex and constantly changing world, bursting at the seams with billions of people and millions of other products.

Crucially, decisions you make about marketing can (and should) have a big effect on the end product. So you need to make key marketing decisions before you develop the product. This may sound like stating the obvious, but even a casual inspection of developer forums shows that many software developers spend hundreds or thousands of hours developing a product without thinking about how they are going to market it, or even whether there is a market for it. If you are writing software as a hobby or to scratch your own itch, that’s fine. Knock yourself out. But if you are writing commercial software you need to have a very clear idea of your market and you need to develop the product with that market very much in mind.

To the developer, safe in their world of beautiful abstractions, marketing seems a rather grubby business. It smacks of deception, manipulation and impure motives. I remember a business studies lecture I attended as part of my physics degree as a brief respite from partial difference equations and thermodynamics, where the lecturer asked a room full of engineers and scientists how we would market a sonic mouse repeller. “Does it actually work?” asked a sceptic. “Does that matter?” asked the lecturer. There was a profound silence as the awful implications of his reply sunk in.

But, if you have a good product, you shouldn’t have to lie to your customers. Good marketing should be about communication, not deception. Like coding, it is easy to do badly, and difficult to do well. If we want our software to reach its full potential we need to either place our trust fully in someone else or we need to get involved. Personally, I find it hard to entrust the success of my hard work 100% to someone else. Especially someone from marketing!

Here are 10 questions I think every developer should ask themselves (or their marketing department) before starting to develop a software product in earnest.

1. What is your ‘10 second elevator pitch’?

You should be able to describe the benefits of your software to potential customers in one sentence (two at a stretch). This is the ’strapline’ that will go at the top of your web page. If it is difficult to describe, it is going to be difficult to market - difficult to create web pages for, difficult to do search engine optimisation for and difficult to write ads for. If you are struggling with this one, maybe you need to focus the product on a narrower problem.

2. Who is going to buy/use the software?

The software needs to be tailored to the intended user. Technical users will be interested in powerful functionality, whereas non-technical users will be more interested in a simple user interface. Graphics designers will care a lot about visual aesthetics. Emergency services will care a lot about reliability. If you are selling to organisations the buyer may not be the same person as the user. Tailor the marketing to the buyer. What issues are they most worried about, what sort of license will they prefer (lease or purchase), what budget do they have? Business customers will usually be less price sensitive than consumers.

3. Who are your competitors?

In an efficient market you would expect the level of competition to be directly proportional to the size of the market. But the market isn’t completely efficient, so some niches may be more lucrative than others. Find out who your competitors are. What features do they have, how are they priced? Don’t take too long over it though - if you can’t find a competitor in a few hours of searching, then neither will many customers. Note that some of your competition might not even be software - for example there are a couple magnetic/Velcro based products that are competitors to my own seating planner software.

Be wary of entering a market with lots of established competitors, unless you are sure that you are offering something compelling that they aren’t. It is easy to think “This market is $1 billion dollars per year, I reckon I can get 1% of the market, that’s $10 million/year”. Dream on. The competition in such a market will be ferocious with the top 2 or 3 vendors taking a huge proportion of the market, with marketing and development budgets to match. You would probably be better to aim at a small niche in such a market, you can always grow into other niches from there. Good luck if you decide to compete head on with Microsoft, Yahoo or Google - you’ll need it. For every company that gets bought out by this unholy trinity countless other get crushed.

Be wary of entering a market with no competition. There is a tiny chance that you are a genius who has spotted a new market. It is much more likely that there are no competitors because is there is no market. Others may have steered clear for good reasons or tried and failed. Even if there is an opportunity you will have to create a new market and that can be very expensive.

4. How will your product be positioned?

What aspect of your software are you going to emphasize to make it more attractive than the competition? For example you can position based on ease of use, additional features, higher performance, better support, more flexible licensing etc. Positioning your product purely on price (e.g. ‘cheaper than X’) is rarely the best strategy.

5. How will your customers find out about it?

Before anyone can buy your software they need to know it exists. How are you going to get the message out: search engine optimisation, download sites, pay per click ads, print ads, trade shows, mailshots, viral marketing, resellers, distributors, affiliates, a free ‘lite’ version, blogging, competitions, press releases? What budget do you have? What works best will vary depending on your market and what you can afford.

6. Will you have a trial version?

The ‘try before you buy’ model is now commonplace for software sold on the Internet. Are you going to offer a trial version? Will it be feature-limited or time-limited?

7. How will you license it?

Are you going to license the software per machine, per named person, per site or per organisation? Will the license be transferable? What sort of licensing protection will you use (if any)?

8. What price will it sell at?

How much will you charge? How valuable is your software to the customer? How much money does the customer have to spend? Will you sell different versions at different price points? Are you going to charge a one-time fee + upgrade fees or a subscription?

9. How will your customers buy the software?

Are your customers going to buy the software from your website, from a retail store or are you going to have to send a salesman to their office?

10. What is the smallest amount worth delivering for version 1.0?

Getting to market fast has two main advantages:

  • you start getting sales sooner, which is good for your cash flow
  • you start getting feedback, which helps to guide further development

Get v1.0 to market fast by cutting back brutally on the features, not the quality. Many developers will feel that they can’t release v1.0 until it does at least as much as competitors, but this is usually a mistake. Many customers may not be interested in features X, Y and Z. In fact, they might even prefer a simpler product without these features. The sooner you get a product ‘out there’ the sooner you will find out. If you don’t get any sales or feedback, that is also telling you something very important.


Many of your initial marketing decisions will be based on guesses and gut feel. Thats OK. The only people with a good understanding of your market are your competitors, and they aren’t likely to tell you much. The best you can do is to make educated guesses and evolve your marketing as you get feedback on what works and what doesn’t. Note also that many of these decisions are coupled. If you are charging $30 for a license it is unlikely that you will need or be able to afford salesmen. If you are selling large enterprise solutions ‘try before you buy’ may not be appropriate.Once you have got your basic marketing plan, test it. Go and find some people who you think are potential customers and ask them “If I make this product, will you buy it?” (don’t expect friends and family to give you an honest answer - they are more interested in not hurting your feelings). The more you can make them think they are making a commitment, the more likely they are to give you a truthful answer. If the answer is a resounding “no”, or you can’t find any potential customers or they can’t find the time to talk to you - it is time to reconsider. Having your killer idea shot down in flames is painful, but its a lot less painful than investing thousands of hours in something that is never going to sell. Trust me - I only wear my marketing hat some of the time.

Further reading/listening:

This article is copyright Oryx Digital Ltd 2007.