A case for MVVM
Before we get too deep into discussion about MVVM, let's first look at the need for MVVM and a little history to it. Traditionally in application development the lines of where logic for your application goes sometimes gets blurred. This blurring of lines causes applications to not optimize code re-usage that in turn leaves room for bugs and increases the maintenance of your application.
Separation of Concerns
The other case for MVVM is creating a true Separation of Concerns for parts of your application, with each part being completely independent from the other. It reminds me of my childhood; I always loved to have my dinner on a divided plate that would keep my peas away from my bread and my spaghetti sauce away from my peas and away from my dessert. Each part of MVVM is like a meal that isn't mixed together; while it is fine to mix your food, it does not allow you to enjoy each individual item. Architecting your application isn't that different; if you have been a programmer...