I am working in a small IT start-up of ~20 people.
Most of us are very technical and senior in our respective roles with very little overlap in our specialties.
One of the first hired guys - let's call him Dan - is a decent programmer but isn't really an expert on any of the main topics we are working on. As there was nobody else at first when he was hired, he started working on a lot of those topics anyway, the best way he could. While he did a decent job given the circumstances, a lot of the calls he made were not ideal, and these "mistakes" were highlighted every time a new hire with more experience joined our team.
Our management is of course very aware of this and actually expecting it: Dan is facing absolutely no blame for any of those mistakes - quite the opposite - and that makes total sense. I joined shortly after Dan and I, too, had to work on things that I barely knew anything about at first. It's just start-up reality: you just can't start with the perfect roaster of people from day 1 and mistakes will be made. It's fine.
Obviously, the more experience people we hired, the more changes had to be made. And now Dan is getting more and more defensive. He constantly tries to defend his choices, his designs, even when faced with people who have been experts in their fields for +20 years and come up with very factual points explaining why X or Y is not ideal. He just says "no, I disagree" without giving many explanations. To makes things trickier, a very experienced guy was put in charge of Dan and all of sudden, Dan had a boss who wasn't the CEO anymore.
I get how the situation can be frustrating for Dan, slowly losing his leadership over the codebase, whereas he was one of the first people to join, but at the same time we have a functional product to ship: good technical decisions must prevail, not ego.
Now, Dan pretty much has issues with all the various teams we have, but with me it feels even worse: while I have not 20 years of experience on my topic and am significantly younger than the others - including Dan by a couple of years - I was still hired for my particular skillset, track record and expertise and I am the only one in the company with experience on a very important aspect of our product. I was hired not only to implement things on the product, but to train all the other employees on "online & cloud development, operations, security and systems reliability". All the other employees, no matter how senior they are seem to enjoy my trainings and keep saying they are learning a lot - I myself am learning a lot from them too in their fields, so it's really a great vibe all around.
I recently started working with Dan's team on a key aspect of our product, and had to develop or redevelop some of the things Dan's had been working on. To be 100% honest: his stuff would just never scale in production. Communication with him has been a nightmare:
- Dan: "Why are you changing things? We've always done like that."
- Dan: "Why are you doing things so complicated? You know, keep things simple."
- Dan: "We don't need that complexity. It was working before."
Now, the "complexity" Dan is mentioning is everything that is actually required for me to make a good job: I can't debug an online service without decent logging, error handling, monitoring. We are making a product that needs to scale for hundreds of millions of elements, which will never be able to fit all at once in memory, so this needs to be accounted for. I could go on: there are always good reasons why I must "complexify" things: we are getting something for it.
I tried to explain before making the changes, doing prototypes to demonstrate and explain better: no luck. No matter how patient I am with my explanations, Dan just doesn't care. He constantly hammers the message that I'm generating complexity for no reason. This annoys me, a lot.
Management actually takes my defense and say they understand 100% why I make changes and such and even warned Dan several times to be less defensive and negative.
But I'd still like to find a way to get through to him and communicate better.
What can I do to earn the respect of that coworker, or at the very least to establish an effective communication channel?