Jeff Atwood wrote a post about ideas being very cheap and execution being worth millions. Although, I think the lots of terrible ideas are executed and fail miserably, his point is not lost on me. How do I translate an idea into reality. People do it all the time, but what are the steps.
DISCLAIMER: I am not a programmer. So this is a first draft at how I would approach it.
- First, you need to establish the idea in a prototype or storyboard. This is the easiest step for me because I can do it all in Balsamiq. Mockup the design. The design doesn’t have to be perfect, but it needs to be good enough to explain what it is to business people and engineers. This step doubles as the “research” phase. You should validate your storyboards with people in the target market.
- Choose a platform. I think this is NOT best left to engineers. There are engineers for every single platform. This is a business question. It’s possible to build something on a MediaTemple or other hosted service server, but I am not sure this is wise. The possibility of cloud computing may work better. Example: Google App Engine has an interesting structure and a built in payment system. Although I have never met anyone who used this as a platform. Force.com from Salesforce works well if your users HAVE to have a salesforce.com account. I hated working with this system personally. Aptana has a cloud service that uses Rails.
In any event, you need to carefully review the choices and then randomly pick one.
- You need engineers. The simplest and cheapest way I can see is to outsource. There are tons of sites out there that let you get people. I have no idea which one works best. However, there are plenty of engineers in 3rd world countries that will get your system working for pennies on the dollar. I’ve never outsourced anything and I’ve heard mixed reviews. When it works, its great. When it doesn’t, it’s a nightmare.
- Build a public site. You need the basics of a website to sell your software. I suggest using WordPress as a CMS. I am redoing a site now using it. Although there are some things you need to do to get started, once it’s up and running, the maintenance is a dream.
- Test. Get a bunch of friendly people and give them the service for free. See what they say. Make sure it works. Scale slowly.
- Get the word out. Twitter, Blog, Facebook, LinkedIn, tell everyone you know. Ask your friends and family to tell 1 person about it. Make sure they understand what it does. This is critical. MAKE SURE THEY UNDERSTAND WHAT IT DOES. There is no way someone will suggest anyone look at anything that they don’t understand.
- Improve. How can the system be better? Listen to feedback. No one builds the perfect software on the first try. You need to evolve the service.
- Pay Taxes and Bills. Try and have money left over when it’s done.
Engineering is critical, but overall execution involves alot of moving parts. What did I miss? What do you need to do to execute a good software idea?