I don't want to rub it in, but I have recently created a join of about 20 tables and aliases (some tables appearing multiple times), combining shopping cart and purchase order information in SRM for a simple ALV overview. Not all at once, it was rather growing and growing...
You need to understand the links between the involved tables (database model), and make sure that all ON- and WHERE-conditions can work with available indexes and that the ON-conditions are complete in a sense that the result set does not "explode". For example, when omitting the SPRAS field when joining text tables, you end up with one line per maintained language, whereas you usually only want to see the logon language.
For me the biggest advantage of joins are the flexibility of applying selection criteria at runtime (based on user input) and that the result is in one internal table straight away.
Thomas