Here's the most common question a Business Analyst (BA) is ever asked: "What does a BA do?" my standard answer is "It depends who's employing me and what stage a project is at." A slightly better explanation of what I do is a combination of translator and problem solver. The idea is that I understand both the business side and technical side of projects well enough to translate for each camp because in my experience, both the IT group and the business group have trouble communicating their issues in a way the other group understands or finds useful. I usually find that part easy but the problem solving side can present some prickly challenges.
Perhaps the most obvious reason problem solving presents challenges is that the problems are often quite difficult ones - otherwise they wouldn't be problems, right? The second, and usually thornier, issue is that problems often morph from being technical problems into being political issues. For programmers who don't understand why you need BAs, this is their main service to you: they're a shield against the idiocy that threatens to destroy your working days. If all a BA ever does is come up with creative ways to say "You're an idiot, we're not doing that," then that BA is your best friend. Because no matter how much an idiot deserves to be told "You're an idiot," it's rarely a good career move to put it so bluntly.
That brings me to the title of this piece: although "discretion is the better part of valour" is a well known saying, I often find myself struggling with identifying the boundary between discretion and wimping out. Bowing to pressure every time it's applied is a recipe for disaster but continuing to argue way past the point of productivity is also destructive for all concerned. Unfortunately, solving this is more art than science - there is no single equation that can be applied (this might explain why, in my experience, many programmers have trouble dealing with this issue.)
You have to take into account the importance of the person who may be demanding a particular solution, the cost (in both time and money) of going along with a demand, the potential long term impacts of both resisting and going along with a demand, the technical feasibility of a demand and how your recommendation is going to affect your standing in the organisation (or marketplace if you are dealing with customers) among other factors.
So, having said there are no hard and fast rules to govern this situation, here is my number one rule to apply when you find yourself being pressured to do something you think is wrong. Avoid saying one proposal is wrong unless you can put forward an alternative that you think is right. I learned this approach from an old boss of mine who had two sayings "Don't tell me I'm wrong unless you can tell me what's right," and "Don't come to me with problems, come to me with solutions." Now, she was one of my best bosses but she could be a bit hard-headed this way. You literally couldn't go to her and complain without offering a viable alternative - she simply wouldn't listen.
This approach is good for forcing you to think but it doesn't really fit situations where you just know a proposal is wrong but you haven't yet come up with an alternative. Sometimes stopping forward momentum is as important as providing an alternative trajectory. This brings me to my second rule: if you can't offer an alternative at least clearly articulate what your problems are. Simply saying "it won't work," isn't good enough. Even if you're right.
Because human nature is an unpredictable thing, sometimes even bringing up a list of logical flaws isn't good enough. People can be so pissed off at you for questioning their vision that what you see as logic, they see as picking a fight. And some people are always ready for a fight. One way I've found to defuse this mindset is to not put your problems forward as problems - ask them as questions and articulate what you think a negative consequence could be. Keeping your responses open-ended can be a very powerful ploy.
When your antagonist says something along the lines of "You always say we can't do things," respond with "I didn't say we couldn't do it, I asked if you had considered that doing that would have the consequence of..." When you're dealing with a really belligerent workplace bully (and we all have to deal with this type at some point) who refuses to back down no matter what, get it in writing.
It's amazing how many bullies fold when you say "OK, we'll document that I raised issue X would have consequence Y and you said that wasn't a problem and we should keep going." A paper trail is a good defence against being blamed for someone else's mistakes. Even if they are so intransigent that a paper trail won't make them back down, at least you'll have the evidence if worse comes to worst that you voiced your concerns at the appropriate time.
For me, that's the last garrison, the "Alamo" moment. If you retreat from that point you may as well cut your wrists. I don't believe in wasting too much effort on a losing battle but if you don't at least ensure your voice is heard and documented, all you're doing is setting yourself up to be the patsy. If some idiot with an MBA is trying to shout you down but won't commit it to writing, it means they don't have the courage of their convictions and they're deliberately leaving a back door open to blame you if things go wrong. If you let them get away with it then you're the idiot.
If you find yourself in this situation and you aren't given the opportunity to have your objections recorded, you need to do one of two things: quit or accept that your working life is going to be miserable. When it gets to this point, discretion is no longer the better part of valour. If you wimp out this badly, you pretty much deserve to be the office whipping boy.