UPDATE 12/16/2010
http://reprog.wordpress.com/2010/03/28/what-is-simplicity-in-programming/
This is a great article, and gets to the heart of the issue with much more clarity that my little rough-draft below.
I completely agree there are different kinds of simplicity. Do you want fewer methods, fewer files, fewer variables, or otherwise? I'm skeptical that any such simplistic metrics really serve much purpose in a real sense, but they do point out the kinds of tradeoffs we face every day when writing code.
I think the real issue is making the right tradeoffs for the task at hand. As Stanley Fish said somewhere (in a book I read once, but now can't remember the title of) we should favor rules of thumb over absolute laws.
The consensus I hear in OO design is to prefer lots of little methods over big monolithic do-everything methods. This makes plenty of sense to me. Little methods are easier to re-use and easier to test. The additional claim that they are easier to understand has been a sticking point for me. I don't necessarily agree that's true.
In terms of just 'what does this code do', it's certainly easier to understand what 5 lines of code as opposed to 50 lines. But in terms of 'why would you want to do that', I don't think there's an obvious correlation between length and comprehensibility. An API with hundreds of tiny methods isn't simple, and isn't necessarily any easier to understand than the same lines of code grouped into 10 functions. If anything, it can be MORE complex to understand, because you probably have to call several of these little methods (and probably call them in a specific order) to do anything useful.
That being said, I still think lots of little methods are the way to go. I would also like to see some higher level methods, which don't do much more that call sets of more fundamental methods. This allows a new user of the API to see not just WHAT is done, but also WHY. Answer the 'who cares' question. I think to some extent there's an inverse relationship between comprehensibility and the number of options you are presented with. The more choices you have, the more you have to examine them all to figure out what's the right thing to do. Give me lots of little methods, but also give me those higher-level do-something-useful methods.
And, please God, name them well and name them consistently!
