> When an engineer like this proposes something that adds unnecessary complexity, it's usually hard to argue with.

Don't argue for something, ask questions that point to the pros and cons. Eg, "do you think we might be over complicating this? I wouldn't want to add complexity unnecessarily - or do you think `x` is necessary?"

You might need to ask a few questions like this, but if you're right and ask the right questions people will tend to see the error in their thinking themselves and argue your case for you. And if not, well, maybe you are wrong. Or maybe it's just nuanced and there is no clear right or wrong answer.

I find intelligent engineers have an ability to write much more elegant solutions, but also have a larger capacity for complexity. So while they can build great solutions they're often more comfortable with complexity and will sometimes simplify things less.

I think my strength as a developer is that working memory is absolutely terrible, but otherwise I think I'm fairly intelligent. So while I can write and understand complex code, I find I'm naturally inclined to find simple ways to design and structure my code otherwise I can get quickly overwhelmed if too much is going on at once.

Something I try to do is package pieces of logic into lots of very simple services or modules - this way I'm either dealing with multiple parts at a high level or a single part at a low level. I guess some would argue this is just how to write good code, but for me I literally have to do this or my brain stops functioning. I guess my point is that there are ways that complexity can be abstracted away, so unless the extra functionality is truly unnecessary, then perhaps the solution here is just to spend some time on improving the structure of the code?

> In a past role, I got into a debate about code style with the smartest person I've ever worked with. It boiled down to me advocating for more whitespace in his code and him arguing that adding whitespace made the code harder to read. It took a bit, but eventually I came to understand that he is so good at reading code that he just wants it all laid out in front of him as densely as possible. He can effectively run it in his head, as long as he can see it.

I think this is a you problem personally. I actually struggle to understand why someone would even get into a debate about something like this. As a developer you need to have some level of flexibility in how you work. Every place I work has different coding standards, tooling and ways of working. And while these things are worth discussing as team from time, you have to be understanding that you're just one person on a team with your own personal preferences. If you can't adopt other ways of working then you're never going to work well in a team.

And to be clear, I'm not saying you have to like code with less whitespace, I'm saying it shouldn't be such a big deal that you're getting into debates with individual developers about it. If you're that bothered about it this would be something I'd probably raise in a group chat - "hey guys, just wanted to get your thoughts on whitespace - do you think we should be adding more or are you happy with how things are?"

Whatever the answer is though I don't think it's being combative or argumentative. I think you need to find a better way to resolve differences of opinion (ask questions, listen more, seek to understand) or find a way to manage the complexity you're facing - either independently, or preferably as a team.