Advices for developers on starting an Independent Software Vendor (ISV) business

 

As a developer (and if
you read my blog there are good chances you are a developer) you have an
enormous potential to start a company. I think that most developers don’t realize
how big this potential is. I started an ISV business by selling the tool
NDepend for .NET
developers. I am still in the process of making the business growing and it is
a great adventure. I would like to expose in this blog post some advices that could
help a developer doing so.

 

 

The cost of developing and selling software

 

What do you need to start
developing a software? A good PC, some development tools and an internet connection. Maximum
3000US$ investment (that you certainly have already invested). Most other
engineering industries needs millions of $ investment. Think of the cost of
starting a business of physical assets like electronic devices.

 

Minimal
investment
is a good incentive but the biggest advantage of
software over others engineering industries comes from the cost of unit. What does it cost to build one license
of a software? 0 US$. What does it cost to build 1.000 licenses of a
software? 0 US$.

 

I am caricaturing and the
provocation is intentional. Of course the cost of doing software is the
investment made in development. Also, if you have 10.000 users, the cost of the
support will certainly be 10 times the cost of supporting 1.000 users. Concerning
the support it is all about making it scale. The experience we have with our
tool, shows that playing the agility rules largely pays. Releasing often
to make sure that all bugs reported
are fixed, investing in the quality, investing in a neat UI by listening carefully
to feedback, making sure to update the documentation each time a user ask a
question, yes it pays. The number of questions asked and bug reported stays
small and is not increasing linearly with the number of users.

 

 

Advantages of becoming an ISV over doing
another software development job

 

Before digging further, I
would like to underline the advantages of being an ISV over being a consultant,
an employee or a trainer? Here are my thoughts:

·        
You
spend most of the time doing what you really like, coding.

·        
Freedom! There is nobody to tell you what you should work on, when you should
work or the amount of quality you want to put in your code. You can also (more than
less) choose who you want to work with and the location from where you are
working. South of France or a tropical island, nobody cares except you. The availability
of a decent and reliable internet connection is the only limit.

·        
Day
after day, you capitalize on a code base and you can begin dream on. Successful
small ISVs business sometime end up being bought by bigger companies.

·        
The
amount of incoming money is not proportional to the work put in it. If the software
doesn’t sell well this is a very bad point. But in the case of successful sales,
it can be much more income than any consultancy position. The reason is clear:
as explained below, you can make it so that selling 1 or 1000 licenses cost you
the same price. Software is the only industry that makes this magic possible. Is
it by chance that the richest man in the world during the last 13 years was
primarily a software developer?

·        
Starting
a business tends to be a positive point on a CV. Even if your business fails it
doesn’t mean that you lost some time in your career. During a job interview you
can ramble on the courage and motivation you had starting such an adventure and
what you learnt on the way. Many interviewers you’ll meet are employee forever that might be impressed by what you dared.

 

Controlling the human factor

The only human factor you
can control is your own motivation. How can you prevent anyone on earth
potentially ruining your business? The answer I found is to multiply the number
of clients. This is only possible if the price for a license is affordable,
like a few hundreds of US$. The other option is to have a few clients and to sale
expensive licenses. But then instead of having a powerful boss, you get a powerful client and here come the human
factor.

 

Don’t take me wrong here
on the term powerful client. For
example, we are constantly striving to give power to NDepend users by listening
very carefully to any client feedback
and do our best to satisfy each
of their requests. Satisfying one user results in satisfying all users. On the
other hand there is no user with enough power to impair our business. There is
no user that invested more than a few hundreds or thousands of US$. If it
happens that a company asks for its money back, this is not a problem.
Hopefully it has never been even close to happen.

 

Sometime you don’t have
the choice on the range of clients: your idea of software will only help a few
dozens of users, maybe important users that can pay hundreds of thousands of
US$ licenses (like design tools for semiconductor). My opinion on this: forget
it! If less than several dozens of thousands potential users and independent companies, then you will
expose yourself to the human factor.

 

Reducing the risk to almost 0

What is the biggest risk?
Quitting your job for a poor business and not being able to recover a job as
good as you had.

 

I would be scary to do
some B2C (Business to Customer) software, even though the range of customers is
virtually millions. Something like video game for mobile phones, real-estate
web agency or web search engine. Last decade has proven that successful B2C software
earn billions of US$ per year. On the other hand, the risk is extremely high.
It is like playing lottery. How many web search engines do you use? How many
web search engines projects have been started and failed?

 

The safer solution is to
find a B2B (Business to Business) market, to target professional users. You need
to provide a software with an affordable license price (100/500 US$ per seat)
that can save a few hours a week of some professional users. Professional users
won’t hesitate to spend of few hundred US$ to save a few hours a week. To
reduce the risk closer to 0, my advice is to start providing a free version of
your software on the web. Then you can wait 6 to 12 months to see if indeed your
software is able to get a few thousands of download. This will show if there is
a real demand for what you want to do or if the usefulness of your software is
just the product of your imagination. A bit of free marketing here (articles on
specialized web sites, enthusiast’s bloggers reviews, user group presentations…)
is needed for cranking what you are looking for: the word to mouth effect.

 

