There is a need for both approaches. If you have the expertise to be able to diagnose the problem, asking for the problem to be solved is the right approach. When dealing with non-technical issues, where the person coming to the manager is familiar with the process, it makes sense to ask them to bring solutions (as a first step) instead of imposing something on them.
One of my best managers ever was non-technical. His line was, "you're smart enough to fix this, so do it, do it right, and don't let it happen again." He did a great job getting the resources to back it up, too, while shielding his team from company politics. Right up until the point where he lost at company politics, anyway.
I appreciate when they bring me a problem with a suggested solution. It's often quite helpful in determining the best possible solution, and so far as I remember, they quite often got that solution implemented.
But before I started asking that, and just implemented their solutions, I got a lot of kickback for it not actually solving their problem, which is how I learned to ask it in the first place.
A problem without a suggested solution is a complaint. If your people only bring you complaints, it is a drain on everyone; it breeds discontent in the workforce and contempt in management.
To me its part of the taxonomy of becoming a more experienced developer:
- First you can implement solutions (jr level)
- Then you can design solutions (mid level, sometimes senior - most of time is spent here)
- Then you can find problems that need solutions (senior, management)
I understand what you are saying. How does someone who is good at seeing problems communicate those problems and not come off as whiny and complaining?
I often hear "Ugh, it's tiring you telling us what all the problems are, why can't you tell us the solution?".
But I get "Man, I'm so glad you saw that problem way back at the design stage. We really dodged a bullet there." about 3-4 times as often.
What I generally don't hear is, "OMFG, our project is about to fail. Why did no one see that this issue was coming and do something about it!".
The assumption that anyone noting a problem is just whining and complaining is a good way to tank a project. I've seen that type of thinking prevail, and it sucks for everyone.