Simple is better where you need to maintain control, because then a human being can understand the entire system and its behavior becomes deterministic from our perspective. Complexity--practically by definition--means that the system's behavior becomes harder to predict, when software development is (in most cases) explicitly focused on delivering
expected behavior. So for most practical software development purposes, simplicity is better.
But complexity can also be emergent from the aggregation of many small, simple components. E.g. the internet, which grew out of some relatively simple protocols connecting a handful of computers into the globe-spanning organism that it is today. So you may not design a complex system as a software developer, but your simple system may become a component in a larger, complex system. And that system will be more robust than the individual, simple components are. Such as the replacement of HTTP with HTTPS at the protocol level or fiber replacing copper in the physical system of the internet. Those simple systems have (or rather will soon) perish, while the more complex system that emerged from them survives.