Let me try two words on you:
Apple or Android
Try to gauge your reaction. Which one of these words makes you feel good? Which one will make you feel angry? Why would that be? Why would these simple collections of characters have such an impact on us? If you have not felt anything, try some of these word pairs:
Java or .NET
Windows ör Linux
Angular or React
When you have ever been involved with software development, you must have felt at least something. We spend countless hours discussing technology choices, without arriving at decisions. We invest lots of energy filling the Internet with our opinions through blog posts, podcasts and Youtube videos.
Sometimes we feel so strong about our own preferences that we start to separate ourselves from the fools who think otherwise. I have seen splits in an organization where two groups called each other ‘the dinosaurs’ and ‘the cowboys’. Although we might make jokes about it, still people from one group found it hard to accept ideas from the other group.
This behavior is caused by self-justification. Humans have a need to reduce cognitive dissonance in their minds and often they will do so by justifying their beliefs or actions, even at the cost of other humans. This is why some people keep believing they were abducted by aliens. It is also why people are willing to keep spending money on projects that have already failed (the sunk cost fallacy)
So if you just invested a lot of money in Apple hardware, you will make yourself belief that Apple hardware is better than anything else on the market, regardless whether this is true or not. Or if you fought yourself through a Linux installation, but find yourself missing out on some polished useful Mac/Windows software, you will convince yourself that FOSS is better than these products from sleazy corporates.
As you might know, the stereotypical consultant answer to all technology questions is (or should be): “It depends!”. Most business problems come with their own unique set of constraints and challenges. Solutions that worked at one place could be totally ineffective in other situations. This can be pretty hard on our self-justifying minds.
Solutions we spend a lot of time advocating for and which we have seen working in other places fail in the current situation or are not accepted by the internal developers. Sometimes technology that we invested our time and energy in for years becomes obsolete. And then there are these youngsters, fresh from school, who want to throw everything away, seemingly disregarding the business knowledge that has been built up for years.
It is important in situations like these to be aware that self-justification is something all humans suffer from. First and foremost your own judgement will be clouded by it, if you are not careful. But also the other people you are discussing with, will be affected by it.
Internal staff will reject your idea because they think they are capable enough and need no external guidance. Regardless whether this is true or not, to lower their cognitive dissonance they will convince themselves that everything the consultant says is stupid. “He has not been there, he has no clue why we do things the way we do. We are not stupid!”
This is why the youngsters are not willing to work with outdated technology. They see themselves as the new generation. Saviors of technology. They lower their cognitive dissonance by dismissing existing tech as being old fashioned.
In order to handle this internal conflict in your mind, you need to remember that you are a professional software engineer. Regardless of what your technology preferences are, if you choose a solution based on facts with an eye for the constraints and peculiarities of the system, you did a good job. The fact that someone else might know of a better solution does not change this. Nobody knows everything and here is an opportunity to learn.
You are still a professional software engineer when you work on outdated technology. You are still a professional engineer when you propose a solution that is not accepted, probably because of reasons you did not yet know about. You are still a professional engineer when a solution you designed did not work out. You might have made a mistake (although that is not even certain) but you are still professional about it. Especially when you try not to fall in the sunk cost fallacy trap.
Working with people who are in a self-justifying mode can be very difficult. The best advice here is to build trust with that person. Maybe there are some issues where you can give in, because they are of lesser importance. Give them credit for their solution. They might later return some favors. You help reducing their cognitive dissonance when they will reason that they trust you and that they might go along with a small experiment.
If you want to read more about self-justification and the things it can do in peoples mind, there is a very nice book titled: Mistakes were made (but not by me) by Carol Tavris and Elliot Aronson. Some of the stories are quite shocking. They made me aware of the many tricks my own mind can play on me.