The various articles I linked to provide loads of details about the benefits of BEM, things like:
- Easier to scale
- Increased clarity about the relationship between a piece of HTML and CSS making it easier to reason about what a specific component does
- I feel it makes my code easier to work with
- Allows us to as a team to be more strict with our coding standards and approaches. BEM in a way for us helps to enforce our ways of working
- Components are more explicit about what they’re doing which also makes them more robust
- Helps to keep specificity low
- I find it makes our code easy to maintain
The use of BEM was already in place before I joined, so it had already been adopted by the team. Early on I heard the standard BEM comments like the class names are too big, or its ugly but I find these kinds of comments totally subjective and they don’t really effect the benefits the methodology gives us.
In terms of what non-technical problem its solved thats a really interesting question. I wouldn’t have said we’d adopted BEM with solving non-technical problems in mind. However, now I am thinking about it I guess BEM has certainly helped when it comes to improving our relationship with our designers and bring them closer to the code.
As I mentioned above BEM makes it easier to reason about a component and I certainly think this has helped communication with designers.