I have to admit: when I first heard about BEM, I thought it was a bad idea. Why make your CSS naming so complicated? After learning more about BEM I am convinced: the method really has its merits. It is mostly useful in the context of a large scale web application with a lot of components.
Engineer at Google on the developer relations team
There are two types of problems in CSS: cosmetic problems and architectural problems. Cosmetic problems annoying, sure, but they don’t break the build. Architectural problems, on the other hand, can cripple development. I can remember distinct cases where we postponed developing a new feature because we were too afraid to make any changes to the CSS.
So that’s BEM (or a slight variation thereof); a highly useful, powerful and simple naming convention to make your front-end code easier to read and understand, easier to work with, easier to scale, more robust and explicit and a lot more strict.