Chances are, that if you've been involved in the creation of software or any kind of product, you've probably heard the advice: "Don't develop in a vacuum".
A vacuum is a space that is essentially empty of matter (according to Wikipedia). It's a philosophical concept because practically it is not possible to have a space that is completely "empty". But, I like to deal in abstractions anyway, so that's good enough for me. "Don't develop in a vacuum" generally means not to go off and write code in the absence of customer feedback. This should not be particularly controversial advice. Developing software without knowing whether users will like it, based purely on speculation and conjecture doesn't seem particularly smart. I've never met a single person that has said: "You should go build your product in a vacuum!"
So, I think it's good to not develop in a vacuum and ask users what they think as early as possible and as often as possible. But, it's great to actually be users of the product yourself. This advice has been widely circulated too. If you build something you would use yourself, your chances of success go way up. The reason is not particularly complicated. It's more efficient to have conversations with yourself than it is to try and go find users. There's a lot less lost in translation as well. Rumor has it, the most successful products at Google (like GMail) are the ones that Google employees actually use.
So, if developing without user feedback is developing in a vacuum, then what's the opposite? Developing under infinite pressure? I'm not sure, and I'm not smart enough to stretch this analogy along this particular dimension. But what I do know is that "developing for yourself as a user" starts to present risks at a certain point.
Let me give you a real world example. My startup, HubSpot, develops inbound marketing software. For purposes of this article, it's not necessary for you to know what that means. Lets just say that many businesses need it as it helps find more paying customers and increase sales. We originally started building the product because we had the problem ourselves, and couldn't find a reasonably good solution. So, we built something we thought we'd use ourselves. And we do. We don't just casually use it either. We're extreme users. We run our blog on it. We get sales leads from it. We track marketing analytics on it. We live inside our product. We could not imagine life without it. Most of the time, this is a really good thing -- except when it's not.
Here's when it's not: At a point, you have to stop and ask yourself how
representative you are of your potential market. If you're a lot like them,
then you can get away with having conversations with yourself pretty often and
not lose sight of the customer too much. If you're not like them at
all, conversations with yourself are not productive. My startup is somewhere in
between. Although we resemble our target customers a lot (we're a small
business with 25 employees, we sell to other businesses, and we have real
marketing people on staff), we're not a perfect fit. Most of our customers are
not as technical as we are, don't read SEO blogs all the time and actually have
Summary: Don't develop your product in a vacuum. If you can, be your own customer. But remember that conversations with yourself can only go so far because you know too much and it's unwise to try and pretend that you don't.
What do you think? Are you your own customer? Have you hit the limit of how much feedback you (as a company) can give yourself? Would love to hear your thoughts in the comments.