Saying 'no' to keep crap out of products
blog.orangecaffeine.com
blog.orangecaffeine.com
We've all written things that we thought would be awesome that turned out to be disregarded by users, and deployed things we thought were pointless nonsense that turned out to be fantastically engaging features that users rave about. Can you really tell before you actually get proper feedback (eg the user seeing and using the feature, not just asking if they might like it because users say yes to everything)?
Probably not. But even if you built a feature that's not well received it's important to remove it again. I've seen plenty of projects that carry tons of mostly unused features (or better called technical dept at that point) with them.
That being said, I'd like to independently re-echo the thrust of that post because I did feel the contribution was key:
There are often internal channels in large companies that the boots on the ground use to communicate with each other in a more informal fashion. I've noticed across multiple companies that this is a FANTASTIC leading indicator for the success of a feature. For however much flak engineers get for not being "people persons" or however you put it, or needing "Designers" to guide their customer facing work, I've seen significant correlation between popular sentiment and feature success. Perhaps at the end of the day, enough of our outlook as "consumers" remains to properly instruct us despite whatever programmer bent we may have; or more pessimistically, our own sentiment on what we're making subconsciously impacts our output in a meaningful way.
So to end this ramble briefly; I think we CAN tell, the powers that be just need to look in the right places, and listen well if they do.
The more features you add to a product, (in my mind) the worse it becomes.
There are times when I want the really great at one thing too and I don't want my Trello board to be a social network or so. I think it is more about identity of the product.
Building personas of users is designed to help this, but you really have to be able to embody the persona.
Plus, isn't it just more fun building stuff you yourself want?
Of course!
But the interesting point here is when I propose building things that I want, my colleagues insist that nobody else will ever want it, that I'm a unique snowflake in what I want. And yet when I do, they do. It happens over and over. I can't explain it.
The same goes for the kill line. Do you remove something if it's used by less than 50% of users? Or is it 10% or 1%?
Values and priorities are nice, but even with those well listed the questions above stay.
Intercom might talk about saying no, but it has grown from a simple single-feature product to an OS where mos people use just a small part of it. Preach or practice?
I lead a small engineering team at a product company working for non technical cofounders and this is the hardest thing about my job. Two policies I've implemented have helped me a great deal:
1) We must thoroughly discuss the problem before proposing solutions
2) New features must be discussed and fully fleshed out at least three weeks before they can be built.
Is it possible to go to the co-founder and suggest that only features which customers will use/buy get built? If it doesn't add to sales, or have some actionable metric as to why it is being added to the product, it doesn't get done. This works for engineering too. No 'refactoring' if it doesn't have a measurable benefit to the company.
By taking this approach, the hope is that 1) the co-founder takes the time to consider what is most important, 2) can articulate that to you 3) the dev team understands why they are building the feature.
For each feature in dev, have the co-founder write out the reason it is being built.
Here's an example on the current product I'm working on.
1) We're redoing the search page because x% of users leave the site from that page without taking futher action. We aim to lower that number to x%
2) We're refactoring component x because it loads on every page and is far too slow. We'll improve response time by 600ms. This will extend page view time by x seconds and increase views by x%
3) We're going to stream our large files where we currently download the entire thing which causes customers to wait for x seconds. We'll see an x% improvement in page load, resulting in x more page visits.
You get the gist.
At first, I'd suggest the co-founder 'might' just make stuff up. But if you have something in writing that you can point back to, and then go back to him if it doesn't match up, he'll hopefully start giving it more thought.
On the flip side, it is also possible that the co-founder has good reasons to request these features but maybe hasn't communicated them well to you and the rest of the dev team.
This isn't the problem. There are justifications for new features but adding too many turns the product into a mess. I'd like them to focus more on the problem we're trying to solve and think about the product holistically.
That is the simple statement, as you said '[how does this feature address] the problem we're trying to solve'?
Sometimes adding too many features turns the 'product into a mess', but I would argue that is not always the case. It sounds to me like you have very little confidence in the co-founder to make the right decisions. That may be well justified, it may not be. Sorry I can't help any further.
"How about this instead" is always better than "no", but that depends on being able to discover their true pain-point rather than what they think could make them happy.
A classic "no" - Bob Lutz at GM killing a voice-input system for GM cars which let the driver operate most of the auxiliary systems by voice. It worked, but was just too clunky and embarrassing to use.
I think the framework/product should propose some configurability or some extension points. Then your product can stay pure and people can still adapt it to fit their need. If you propose an API then it can be integrate with other product/tools/developmnent. If it embark scripting ability then the user can modify it's behaviour...
Whatever you end up with, though, is definitely a "support forever" situation.
I would say my reflection to achieve this would be to define
- what is the product perimetre
- what architecture/design principle will bring you capabilities and useful abstraction
- what are the best interface/extension points for allowing user to extend the usage easily
Then hard work, iteration and pivot
Just build for yourselves. People are mostly like you.