As developers and technologists we always seem to have great ideas for new products or services. Some times we white board them, and think of how cool they are. Other times we even start spiking a prototype. Rarer still we even put something out on the Internet for all to see, we might even advertise to the world of it’s existence outside of our friends and family.
I’ve done more of the above then I can count. I have a whole product pipeline with all the tools to squeeze out a deliverable, that’s how many times I’ve done this. Over the last 5 years I’ve worked on at least a dozen products and services. Some making it to the light of day only to get abandoned, others being turned into Open Source projects that I maintain with increasing rarity.
But every once and a while an idea comes along that’s so pure, so simple that it just has to work, and as developers and technologists we are almost predestined to attempt. For me that project is Resgrid, a cloud based logistics system for first responders. Your will be something different, how will you know when you got that idea? I don’t think there is a definite answer, the heavens might open up and harps will play, or there could be pin drop science.
Bounce the idea off someone familiar with the problem domain. I can’t tell you how many times I talked with technologists and non-tech people alike and nodding heads and affirmations that sent me in the wrong direction. Your idea is like your baby, you want to protect it and keep it from harm.
But really your idea is more like a battle bot. You’ve got to shove it into the octagon and get beat up a few times to iron out the issues and perfect it. The adage is “Fail Fast” and failing just past inception is pretty fast, and that’s exactly what you want. Failing does not imply giving up, although knowing when to give up is an art form, it just means getting your ideas worked out as quickly as possible.
So bring your idea to people who know the problem domain, and chat with them, search them out in person or on the Internet. Don’t force an NDA on them, just talk with them, get their feedback and have them gage how useful it is, do they have any suggestions? Try getting feedback from a few people, I think I talked with 3 to 5 people at length about mine before I really got the whole picture and my idea had some new armor.
Focus it down, be selective and minimalist. This one is hard for me and I think is probably hard for a lot of developers. We want to throw the kitchen sink at our projects, leaving flexibility for every conceivable (and unconceivable) future need. It’s hard, but focusing in and dialing it down to a handful of features will allow you to focus your time on those features that directly solve the problem or need.
Chances are you’ll be working on this in your spare time. You’ll be developing one of two things, features that directly impact the users or facets of the overall architecture that do not. I’ve spent many nights hacking PowerShell build scripts, getting team city humming along just how I wanted, and all along I could have delivering functionality. I am by no ways saying that you should have good build scripts, a CI server, unit and integration tests. But those can wait.
Start with a spike or prototype that has the features you need and start refining from there. Build out and refactor from that core, get your system solving the problem or providing the service at the prototype level without the noise so you can fail fast and fail cheaply.
Do it for more then just money. I know there might someday be a VC or investor reading this that might balk at that statement, but I can tell you there will be many more that will agree with it. The money you get from your product or service should be a byproduct of the process. I’m not saying you shouldn’t make any money, or that you shouldn’t have a good business plan. But If you whole goal of the product and service is just money your probably going to lack the passion and perseverance needed to continue when times get tough, and they will.
Your passion needs to be solving the problem or providing the service. Not the technology, or implementation or event the money, it’s being customer centric and devoted to providing that product or service.
I have by no means made it by any stretch of the imagination. I’m not even making money off my idea yet. But I feel that we learn far more from our mistakes and failures then our successes and boy have I made my fair share. Having been though those experiences I’m doing my best to avoid the traps that got me in the past and lead to a successful outcome.
My next number of a blog entries will be about my experiences, failures, ideas, thoughts and products and services that have gotten me to this point. Stay tuned and stay frosty.