At Gnip (a social media company; where I work) we are, of course, always working to "do the right thing," when it comes to how we build software.
There is a lot of great work and discussion going on these days regarding the assurance that the software you write is significantly influenced by your customers (target, or existing). I love the energy around this topic, but as with any trend, it can be taken too far.
What Defines The Software You Build?
If you are exclusively building what your customers are asking for, then you are acting like a consulting firm or a services company; don't fool yourself into thinking that you're a product company.
If you are exclusively building what you think your customers want (without much, if any, empathy for their wants and needs), then you are squarely a product company. You may or not have any customers, but you're indeed a product company.
The art at Gnip is in striking the balance between these two things. We certainly have customers with explicit demands around exactly what kind of functionality they want. However, we don't always build software to match those specific demands. Often we do, but often we do not. We regularly prioritize other features & functionality above what they're specifically asking for. We might do this for a few reasons: one, we know internally that there is simply more important stuff to do (e.g. operational stuff that without, the products we provide will cease to function at all). This is often referred to as "keeping the wheels on." Two, it's an idea that simply isn't in Gnip's sweet spot. Three, which is effectively a summary of the prior two, our vision for our product offering is simply different than what may be suggested by a customer or prospect.
Guess what; that's ok. Our customers love the fact that we have vision and direction around where our products need to go. In fact, that's often a significant reason as to why they pay for our products. They know that their own ideas don't necessarily encompass the broader ecosystem perspective. They know that if we catered to their every whim, they wouldn't be getting any deeper evolution of the offering. They know that we're not an outsourced software development team that they have exclusive control over. They know we have our own creativity and unique perspective to apply to the challenges at hand.
What Are You?
If you're making money on product that is purely a function of your creativity and vision, you are clearly a product company. If you're making money on product that is purely a function of what your customers are asking for, you are a services company. The former is very hard when it comes to software, and is likely going away entirely as a model. The latter is something you can stumble into without even knowing it, all the while thinking you're a product company; then you wake up one day and you're not.
A hybrid is what we strive for at Gnip. I think of Gnip as a product company, yet we invest an amazing amount of time and energy into ensuring we understand our customers specific needs, and build solutions for them. We take those learnings, meld them with our product vision, and out comes software that moves the ecosystem toward a bigger picture, while meeting the immediate needs of our customers.
Combine the empathy for your customer's needs, with where you know the product needs to go, and great product will result.
motivated this post.