Most developers start as salaried employees, slogging through code and loving it because they never imagined a job could be challenging, educational, and downright fun. Where else can you learn new things every day, play around with computers, and get paid for it? Aside from working at Best Buy.
A certain percentage of developers become unhappy with salaried development over time (typically it’s shortly after they’re asked to manage people, or maintain legacy code), and they dream of breaking out of the cube walls and running their own show. Some choose consulting, but many more inevitably decide to build a software product.
“After all,” they think “you code it up and sell it a thousand times – it’s like printing your own money! I build apps all the time, how hard could it be to launch a product?”
Against All Odds
And most often the developer who chooses to become a consultant (whether as a freelancer or working for a company), does okay. She doesn’t have a ton of risk and she gets paid for the hours she works, so as long as she has consulting gigs she can live high on the hog
But developers who make the leap to develop a product are another story. Building a product involves a large up-front time investment, and as a result is far riskier than becoming a consultant because you have to wait months to find out if your effort will generate revenue. In addition, growing a product to the point of providing substantial income is a long, arduous road.
But let’s say, for the sake of argument, that you spend 6 months of your spare time and you now own a web-based car key locator that sells 100 copies per month at $25 a pop. At long last, after months of working nights and weekends, spending every waking moment poring over your code, marketing, selling, and burning the midnight oil, you’re living the dream of a MicroISV.
Except for one thing.
The Inmates are Running the Asylum
In our completely un-contrived scenario you’re now making $2500/month from your product, but since you make $60k as a salaried developer you’re not going to move back in with your parents so you can quit your day job. So you work 8-10 hours during the day writing code for someone else, and come home each night to a slow but steady stream of support emails. And the worst part is that if you’ve built your software right the majority of the issues will not be problems with your product, but degraded OS installations, crazy configurations, a customer who doesn’t know how to double-click, etc…
The next step is to figure out, between the 5-10 hours per week you’re spending on support, and the 40-50 hours per week you spend at work, how you’re going to find time to add new features. And the kicker is that support burden actually worsens with time because your customer base grows. After 1 month you have 100 customers with potential problems, after a year, 1,200.
And yes, the person you decided to sell to even though they complained about the high price ($25) and then couldn’t get it installed on their Win95 machine so you spent 3 hours on the phone with them and finally got it working only through an act of ritual sacrifice is still hanging around, emailing you weekly wondering when the next release is coming out with his feature requests included (requests that not a single one of your other 1199 customers have conceived of).
But you persevere, and manage to slog your way through the incoming support requests and get started on new features.
What you find is that ongoing development, as with any legacy system, is much slower than green field development. You’re now tied to legacy code and design decisions, and you soon realize this isn’t what you signed up for when you had that brilliant flash of insight that people need web-based help locating their keys.
It’s about this time that support emails start going unanswered, releases stop, and the product withers on the vine. It may wind up for sale on SitePoint, or it may be relegated to the bone yard of failed software products.
The flip side to all of this is what you’ve already heard on the blogs of successful product developers.
Once a product hits critical mass you’ve conquered the hardest part of the equation. After that the exponential leverage of software products kicks in and you can live large on your empire of web-based unlocking-device locator applications. It’s a recurring revenue stream that can grow far beyond what you would make as a consultant, all the while creating balance sheet value meaning one day you can sell it for stacks of proverbial cash and retire.
This is unlike your consultant buddy, whose consulting firm is worth about 42 cents (he had an unused stamp on his desk) once he decides to retire.
But there is a dip before you get to this place of exponential leverage and proverbial cash. A big dip. And if you can get through it once, it’s more likely that you’ll be able to get through it with your next product. And the one after that.
Once you make it to the other side, you’ve learned what it takes to launch and maintain a product, and next time you will have a monumentally better chance of success because you are now a more savvy software entrepreneur.
Congratulations! Go buy yourself a nice bottle of wine and sit back, relax…and enjoy answering your support emails.