This is what happened accidently for NDepend. At the
beginning, 4 years and half ago, I developed a simple tool in a few days to
compute a few metrics on a .NET code base. At that time, I was consulting on a
large code base and part of my job was to help improving quality. Then I put
the tool on the web simply because there were no reasons to not sharing it with
others developers. One year and a half later, a few thousands of developers
were interested in it. Some of them were very enthusiast about it. I realized
that a small (but existing) percentage of them would be happy to pay a few
hundreds bucks to have a more sophisticated tool to control precisely their
code structure and quality.

 

Do the math, a small
percentage of a few thousands users a year, ready to spend a few hundreds of US$ each:
it is enough to start making a living on it, and consequently it is enough to
quit your job to work full time on it and with a bit of luck, starting hiring.

 

Deciding what your software will do

This is by far the most critical
point. You absolutely need 2 fields of expertise: the ability of developing good
software but also a strong competence on the field targeted by your product. A
seasoned software developer usually lacks the second expertise. Which kind of
professional users will your software help? Architect? Manager? Health pro? Insurance
pro? Transportation pro? Financial pro? Administrator? Accounter? Security pro?
Lawyer? Then you need to be associated with someone as motivated as you are and
with many years of professional experience in the targeted field.

 

We all saw several
successful projects (in terms of sales) made by non-expert development team. I consulted
in the past for a software company that made many millions of US$ a year by
developing and selling a tool that made the life of Lotus Notes administrators
a bit easer! What your software will do and how it will do is much more important
than how it is developed. A very well coded software that is not useful to
anyone is a failure. Hopefully having a sane development certainly helps satisfying
more users and be able to add important features often.

 

The market of software
tools for developers is unique. Indeed, a developer can hold both the capacity
to do the software and the expertise to imagine how to make the life of developers
easier. The downside is that doing a tool for developers is very challenging
because there are plenty of talented guys that already had many ideas. I
wouldn’t even think of trying to start a project to compete with tools like Reflector
, Resharper, CodeRush , DXPerience, dotTrace, ANTS Profiler, Dotfuscator, Llblgen,
SmartFTP or Beyond Compare
. Each of these tools is the result
of many man-years of super talented developers. If you start a promising tool,
some competitors will come and challenge you anyway. But at the beginning, it is your choice to
avoid any field where some solid and recognized competitors are already there.

 

However, each new
technology represents an opportunity. Certainly, it is still time to do the
next super useful tool for Silverlight 
developers. Within the next
years there will be hundreds of thousands of Silverlight developers. The most
enthusiasts ones will be ready to pay a few hundreds of US$ for a tool that
will save them a few hours a week.

 

A promising case-study of
this tenet is the initiative of Ayende to develop a profiler
for NHibernate users.

 

Conclusion

·        
Start
small and take the time to assess in the real-world the sale potential of your
software before quitting your job.

·        
Target
professional users that do spend money to save time and pain.

·        
Don’t
even start if you can’t count the potential number of professional users in
thousands.

·        
Don’t
even start if some solid competitors are already addressing properly the need
for your product.

·        
The
software should be able to pay the development bill with an affordable license
price, like a few hundreds US$ per license.

·        
Don’t
even start if you need to borrow money to crank the business.

·        
Once
started, make sure to play the agile rules to limit the cost of the support. The
support is the only recurrent cost in software that can potentially increase
linearly with the number of users.

·        
And
the most important by far: be sure to have a super-solid expertise in the field
your software will target. If you need a tier person for this expertise, ensure
that his motivation is as strong as yours.

 

After being a developer,
a team leader, a consultant, a trainer, a software book writer
, I found it very exciting starting an ISV
business adventure. I hope that these few advices can help you doing so.

 

This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Ramit

    Very nice article. I’m thinking of starting business of development. How about the market in iOS and Android ?

    Will it be good for business purpose ?

    Kindly guide, will be very Thankful.

  • http://blog.mostof.it Ochronus

    Neat writing, thanks for the tips! For a more generic list of developer advices, see http://blog.mostof.it/being-a-better-developer

  • Manoj Waikar

    Excellent, practical advice Patrick – specially the points like “going for B2B instead of B2C”. And this one is a gem – “If possible make your first product something you can use yourself.” [ eating your own dog-food :) ]

    Thanks for a great post.

    Regards,
    Manoj.

  • Fernando

    Patrick:

    Look here:
    On passion
    http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/09/04/on-passion.aspx

    Passion for the craft
    Passion for the domain

    Fernando

  • http://codorniou.wordpress.com Julien

    patrick, this is a great story, all the best for your software company.
    Microsoft is lucky to have partners like you.
    regards
    Julien

  • http://codingly.com Romain Verdier

    Nice post. All that sound really true, and it surely is. But beyond the pragmatic vision, I think it takes more than a bit of motivation to start your own business as an ISV.

    One safe way to succeed could be to wait for an “accidental” success, while developing small tools, contributing to OSS projects, blogging, etc. All what you described well…

  • http://www.NDepend.com Patrick Smacchia

    Interestingly enough, I just found these articles that reflect for the most part what I think:
    http://www.userscape.com/blog/index.php/site/comments/4_rules_for_the_practical_entrepreneur
    http://www.startupspark.com/ian-landsman-userscape-helpspot/

    Pick a large, but fragmented market.
    If possible go B2B instead of B2C.
    Keep your pricing really simple.
    If possible make your first product something you can use yourself.
    Blog blog blog.