Actually, that XKCD comic is dangerous advice for Joe Average. It is true only IF those words are chosen completely at random.
But that is not how Joe Average would go about choosing he words. He would go something like "Horse...uhm...Cart...uuhhhm...Galloping...Away!"
Or he would click on "random article" on Wikipedia 4 times.
Random words just makes it more possible to forget the password. For me it just makes a difference for what I use the password. What are the costs when an account is hacked? How high the costs to remember and type on the password? How easy is it to run a brute force attack?(it is more difficulty if you only have a few attempts)
Take an facebook account:
What are the costs when an account is hacked?-> It would be stupid but I don't lose money.
How high the costs to remember and type on the password?-> I use it often, so a long password is inconvenient.
How easy is it to run a brute force attack?(it is more difficulty if you only have a few attempts)I guess Facebook has some build in mechanism to prevent thousand of attempts
What can the hacker get?Not really much.
-> So my password is short and convenient. I have 8 letters. (but maybe I should make 12 or so)
I use a brain wallet for my cold storage.
What are the costs when an account is hacked?-> I lose money. Depending on the amount of money.
How high the costs to remember and type on the password?-> I just need it to remember and
don't use it a lot use it only one time. I have a paper as backup, too.
How easy is it to run a brute force attack?(it is more difficulty if you only have a few attempts)No limits for hackers.
What can the hacker get?$$$$
So what password do I use?
I have 4 words separated by different symbols. I have 40 characters and I am pretty sure 3 of those 4 words are not in any of those large dictionaries (not that 7500 word list, I mean a list with 2mio. words).
What words do I use? I do not really want to say, but I take names. A city or village (small), a street name, a mountain, the bakery you use, your favorite football player and so on. It depends how popular that name is. A name like "coca cola" is not strong, so like a city called "berlin". But things chance if you take a city called "Dietmannsried" or "Bad Tölz", the city where your mother grew up.
Because this is important. An address is not linked to an person. So the attacker doesn't know about your mom.
-> just be creative!