Is it the person in charge that should make the final decision? Sometimes, but not always. It should be the person who’s most knowledgeable with the information on which the decision will be based.
Let me give you an example. In the tv show 24, this season the president of the United States was taken hostage in the White House by a small team of armed men. Yes it’s quite a story, but let’s ignore that for now. What was interesting is that the decision on whether or not to storm the White House and retake control was not decided by the agents that were following the case the whole time, those that knew who the terrorists were and had studied their histories, those that really understood their motivations and intentions.
Instead the decision was taken by the Vice President. He didn’t even know what was going on, he was just quickly appraised of the situation, well as much as they could within minutes, and he had to make a decision on whether or not to storm the White House. There’s no way this person could make the right decision unless it was pure luck. There’s was just too much history and information needed to full appreciate and understand the situation. Plus, he had additional motives (such as protecting himself) which came into play. In this case the wrong person to make the decision was the person in charge.
Of course this is only a tv show, but it happens all too often. Especially in software development. I can’t tell you how often I’ve seen developers struggle and fight through a hard problem only to come to a fork in the road. They then have to go to the team lead / manager (or whoever is in charge, which is sometimes someone who’s not at all technical) and have to explain the issue. Now if it’s a good lead, they will listen to the developer and pretty much let them lead the decision, after all they’ve been in the thick of it while the leader only superficially knows and understands the issues. It makes sense and is the smart thing to do.
However many times the opposite happens. The suggestion is completely ignored and the developer is told to just make it happen (even when they strongly disagree and push against it). My favorite is “I understand you might not think this is a good idea, but just do it anyways.” The reality is that someone working on a problem for hours or days can’t really express the full issue in minutes. It’s just not possible, so what you get are the highlights, the glance over. If you really want to make the decision, than dig into it, spend some time to really appreciate what’s going on. Expect to spend some hours, maybe even days to fully understand what’s going on. Especially if the decision has large implications for the future.
The reality though is that sometimes the developer is not perfect either, they might not appreciate everything else that’s going on. Maybe there’s political factors. Maybe there’s monetary factors. Maybe some timelines with the marketing team that need to be met, etc. If you can (I understand that sometimes it’s not possible), than share with your developers other factors that will affect the decision. Help them rather than just make the decision outright based on only one factor. In other words, don’t just pick option A because it will allow you to meet your deadline while option B won’t because it might come back to bite you very hard. If the developer is pushing option B so adamantly, figure out why. And only then make your decision. Don’t just base it on one factor that you know, understand the full problem. Work together to come to a decision.