I don't quite agree. Generally, flexibility is a good thing
to consider when writing or designing a program. But like
other good things, flexibility comes with a price.
Proper design doesn't mean you focus on one thing, and let
that thing dominate all decisions. Creating a good program means
finding the right trade-offs. You have to make compromises.
One of the obvious prices of flexibility is simplicity.
The more flexible a program is, the less simple its source
code and interfaces will be. The most flexible program isn't
necessarely the best program, and neither is the simplest
program. Instead, the best program is the one that has found
the best balance between flexibility and simplicity. And all
the other things to consider: resource usage, security,
maintainability, etc.