Start Small

  • warning: include(/tmp/fortune.txt): failed to open stream: No such file or directory in /home/mohawksoft/org/www/htdocs/includes/common.inc(1696) : eval()'d code on line 1.
  • warning: include(): Failed opening '/tmp/fortune.txt' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mohawksoft/org/www/htdocs/includes/common.inc(1696) : eval()'d code on line 1.

It is often said that “perfection is the destroyer of good,” similarly I believe that all to often in startup companies, the process of product development destroys the process of developing the product.

As I am currently looking for my next gig, I am seeing a bunch job descriptions. I don't mean to be disrespectful of the various positions I see, but its deja vu all over again and I think after a couple decades in the industry, I can make a few small observations.

In the year 2011, most ideas seem like they can be characterized by the phrase “The Facebook of X.” Don't feel bad, because 10 years ago it was “The Google of X,” and prior to that, it was the Microsoft of X, and so on. It should be helpful to realize that Facebook, when it started, wasn't the “Facebook” we have now. Before that, “Google” then wasn't what Google is now, and so on.

This isn't derogatory in any way, it's how the human mind works. People become familiar with products or services and start to visualize their ideas through the lens' of those things with which they are familiar. Ironically, the big trick isn't to build “The Facebook of X,” but to understand what the “X” really is. Then figure out how best to productize it. Then figure out how to build it. Then learn from services like Facebook and Google how to expand it further.

The early startup needs to take this discipline seriously. It is the first step that needs to be taken. I've sat in far too many meetings over the years and watched people embellish otherwise interesting ideas in the terms of the prevailing services of the time. The core ideas become encumbered with the baggage of the prevailing wisdom. A simple idea that stands a good chance of being successful by virtue of being relatively easy to develop and fairly concise in definition, ends up being a moribund effort because the product development process gets out of control. The effort becomes saddled with features copied from Facebook or Google, that are at best orthogonal to the base concept, and at worst a complete derailment when the suggestions intended to augment the original idea, end up taking their place.

Without any hard facts to back me up, I would say that if you want to develop a site and you are thinking in the terms of “The Facebook of X” you are probably doomed. Take a step back. Start small. If you have more than a few pages describing your idea, you are probably thinking too much about it. I bet you can't think of a single truly successful endeavor that didn't start small and surprise the developers that did it.

The next part is the architecture you want to build. Again, start small. This is where knowledge and experience comes in handy. In 2011, a couple machines and a good backup strategy should be able to handle 99.9% of all startup services. If you do it right, you'll be able to grow. If you do it wrong, you'll crash during your first advertising campaign. No amount of hibernate, NoSQL, or “magic sauce” will take the place of a good first design.

Accept the fact that the architecture for your site must change over time. If you are successful and you continue to grow, you'll have to invest into your product. Building “Facebook” as we currently know it would take a long time and a lot of money. Do not try to build a globally scalable mega site first. Build it when you need it. Think big! Start Small!