Changing hat from consultant to product developer
Today, I'm starting a bit of an adventure. Today I'm hoping to change the focus of my business from a consulting focused business over to a product focused business. I'm sure that there will be plenty of consulting that will continue to occur, but I'm hoping to develop a “product†for sale that will see me through for the next many years.
I've been thinking of developing this product for about 10 years now and I think the timing is right. I've just finished up the major development for one of my clients and it seems to be humming along very well. My other clients are in more of a maintenance mode right now. I should have some time to spend focusing on this product.
I plan on developing this product as a system to be run on Linux, Mac and Windows and be sold to small to medium sized business. My plan is to price it so competitively that it should almost be a no-brainer for businesses to pull the trigger on. I'm also planning on having an “open†feel to the program. I'm not trying to lock a business into my product architecture but I'm going to try to earn their loyalty by having low prices, open data systems, and allowing them to extend the system to fit their business.
My obstacles are many. First, I know how to be a consultant and a programmer for hire. I'm not sure I know how to be a business owner that knows how to sell and market a product. As I am writing this, I wonder how much spam this is going to trigger into my inbox.
In addition to my central product, I also have a road map for ancillary products for sale that will compliment the main product and extend the capabilities that I can see businesses needing. These will be sold separately as many (most) businesses won't need these capabilities, but the businesses that do need them will really need them.
I stated before that I will be developing this product for multiple platforms. This eliminates my main programming language choice of Visual Foxpro, which I dearly love. I'm choosing a language called REALbasic to develop my product in. It is cross-platform, object oriented, high quality, fast with a good development environment. The database I'll be using is PostgreSQL. Free as in beer and free as in freedom, PostgreSQL is a mature, fast, stable database that should not limit me in any way. Some future rewrite of my product may make it database agnostic but that's too ambitious for my first several versions of my application.
I know any choice of technology in language or database will cost me some sales. Someone out there will say to me “We love your product but we can't buy it because we only use Oracle databases.†“Your product could really help us out but we require applications to be developed in .NET.†Crazy but that's happened to me in past jobs. Ah well. Choices must be made at some point, and I think REALbasic and PostgreSQL is a winning combination.
The Foxpro world where I'm coming from is very “consulting†oriented in that most all developers now developing in Foxpro are consultants. In years past many of them were employees with very few being programmers selling products. In contrast, it appears to me that many REALbasic developers are business owners that sell products, with a good mix of consultants and some employees. This was very eye opening to me to see the different “mentality†in this community.
Many Foxpro developers would like to develop and sell a product but it almost seems as if we've developed our own version of OCD that creates a society of fear and prevents us from developing and selling products. Foxpro developers look at the mountain of hurdles we've foreseen and placed in our way. How are we going to handle licensing? How are we going to prevent product piracy? How would we handle application updates? How are we going to handle database upgrades? How are we going to limit the number of concurrent users. How are we going to handle support? How are we going to handle error reports? How are we going to handle taking credit cards? How are we going to handle refunds? Will we be taken advantage of in some way? Ugh. Do you see the mountain that I've built up to stand in my way? Why would I ever start climbing that mountain when it looks so tall? So dauntng? I feel defeated before I ever take the first step. I've felt this way for decades of my career which is part of the reason that I've never developed a product for sale before.
The REALbasic community thinks differently from this. First let me say that many of the developers in REALbasic are coming from the Mac world. The Mac world (in the past) hasn't had the huge number of choices of applications to choose from that the Windows world has to choose from, both as home users and as business users. I believe this has given a rise to “if I can't find it, I might as well build it myself†type of mentality. This is a very refreshing attitude. Very empowering. These people that build these tools for their business often think “if I needed this thing that I find so useful, then other people probably need it too, and they might be willing to buy it from me.†And sometimes they do buy. And sometimes the REALbasic developer makes some good money selling a small but useful tool. They didn't see the mountain as being that tall. It didn't stop them before they even started.
In a way, I'm trying to see my mountain more as a hill. I'm not going to require myself to conquer the entire mountain on my first attempt. I might opt for taking the mountain pass, build experience, gather equipment, learn from my mistakes, rely on the advice from guides, fall, slide down the hill, try again. Someday I hope to reach the absolute pinnacle of the mountain, but that shouldn't stop me from even venturing out my door and taking the first step.
I invite you along on my journey. I'm giving myself a set period of time to accomplish a good portion of the ultimate product functionality. I'll stop development and start finishing up the testing and quality control process and prepare the application for sale. During development I'll be lining up the advertising, marketing, and sales channels that I'll be pursuing. Boy will I make lots of mistakes! I am really excited to have the opportunity to make those mistakes.
I'm off to write out the modules and features that I'd like to get into the first release, and create a map for future capabilities of the product. I invite you a long for a portion of the journey up this mountain pass. I hope a boulder doesn't fall on my head. My first step out the door is … now.