> When an engineer like this proposes something that adds unnecessary complexity, it's usually hard to argue with.
You should consider whether or not the solution is actually more complex, as in the simplest implementation is larger. Or if it's just particular in a way that you find confusing.
If these engineers are significantly smarter than you, which you allude to, but I'm not presuming, then there is a chance that what they are doing isn't more complex, just confusing to you.
You can try to get at this by asking them about estimated LOC for each implementation, time estimates for each implementation, or number of concepts in each implementation. A good design process usually enumerates a few more complicated solutions, then pares back to a solution optimized for the time and resource constraints. They may not understand that, and so you should explain that complexity vs functionality is an important tradeoff. They excel at producing highly functional designs, but are bad at correctly ranking those designs when complexity is a factor.
Separately, code style discussions are usually just manifestations of OCD. That comes with the territory for certain types of engineer. Those discussions are rarely important, and that energy should be directed towards finding real flaws in the code's structure or the system's design.
You should consider whether or not the solution is actually more complex, as in the simplest implementation is larger. Or if it's just particular in a way that you find confusing. If these engineers are significantly smarter than you, which you allude to, but I'm not presuming, then there is a chance that what they are doing isn't more complex, just confusing to you.
You can try to get at this by asking them about estimated LOC for each implementation, time estimates for each implementation, or number of concepts in each implementation. A good design process usually enumerates a few more complicated solutions, then pares back to a solution optimized for the time and resource constraints. They may not understand that, and so you should explain that complexity vs functionality is an important tradeoff. They excel at producing highly functional designs, but are bad at correctly ranking those designs when complexity is a factor.
Separately, code style discussions are usually just manifestations of OCD. That comes with the territory for certain types of engineer. Those discussions are rarely important, and that energy should be directed towards finding real flaws in the code's structure or the system's design.