Let’s set the scene. You’re at work, and there’s one of those things happening, where Alice (or Bob) have come to a decision that is self-evidently dumb as far as you’re concerned. You know you’re right, and you know they’re wrong.
Or, it could be a bigger thing. This could be a design meeting, and the rest of the team is going down a road that you just don’t agree with. Or even worse, it could be the tech-lead (or product-manager, or your boss) handing down a decision from on-how to do this clearly stupid thing.
Soooo, what do you do?
- “F**k-it, it’s not my problem”? If so, you’re probably seriously burned out, in which case you should move on. Or, you might be in a “collecting a paycheck” kinda place, in which case the rest of this post really isn’t for you.
- “Yup, let’s get it on!” Ok, maybe not quite this phrasing, but it does bring up the question of how forcefully you should argue, and/or get into the fray.
The thing is, it’s quite easy to come to a decision when you’re just by yourself. After all, the only person you need to convince is you!
But, when it’s more than you, when you’re part of a team — or an organizational unit, or a company—it’s all about consensus (yes, even if you’re a #CowboyDeveloper). In this world, things almost always are a heck of a lot more complex than what you see at first blush.
Yes, yes, “black and white” situations do exist, but most of the time you’re operating in a morass of gray. And within this morass
- You might not have all the facts. Do you know what all the business pressures are? The sales opportunities that present themselves if you just add this one stupid feature? Or, the likelihood that if you use this perfectly ridiculous technology, the makers of said ridiculous technology might acquire your company?
I know, in a perfect world you would be privy to all the information necessary to make an informed decision, but that just becomes less and less feasible as businesses grow in size. It’s far far easier — and more efficient — to delegate responsibility to the tech lead, manager, business lead, whatever. And through simple information leakage, by the time information gets to you, it’s been muted/dumbed down to the point where you simply can’t have the entire context.
- It might be above your pay grade. This is a variation of the above, but sometimes perfectly stupid decisions are made for perfectly sound business reasons. You probably don’t know that the reason you’ve been told to integrate this utterly un-necessary 3rd party feature is to placate that one recalcitrant board member (who owns said 3rd party). And odds are that if you brought it up with the CEO, they would completely deny it. And yet, it happened…
- This might be necessary for consensus. This is classically what happens when you need to deal with internal business pressures. For example, deploying the new feature using Kubernetes might be spectacularly overkill-ish, but this might be something that gets buy-in from the platform team, and that means one less battle to fight come budget time. And, in case you haven’t already figured this out, so much of what happens in companies invariably boils down to generating consensus across various Involveds around budgetary expenses…
- There might be an opportunity for others to learn. A bit of a tricky one this. You see, people learn best from mistakes, and if making the wrong choice here isn’t catastrophic — and/or can be backstopped — then this could be a great opportunity for others to learn!
(There’s a meta-lesson here too, in that if it turns out that it wasn’t a bad choice in the first place, then hey, you learned!)
That’s good then, you should stay quiet, and not argue, right?
Mind you, that doesn’t mean you start with “That’s the dumbest idea I’ve ever heard!”. Speaking your mind — without repercussions! — is a privilege, one that is granted only when you are in a position of trust¹. If you are new to the team, you need to build those bonds with the tea, and get to to a place where you are a trusted — and trustable! — voice. And in that vein
- Ratchet up. The more rapport you build, the more your voice will be heard without automatic barriers going up. As your team-mates learn that your viewpoint has value, they’ll listen more.
- Be empathetic. Understand why the other person has their position. And, always, remember that the larger the organization, the more likely that decisions are going to have some aspect of “lowest common denominator” in them. Consensus is hard!
- Don’t personalize it. Always keep in mind that the discussion is not about you. Ideally, the rest of the team also operates from this premise, but if not anything else, you need to keep this in mind!
The bottom line here is that your ability to speak up, and be heard, depends on your relationship with the team, your boss, and others. If you have agency (you’re the team lead, or the boss, or whatever), then it is incumbent on you to make sure that everybody on the team feels comfortable in speaking up, and making themselves heard, without punishment or embarrassment!
Yes, I mentioned that being part of the conversation is a Privilege, but what you should strive for is to change things around. Get to a place where being part of the conversation becomes a Right, not a Privilege. It won’t be easy, but every step in that direction is a worthwhile one!
- If you are not in a position of Trust, then you have other issues. Either get to a place of trust, or move to a place of trust (if that’s an option, that is)