Short aliases - I tend to use the first letter of each word in the table name - work best, IMO.
In code, I like the length of the variable name to be proportional to the size of the scope. Small scope -- short variable names.
That’s not an argument against table aliases, its an argument against unclear table aliases.
Single letter table aliases are better than just using unqualified column names, both of which are worse than table aliases guided by the same naming rules you’d use for semantically-meaningful identifiers in regular program code.
I feel it would be rather noisy to have to specify such table names in front of the 15+ column references in a query, compared to using aliases.
Then again I've never had to diff the result sets, so I guess our usage is quite different.
This is especially a problem in huge queries.
I despise table aliases and usually remove them from queries. To me, they add a level of abstraction that obscures the purpose of the query. They're usually meaningless strings generated automatically by the tools used by data analysts who rarely inspect the underlying SQL for readability. I fully agree that you should reference columns explicitly with the table name, which I think is the real point they're trying to make in the article.
While it's true that sorting is expensive, the downstream benefits can be huge. The ability to easily diff sorted result sets helps with troubleshooting and can also save significant storage space whenever the results are archived.