(Sorry for the rush job tonight… been having some technical difficulties, and I wanted to get this post out before midnight MST)
Here, read this. It references something that a colleague of mine calls the “SUV pitch,” which goes something like this:
> Do you know what the largest market for SUV sales is? Soccer moms. But have you ever seen an SUV commercial? You will never see a soccer mom in an SUV commercial. As soon as they start making SUV commercials with soccer moms in them, the soccer moms will lose interest. Why? Because SUVs are associated with a high-class, exciting lifestyle… soccer moms buy SUVs because having one doesn’t make them feel like a soccer mom.
That got me thinking. Just because a product is designed to appeal to one target audience (at least at first glance), doesn’t mean that the product as a whole won’t be applicable to a broader audience. Take Facebook, for example. When I first heard of it, you still had to have a college email address to get an account. Today, Facebook is planning one of the largest tech industry IPOs in history, and is pretty much a household name. My grandma has a Facebook account.
One of the traps that I’ve repeatedly fallen into when building a web application is that while I’m in the design phase, I try to brainstorm something that will appeal to the largest possible audience. This is flawed thinking… horizontal market software is hard to pull off, especially on a shoestring budget. It’s very difficult to try to abstract an idea (and a featureset) into something that will be useful to everyone. If you don’t believe me, take a look at some FriendsOfSymfony Symfony2 bundles sometime. There’s a lot of extra work that goes into making a bundle usable in a wide range of situations. A lot of extra work.
Here’s my recommendation: when you are designing an application, pick your target audience carefully. If you’re compromising concrete functionality to abstract the usefulness of the application for different use cases, pick your target audience more carefully. Refine your audience (and the feature list that serves that audience) until you have a rock solid idea of who they are and how you can best serve them. Stop trying to build a universal solution, and build something that fills a specific need.
If you do a good job, people will use what you’ve built. The saying “If you build it, they will come” is a saying because it’s true. Solve a problem, and make using your solution more pleasant than using the other guy’s solution, and it will catch on. At that point, when your vertical target is satisfied, then you can think about horizontal scaling, as long as you remain true to your original goals. Facebook has always been about connecting people (okay, who are we kidding, it’s always been about knowing who you are so that they can sell you stuff, but let’s keep the rose-colored glasses on for a little while longer)… it just went from connecting college students to connecting everyone and their grandma. When scaling horizontally, they never forgot their vertical target.