That's a great one. An observation that I've made over the years is that junior engineers tend to shy away from asking too many questions, afraid of appearing incompetent, whereas the most senior engineers asked the most questions. At a certain point asking questions becomes less about informing yourself, and more about informing the team (through context shared in meetings, chat). It can even take the form of the Socratic method, using questions to bring others to conclusions that may already appear obvious to you. Much better approach than pushing an idea directly onto others, and leaves plenty of room to change course as a result of the conversation.
Yeah, I’ve also gotten a lot of mileage in the last few years using the emotional version of this. Instead of listening to a proposal and saying “well that obviously won’t perform fast enough” I’ve started saying things like “I love this but I feel nervous that it might be slow once you have it working”. The difference is subtle but important, because I’m being clear I want them to help me dissolve my fear about the performance issues. We’re on the same team in a way we aren’t if I make it confrontational.
I think about it like you have a volume dial that you need to turn up or down depending on the room you're speaking in.
If you're pretty junior, or you work with a lot of loudmouths, you might need to turn the volume up higher to make sure you're listened to. If you're senior, or talking to a group of people more junior than you, you can get away with being a lot softer with your words. (And you often should, to avoid intimidating the juniors). And its not really about volume. Its about your word choice.
Low volume: "Hm, that sounds ok but I'm worried about performance."
High volume: "This will be unworkable because of performance problems. We need preliminary benchmarks, or a plan for solving those problems before we can move ahead."
Maybe.
At the same time I think most senior developers have been through the hype cycle a few times.
Junior to intermediate level devs seem to jump on the latest "silver bullet" trend quite a lot not realising that this happens all the time and probably isn't anywhere near as good as the hype.
I miss working with adults who know not to take the first version personally. To me the difference is not so subtle, the first version is an engineering conversation, the second one is somebody who is clearly pandering.
When I started my career in software testing 20 years ago, the Socratic method was my best friend. It's a great way to lead a developer to a bug. Instead of getting defensive, they're extremely motivated to fix it.