On a related note, suppose that you already spent too much time to try to really understand the code and asked the developers for the motivations for their strange desing decisions. How do you present criticism in a constructive way then?
By showing you understand the constraints the developers were under, and acknowledging their frame of mind. Criticism is fine, giving it without understanding the context is not. If you are able to summarize the problem in such a way that the developers say 'That is right', and they are not correcting you further on your understanding of the problem, then any criticism from your side is not as much of an attack. By f…
I really, really don’t like making people feel stupid.