BEM is a highly useful, powerful, and simple naming convention that makes 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.
The BEM approach ensures that everyone who participates in the development of a website works with a single codebase and speaks the same language. Using BEM’s proper naming convention will better prepare you for design changes made to your website.
— Why do I need CSS classes for block instead of using semantic custom tags?
— May I combine a tag and a class in a selector, such as button.button?
Look for answers in the awesome FAQ list!