Software design is not a haphazard process. There are many factors to consider in any design effort. All design should be as simple as possible, but no simpler.

Complexity is your enemy. Any fool can make something complicated. It is hard to make something simple. – Richard Branson

This facilitates having a more easily understood, and easily maintained system. This is not to say that features, even internal features, should be discarded in the name of simplicity. Indeed, the more elegant designs are usually the more simple ones.

Simplicity is the ultimate sophistication. – Leonardo Da Vinci

Simple also does not mean quick and dirty. In fact, it often takes a lot of thought and work over multiple iterations to simplify. The payoff is software that is more maintainable and less error-prone.