I found too many sources for this to attribute it to anyone, but I thought it was a brilliant summary of a debate I have many times a month:
A lot of overengineering has been justified in the name of flexibility. But more often than not, excessive layers of abstraction and indirection get in the way. Look at the design of software that really empowers the people who handle it; you will usually see something simple. Simple is not easy.