Evolutionary design is an approach to growing a system through incremental changes by observing its natural traits and optimizing its growth over time. It involves taking design decisions one step at a time by writing a failing test, making it pass in the simplest way, and choosing the next step by considering all options and their pros and cons. The tests apply pressure that molds the production code, and observing how the system evolves through this process can lead to designs that are simplified.