MVVM's Place in Your App

Picking up on my post “MVVM Is Quite Okay at What It Is Supposed to Do”, here’s a few images which illustrate the problem of mistaking MVVM for a solution to a structural problem. It’s the whole post in 2 images.

Model–View–View-Model helps with the view layer. It can be a tool to break up a view controller into smaller things. But it’s still only a refactoring of view components into more objects.

diagram of MVVM in the view layer
MVVM in the view layer

That’s useful and not a problem itself. But it doesn’t help if your overall app is a mess.

The technical term for “mess” on the level of software architecture is “Big Ball of Mud”; combine MVVM and BBoM and you have … MVVM in a BBoM.

diagram of MVVM components in a chaos
MVVM in a BBoM. Kind of rhymes, doesn't it?

There you see that MVVM can affect the picture of your architecture – but not by much. It’s a design pattern you can use to solve a particular coding problem, but it can’t bring order (or structure) to the chaos.