Engineers Want Problems, Not Solutions
It should come as no surprise to anyone that engineers love to solve problems. Chasing down a bug. Triaging a production outage. Finding an elegant way to solve an interview question in linear time. Sure, some problems end up being highly stressful situations that no one wants to be a part of, but solving problems is what engineers live for. I would argue even more so than building solutions. When there is already a solution presented, there is less to solve, less to learn. Engineers will go into a different mode while listening to a proposed solution (and nitpick things), rather than be in a creative state of mind if they were helping to come up with the solution in the first place. I guess we can always find a better solution, or refactor an existing solution to make it better, but it feels fundamentally different than solving it the first time.
This is where product comes in. From my experience, product is usually bringing work to the engineers to solve, but it all comes down to how product presents the work. If it is presented as a solution, with all of the questions/problems solved, engineers are not as excited about it. (Yes, I know that there are some people that are totally fine with “just writing code” and don’t care too much about the problem being solved, but I guess that’s just not me.) Anyway, when product brings work to the engineers, presents it as a problem to solve with use cases, and doesn’t have all of the questions answered, engineers are giddy (Do engineers get “giddy”? Whatever, you get my point). This also does something else for the product team. They have less work to do in a vacuum. They get to collaborate on the solution, rather than sitting in a corner trying to figure out a solution. Sometimes, engineers will be able to say “we could do something similar to how we implemented X, and save us time”, but if product didn’t realize how that other feature was implemented and came up with an entirely separate solution, now the team is starting from square one. Together is better (look up Simon Sinek).
Together, we can come up with a better solution. Brainstorming ideas and ways to solve the problem before coming up with a solution will result in a better first solution. There will always be room for improvement, and just getting a feature out to customers to iterate on can be a great option. However, I think product and engineering collaborating on a solution will always come out better than either side working on it in isolation.