At the moment, I’m at Tech.Ed Australia and have just been in Joseph Albahari’s session on building micro-ISV’s.  For those who don’t know Joseph Albahari is the author of an number of .NET books and also of the handy LinqPad utility.

Here’s a run down of his talk.  Obviously I didn’t capture everything said during the talk, so the following is based on the things I picked up from the session.

First up – this is all about building a business, either as a side business or a full time venture.  The main focus though was on building things up as a side venture with the intent of generating a passive income for you.

Firstly, Joseph talk is based on his experiences with LinqPad.  LinqPad is offered in two versions – a free version and paid version that has premium features such as Intellisense.  In terms of some stats, the product was written in 2 months, has been around for about 2 years and has had over 130,000 downloads and over 2,000 sales.  That’s a nice little earner for a product that requires only minimal effort to keep it up to date.

Based on the lessons learned during this Joseph came up with the following 3 phases for launching a Micro-ISV.

Phase 1 - Preparation

So, first up.  Ask yourself if you meet the pre-requisites for doing this?  Do you have strong technical skills because you’ll need them in order to create a product that does something useful.  And secondly, do you have broad skills?  Can you do a UI? And the back end? And the business rules? And the security? And integrate to other tools? And anything else you’ll need? Remember that as a Micro-ISV you’ll need to do it all, and to do it all well.

Assuming that you have that, you then need to decide if you want to have a business that earns passive income or active income.

If you want an active income then you’re looking at a business that is working in a vertical market with a potentially complex product, and is likely to expand and employ people over time (assuming you are successful).  You’re also going to be creating a business that is hard to sell and one that you will need a lot of commitment to make successful.

For a passive income, you’re really looking at simple products that do one thing and do it well.  This is the domain of utilities & specialist web sites.  You want to create a product that requires minimal support, that enables you to still earn income whilst you do other things and in the end something that becomes a business that is easy to sell.

By the way, there’s a risk of starting passive and becoming active by accident.  All you need to do is sell features that don’t yet exist, write support intensive features or write components that require a lot of integration effort such as developer components for WPF.

As for what your product should do?  Well, obviously you’ll need an idea.  The good news is that “Pain is the source of ideas” so find something that bugs you or hurts and use that as the basis for doing something better. Keep a constant watch for pain points, pain experienced by yourself or, more importantly, by others.  In fact it’s OK as a Micro-ISV to have multiple projects on the go all trying to deal with different pain points.  One word or warning though - watch out for good but unmarketable ideas. They’ll kill your time and will have very little return, if any.

So once you’ve got your idea, you’ll need to think about marketing.  This is _before_ you write your software.  At this point you may have an idea that someone else has done, especially a big company, and you may ask “How do I compete with those big companies? Big companies have big resources”.  Yes, but they also have  big overheads.  And they are slow to innovate.  And they need a large market share.

Micro-ISVs follow different rules to big companies – they have no rules.  You can innovate any time you like, you don’t need a huge market share and you can be much more profitable than a large company with it’s large overheads.   Don’t be afraid of the size of the elephant, there’s still a market there.

And here’s the most important part of marketing.  You don’t have to write the best product.  You can still do well with a technically inferior product as long as your marketing is good enough.

Finally, consider how you’re going to make money and how that affects marketing.  Will you offer a free and premium product mix or will you use a timed trial.  It appears that the first option is better, as the free version helps drive people towards the premium one, whilst the timed version drives people towards free alternatives after the product has expired.

Oh, one other thing, make sure you get involved with your target community.  Before you launch your product.  Be helpful and harmless, establish your reputation.  Don’t be see through by being involved at the same time you launch your product.  People will see through it.

Other marketing ideas include all the usual things – building business relationships, giving freebies to early adopters, etc.  Basically try lots of things and test the results, don’t just speculate.

Phase 2 – Building Market Share

Release Version 1.0 quickly.  Don’t aim for perfection.  Just write whatever works and once it’s out there and earning some income, then you can start cleaning it up.  Also, if it’s out there and getting no response, you haven’t wasted too much effort on something that needs to be killed.

Whatever you do, follow the agile principles. Don’t over engineer your product.  Avoid wasting time on features you don’t absolutely need for a first release.  Just get the big picture items done.  On the other hand don’t under engineer things either.  That path leads to crippling technical debt and a millstone around your neck.  Basically, keep your code clean and your features lean.

What about the UI and design of your product?  Keep the design simple and clean.  Focus the UI on the main use cases and ensure the program is self-updating from day 1.

In terms of deployments, offer both a standalone executable and a setup.exe.  Standalone executables are favoured for downloads by a 2:1 ratio so it’s important to have them, but it’s also important to offer people the ability to click through via an installer.  To add a sense of safety, offer setup.exes for download on sites like download.com that guarantee things are virus free and won’t screw over your machine when you install them.

Keep your product’s web site clean.  Don’t get hung up on fancy graphics and remember that if you are offering downloads to make sure you have plenty of bandwidth for updates and new installs.

As for how to get people to the site? It’s the same old rules – have useful, original content and let the search engines do the rest.

Once the initial version is out there, make sure you get feedback.  Solicit feedback via the app. Do it via the web site.  Do it via UserVoice.com.  Just don’t forget to ask for an email address so you can talk to them about their feedback once you receive it.

Also, once you have that feedback make sure you improve the product and establish relationships with the early adopters.  They’ll have great ideas that you won’t have thought of.  Just remember that it’s also OK to say No to feature requests.  it’s still your product after all.

Finally, ensure users can auto submit errors to your web server so you can look for problems in the app that wouldn’t otherwise be reported.

Phase 3 – Getting Paid

If you offer a premium version choose wether to offer a single exe or a different exe for the paid version.  Just consider what happens with updates if you offer different exes. A single exe is probably the easiest to manage in most cases.

As a tip, obfuscate the code for premium features, but be aware that if will affect stack traces for auto-reported bugs.  Obfuscation helps protect your code, but it doesn’t prevent hacking.

It might be obvious, but you need to make sure the upgrade option from the free version to the paid is obvious but not intrusive.

On licensing – your licensing model needs to suit the application and it needs to be strong, but don’t make it draconian otherwise you’ll prevent honest people paying for it.  Vertical products can be licensed per-seat. Components can be licensed via serial numbers. Utilities are probably best licensed via activation. Just provide plenty of licensing options – single user, multi-user, teams, educational licenses, etc.  Think about how people might want to buy your app and help make that process easy for them.

One note – utilities are the most targeted apps for cracking.  You won’t be able to prevent it, but you can definitely make it harder than it is to just pay your license fee.  As a note, being a Micro-ISV probably means you’ll fly under the radar for quite a while, though this doesn’t mean you shouldn’t lock the app down.  If you go for the activation licensing model, use the motherboard serial number and _full_ cpu description as a key for for locking licenses to physical hardware, then when you create the license file, you can make sure the license is not only encrypted with that hardware ID, but that it’s signed as well. You can also include strings required by the premium features in the license to make it harder to crack, and that the premium features are hard to understand without those strings.  You could also include some red-herring code for fooling crackers but realise that it’s only a deterrent and it will be all but impossible to create an app that is uncrackable.

A note on credit cards, especially in non-US countries – hand off the processing to another provider.  Most sales will come from other countries, especially the US – so offer US pricing.  For Australia, PayPal is probably the best option as it supports payments in any currency and pays into Australian dollar bank accounts. Just be aware of the currency transfer fees are higher, though there’s no real alternate options at this point in time.

 

And that’s it.  Joseph’s talk was excellent.  Now it’s time to start thinking of some ideas!