When it comes to designing software there are those who look for the absolute best technical solution and those who do their best to keep things simple. I have witnessed projects that have become so complex that new designers take months to ramp up on the software base before they become functional. Sometimes this is the only way to solve the problem but those times are rare. More often than not, the same result can be achieved with more thought and less typing.
Simple is hard because it often requires designers to think outside the box and use components in ways that their creators never intended. The simple approach often involves writing test programs to determine how components will react. These additional programs are generally not part of the end product. Project progress can seem to be non-existent right up until the time when the pieces are brought together. There is a higher risk of missing the delivery date because of the non-deterministic nature of the development, but if the design team is experienced, this risk usually works in their favor.
Skilled developers using the keep it simple approach, deliver projects earlier that are easier to support, execute faster and are easier to understand.
I have found that generally in life, if you are doing something and it is hard, then you are doing it wrong. Some have disputed this position, but it consistently works for me.