Obviously, some programmers are eager to show how smart they are by making some outrageously complicated code that no one can understand. Other programmers are firing at such a high level, that complication in solutions is a natural evolution.
Some of the worst code I've ever seen was a method that had over 2000 lines of code in it. No doubt this code was complex, but it was also very poor.
I think that a good programmer avoids overly complicated code. This includes avoiding the temptation to force a design pattern to fit into a solution that doesn't really require it. It also includes avoiding God-objects, magic buttons, premature optimization, premature generalization, and other anti-patterns.
I am constantly refactoring and looking for opportunities to simplify my solutions because complexity growth is an organic thing. Like many other organic things, it must be trimmed and pruned if we want it to continue to be usable. I hate having to interact with overly complicated solutions because with increased complexity comes increased likelihood of breaking the code.
I think that readability is the most important element of code maintenance, and overly complicated solutions almost always decrease readability, and increase maintenance costs.