When the stock market was high and the .com boom was in full swing it dawned on
me that we developers were doing pretty well. There was high demand and high salaries.
Companies were willing to work out all kinds of unusual schedules if it meant they
could hire you on. Life was pretty good... and yet I had a nagging feeling that
I had reached my financial peak.
The problem wasn't that I wasn't making a good living, but that I seemed to have
hit a ceiling. If I wanted better things for my family it was dependant on me working
as many hours as I could fit into the week without neglecting them too much. I was
going to have to find a way to increase my income, but there is only so much a company
is willing to pay and there are only so many hours in the week - and I just don't
like those kind of limitations.
So I sat down and thought about it. I searched the web for ideas. And I thought
about it some more. And I realized that there are really three basic ways to earn
a living as an independent software developer: hourly, project and product.
Hourly is a nice place to visit, but I wouldn't want to live there.
That said I have been doing hourly consulting for the majority of my career. It's
easy and mostly stress free as long as you don't mind the potential of being out
of work every now and then. I work my 40 hours a week and am rarely involved in
office politics. I am rarely asked to put in overtime because it messes up the budget
since I charge by the hour. I also get to spend more time with my family than I
do at work.
Regardless of the fact that you can make a good living off the hourly model, it
has two big problems: It's rare to find a fulfilling contract and there is an income
cap. Since you're at the mercy of the marketplace it's tough to be super-choosy
about the contracts that are available, and the burn-out rate for each contract
is pretty high. I'm good for about 12-18 months on a contract and then I need to
move on. It usually gets pretty boring after 3-6 months and you find yourself doing
projects on the side for other clients which of course eats into your free time.
But the biggest of the two problems is that most companies have caps on what they
are willing to pay a consultant, and most have caps on how many hours a week they
will allow you to work. It's some bean counter nonsense about budgets.
I've found that most companies won't pay more than $60 - $90 per hour for long term
contracts, which puts your income in the $120,000 - $180,000 range. You'll bring
home considerably less if you use an agency too. (Keep in mind these figures also
need to be reduced by the additional expenses that you need to cover for yourself
as a contractor, like health insurance.)
Now I did say most companies. There are those that will pay more, especially if
you have a specialty or there is a shortage of developer talent in the marketplace.
During the dot com boom it wasn't rare to find companies paying up to $300/hr. I
suppose those can still be found, but there's really too much competition out there
for most programmers to command such a fee. Many companies these days won't pay
more than $40/hr.
Regardless, you are still limited to the number of hours you are able to work and
the hourly rate – and that's where the project model comes in.
Projects maximize time spent through cookie-cutter techniques.
When I first started out in computers I was a network engineer. Novell was hot at
the time and I jumped on the bandwagon and was setting up Novell sites all over
Los Angeles. Once I was able to get it down to a system I started charging customers
a flat fee to install their network and get them up and running. I may not have
been the cheapest around but I was experienced, personable and the customer knew
exactly what it would cost to finish the job even if I ran into a snag.
I learned a lesson from one of my clients that I will never forget: Customers will
always pay for value. With that precept in mind I was able to charge a good fee
to provide a tried and true solution which I was able to implement quickly due to
my experience in putting this same network together many many times. Had I charged
an hourly fee I would have made much less because the customer would have felt he
was paying for time instead of paying for a solution.
That same principle works even easier with software development. Let's say your
forte is designing web sites. Never mind that the competition is fierce in this
area – let's say you really love it and you're good at it. You've been designing
them for clients for a while and you've noticed that most sites have very common
elements: header, menu, main section and a footer.
It's an easy leap to design a common page with pluggable components that would satisfy
90% of the web sites out there. With technologies like CSS and/or .NET Master Pages
and/or WebParts it becomes trivial to throw a basic site together in a day or two.
And it's highly customizable so that two sites with the same structure can look
completely different.
I would bet that many of the projects you write reuse many of the same elements
that you have in your code library. The use of these common components cuts development
time enormously which would effectively allow you to complete more high dollar projects
in less time. Database applications are perfect candidates for this as there are
whole libraries written to communicate with your database of choice.
Many large consulting houses like Accenture
do so well simply because they can pool their knowledge and resources from their
employees across the globe and hand out tasks to those individuals best suited to
them. They have a stable of employees that have chosen different areas of focus
that when combined can make a formidable force.
The cookie cutter techniques of the project model allow you to increase your income
and work less time – giving you more time to either spend on personal pursuits or
extra projects. But is there an even better model that can accomplish that in a
potentially unlimited way? There is.
Product is the pinnacle.
Yet another natural progression for a developer is to create a product that simplifies
what they are doing either internally or for clients and then find a market for
that product outside their company. While you have to be aware of the legal ramifications
of using potentially proprietary knowledge to create your product, this is precisely
how many software companies began.
Many actually bring the idea to their employer first and are turned down. One of
the best examples of this that I can think of is Citrix Systems, which was founded
in 1989 by Ed lacobucci after his idea for multi-user support in OS/2 was turned
down by his then employer, IBM.
Although Citrix had a rocky start where 2 of the 3 founders left the company, they
went on to produce the very popular WinFrame application. Eventually Microsoft ended
up licensing Citrix technology into the Terminal Server product and Citrix created
an enhanced version sold as “MetaFrame.” Today Citrix is a leader in the internet
sharing space with products like “GoToMeeting”
and “GoToMyPC” – even if its leadership in
this area was attained through acquisition. At the last SEC filing Citrix expected
their annual revenue to be between $1.120 and $1.128 billion. With a “B.” Not bad.
Yet another software company that grew out of ex-IBM employees is SAP. They are
now the 4th largest software company in the world. Adobe came from Xerox employees,
Electronic Arts came out of Apple and Lotus came from VisiCorp. The founders of
these companies were all involved in development in their previous employment when
they decided to strike out on their own. In some cases the new company has released
products not at all similar to what the founders used to do, but in most cases the
product line is a natural offshoot.
Why is it better to have a product than consulting or contracting?
Sell software, not time.
It all comes back to time, money and which you can create more easily. Of course
I'm not saying that writing a good product is easy to do, but I am saying that you
have a better chance of that than you do creating more than 24 hours in a day.
The price of your software and the quantity you sell are subject to market conditions
and not the number of hours in the day, so it is a different kind of math you will
need to use to determine if creating that product will be worth it for you, but
if you create decent software and can find (or make) a market for it then your income
is practically unlimited.
Do you remember using WinZip when it first came out? It simply shelled out to the
DOS program pkzip.exe. A first year programming student could have written that,
yet WinZip was
acquired by Corel Corporation in May of this year for an estimated $69 million.
Do You Have What it Takes to Create a Product?
Take a moment to think of what your employer does. Can you write something to benefit
your industry? Do you have an idea your employer is unwilling to pursue? If you
have an entrepreneurial mindset you could be the next Citrix or SAP. After all,
if you're already programming for a living you might as well reap the financial
rewards too.
I think I'll take my own advice and jump from hourly right to building a product.
Now if I can just find my copy of pkzip...