I’ve worked with many experienced engineers before. One trait I’ve seen they all share is that they have a set of preferences that were build up over the years. People prefer different approaches, technologies, working styles, languages — you name it. Some of these preferences are based on previous experiences, and some are just biases (but everyone listens to them more because they are coming from an experienced person — aka an argument from authority).
A mistake that I’ve seen these very experienced coworkers of mine do is to express their very polarized opinions in a loud manner, bringing down the camp with an opposite opinion. I think this is a mistake, because often members of the other camp work with them on the team.
What I’ve seen working very well is to stay mild but persistent about pushing one’s own hidden agenda. See, if a person bases their judgement on valid experiences, then I think it might be a good strategy to follow it. There are many valid ways to build software. However, if the team doesn’t feel compelled to follow the proposed way (for example, it’s too much against the main stream, too exotic, or they just don’t like the leader), then it would be a mistake to make the team follow that judgement because of the potentially lower team morale.
I think that experienced people need to put more effort into making sure their peers really want to follow their suggestions. One has to build relationships for that. One has to be interested in the people on their team as much, or perhaps even more, as they are interested in their agenda. One has to build trust by supporting others and being friendly to them; taking responsibility in critical situations; constructing the work in a way that the team, the product and the agenda can move forward altogether.
The most immature thing to do is to put less experienced people down with excellent arguments, make fun (or even protesting) of the popular opinions or decisions, and pay attention to only one’s own problems.