One of the hallmarks of MMOs is players having to invest time in character progression in particular character differentiators. This comes in a lot of forms and is implemented in different ways in different games, but some key results remain the same.
Moreover, forming effective groups with other people means using the information about their differentiating choice somehow. In World of Warcraft, you probably want to have a tank, a healer, and 3 dps for a 5-man dungeon. In FFXIV, you want a tank, a healer, and 2 dps for a 4-man dungeon.
Some MMOs try to design their game such that you can bring the player, not the class. The extreme form of this is that a group of any 5 classes is equally effective as any other group of 5 classes. Less extreme forms of this are what modern WoW designs for where the classes are sorted into "roles" (like tank, healer, dps), and then any class in those roles are exchangable.
The opposite end of this are in-game challenges that require specific groups. Say, for example, that you had a dungeon that was only beatable if you had a rogue to pick an interior lock, a hunter to soothe a deadly beast, etc. Or, say that each class has an extremely strong non-stacking buff such that it's never worth bringing two rogues to the same 5-man party because that would mean your 5-man group has at most 4 buffs instead of 5.
What ends up happening is that now friend-groups are forced to diversify. Some players are effectively unable to play with others. You might never want to bring two rogues to the same 5-man group, and so those rogues are unable to play together. This creates player-supply/demand pressure and forces players to decide between being desirable (the class with the best demand:supply ratio) and being what they want to play. This adds onboarding complexity and decision analysis paralysis to picking a class in the first place.
The downside to the bring-the-player philosophy is that now inter-class balance is a huge concern. Now that we don't have to diversify our groups, why would we bring anything but the best performing class? You end up with hard META requirements and players bringing 20 warriors to a 40 man raid.
Now to have a healthy game, you must try to balance as well as possible. Players need to be assured that their class will be viable as much as possible, since they've often invested thousands of hours into it. Collect internal metrics about which classes and builds are performing the best and worst in actual play. Automatically (as in with automation) propose changes to those classes/builds as soon as they exceed tolerance levels. Be transparent about your methodologies. Repeat until your game is stable.