One thing I’ve heard more than a few times in recent years is some concept of “ego free engineering”. People usually aren’t super explicit with this concept, but I’d say it’s fairly common practice to encourage people to contribute to a discussion whilst ignoring the possibility of hurting another’s feelings. Whilst I agree with this concept - I actually think it’s better to not even bring it. Instead the baseline of an engineering discussion should be without ego. Only if ego is brought in should we be addressing the issue. Here’s some examples of ways where I think it’s done wrong and is actually harmful, especially when from a manager or staff/principle eng:
“I always say I’m not the smartest person in the room - so interrupt me if I’m wrong”
What does this even mean? Will interrupting you be a signal to everyone that I’m taking the honor of being the smartest? What if I’m wrong? Now I’m at most the third smartest here right? Oh god how smart am I??…
In case it’s not obvious, I get kind of triggered by this concept of ranking a room by “smartness”. Are some people quick? Sure. Are some people gifted at particular mental acrobatics? Sure. Would I rate those traits as high merit when it comes to designing software? No! Context and experience are usually far far more important! Nobody needs to be gate-kept by an immeasurable quality when contributing to an engineering problem.
“Here’s what I think about problem X and why. Please confront me on this though!”
There’s so many angles about this which put me off. The combative nature of it. The individualism being brought into a team discussion. I get that the idea is to provoke discussion but as an introverted engineer who is looking at hard problems, I don’t need a spotlight shone on my reaction. All that’s required are your facts alongside time to digest them so any inconsistencies in the facts can be brought up. None of that needs provocation! Furthermore framing a proposal like this also casts an illusion of a window which gets closed when you don’t confront. It’s a technique which can be harmful to many engineers and is often used so unknowingly.
“This is a no-bullshit zone”
Oh thank goodness - I’ve just spent all day being yelled at by a compiler for every logical mistake I made, I really wanted to know that life outside of the computer is usually comprised of bullshit. Again - why the fuck would I be having a meeting with you if I wanted to bullshit? It’s something I can’t understand. No bullshit has to be an engineering norm, not something special we call out when we need it.
So if all of the above is wrong, what do we do?
Trust your colleagues! Trust that if your idea has flaws, they won’t hesitate to poke holes in it. Trust that they want the best for your team/org/company. Definitely trust that they want the best for themselves - i.e. are they going to want you to implement a plan which adds a huge maintenance burden on your team, and thus themself? In fact if you’re just trying to ensure people are listening, use that type of language instead:
Imagine you’re maintaining this system in 3 months time, what’s concerning you here?
This removes the focus from one ego against another and looks more at self-preservation with respect to the actual engineering challenge.
I think treating each other like very sensitive school kids isn’t the answer to collaborating better, and instead working with a default sense of self-detachment of ownership alongside common-sense respect is all we need. Interested to hear your thoughts on the topic.