You’re maintaining a project that is going to be used by other people, think about a library or a set of components. One of the key elements is to choose whether you want that project to be opinionated or not opinionated.
Opinionated means that you have a vision, you care about that vision, and you adapt to the goal, so that you get closer to what that vision is. That vision could be a set of values, of ideas, or of constraints that you will place onto anyone using that library.
On the other hand, if you want it to be non-opinionated, then it means that you’re targeting a wider audience, you’re trying to reach a bigger audience and your project needs to be able to support different activities, different interfaces, or whatever that is.
The point, though, is that when the project grows, being opinionated could become harder and harder. There are trade-offs between the two ways of working.
Taking decisions
When you’re doing non-opinionated, sometimes taking a decision can be hard, because who am I serving?
It’s kind of building a product, after all: you’re serving a customer type.
Whereas when you’re opinionated, you’re serving yourself first, or your needs first, and it’s easy to take a stance and say: yes, this goes in, this doesn’t go in. You’re, after all, clear on what should be done and why.
Keeping the stance
Now there’s another thing that’s important: when it is opinionated, keeping that stance might be harder than it seems once the project grows.
The “opinion” belongs to the person who had the vision, and as humans we tend to (or at least that’s the way I see it) create new rules, and think that those new rules are the new opinion.
But those are just rules, not values, not ideals. They might come out of values as a way to make those values tangible, but that is not a guarantee.
Being opinionated means, to me, that you want to continue passing down that initial opinion with full intensity, instead of diluting it. You want that concept, use case, ideal or simplicity to be passed down with no exception, so that your product is expressing the need or your idea.
I think building that type of product is easier when you’re the main user, and it’s harder when you’re looking at it externally, because the more you’re the target customer/user, the easier it is to keep that opinion true to its roots down the line, as opposed to following rules that are synthetic to some level.
Instead, when you’re building something that is not opinionated and aims to reach a wider audience, you’re facing all the challenges of how should we build this and how should this be implemented.
That’s something you could compare to products that are wide-ranging, aiming to reach a bigger population, as big as possible, that are generic and broad, and nailing down the user type and the user need becomes the job.
You’re searching for opinions, opinions that you can serve and include into the use case to advance the product itself.
