I find MVVM very confused.<p>In MVVM you have the Model and View layers, which I get, and also the View Model layer, which I don&#x27;t. The View Model is supposed to be UI independent, and that I don&#x27;t get. The Model layer is already UI independent. There is no need for a second UI independent layer. In practice the View Model layer is written specifically to support the UI, so there is no point in making it UI independent. Some argue this is for testability. But you can already test the Model layer without the UI. Additional testing should include the UI, and should be through the UI.<p>The motivation behind MVVM appears to be to update the UI automatically when data changes. Modern frameworks are moving away from two-way data binding (React, Angular 2.0, Ember, etc.)<p>Also, data binding is best done in code (the jQuery way) as opposed to declaratively (the WPF way).