"A key insight in computational learning theory is that the complexity of a learning problem is determined by the complexity of the hypothesis space and the amount of data available."
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies.