Bracken and I are in the process of designing our first round of software. I'll write a post in the next couple of weeks explaining exactly what we're working on, but what's been more interesting so far is how we've been making decisions.
First let me say that I'm really excited about what's been built so far. Tonight I started using the software myself (as a user rather than a developer) and I think it's slick, responsive, and intuitive. I've built similar software before, but for some reason it just seems better this time. I've been trying to figure out why a project involving only two people working part-time is better than a similar project done at a company with multiple full-time developers. In both cases, I was the main designer, so why is it better this time around?
There are a lot of little things that are probably helping, but I realized that the main reason I love the new software is because it has a vision. Bracken and I both share a common goal and we agreed on basic design principles before hand and those principles have helped guide us when confronted with difficult decisions.
What this really boils down to is that Bracken and I aren't compromising in any way. We can make decisions without worry about how it will effect our partnerships, sales team, brand, or investors. When we need to make a decision, we basically ask ourselves, "what would the users want us to do here?". That's a freedom that most companies just don't have, and I think that's why so many companies consistently put out mediocre products.
I've worked at some great companies, but even great companies are forced to compromise. I can't count the number of times that I've known how a feature should work, but I couldn't build it that way because a major client of ours wouldn't like it (even though most of our users would love it). I've written marketing text that has been watered down because it might alienate some people. I've created web pages that can't work in IE6, and rather than tell users to upgrade the browsers, I had to just remove the feature.
Unfortunately, I don't think that's even the most damaging type of compromise. It can be much more damaging when you're compromising with other members of your team just to keep them happy. When too many people are involved in creating a product, it's easy to lose sight of the vision that originally inspired the product in the first place. Everyone has different ideas, and it's easier to accommodate everyone a little than it is to fight it out. My belief is that if you have a vision, it's worth defending it.
That doesn't mean that Bracken and I agree on everything. He has had criticisms of literally every single page I've designed so far. The reason this isn't a problem is because we don't compromise with each other. One of us is generally right, and one is wrong. Sometimes we're both wrong (but we're rarely both right). We discuss the issue until we both agree. I think most people prefer to combine both ideas so that everyone is happy, but that ends up creating a bloated and inconsistent mess. A product can't be based on five totally different visions.
It's probably not a concept that's easy to swallow because it could be confused for arrogance or stubbornness, but I'm really starting to believe that the more we compromise, the worse our products turn out. If we want to create really great, innovative software, we have to stop trying to make everyone happy and instead fight to make sure that our vision is properly executed. That's what we're doing at Less Annoying Software and I think the results will speak for themselves.