Implementation of alpha equivalence
The author is not misinformed, I'm afraid; it's part of the development process of any computer scientist to go through several phases:


Phase 1: $\alpha$-equivalence is easy! Why is everyone making a big deal about this?
Phase 2: $\alpha$-equivalence is impossible! Why should I do computer science if such a basic notion is so impossibly complex?
Phase 3: I've finally understood $\alpha$-conversion! I should write up a paper to explain it to the world!


I'm currently in phase 2. However I'll try to explain my limited understanding.


Your algorithm is flawed: it doesn't distinguish
$$ \lambda x.\lambda y. x\ y$$
and
$$\lambda x.\lambda y. y\ x$$
It's not completely trivial to fix: if you want to prove the equivalence of $\lambda x.\lambda y.x\ y$ and $\lambda y.\lambda x. y\ x$ (which does hold!), you have to find a new variable $z$, and replace $x$ by $z$ in the first term, and $y$ by $z$ in the second. If you simply replace $y$ by $x$ in the second term, you'll get $\lambda x.\lambda x.x\ x$ which is not what you want.
It seems you can "pre-process" your terms by requiring all bound variables to be distinct. This is called hygiene. Unfortunately hygienic terms like
$$ (\lambda x. x\ x)\ (\lambda y.y)$$
become unhygienic when applying $\beta$-reduction:
$$ (\lambda x. x\ x)\ (\lambda y.y)\rightarrow_\beta (\lambda y.y)\ (\lambda y.y)$$


There is a vast literature on how to do this properly. The main approach on how to handle $\alpha$-equivalence that I know of is Nominal Logic which instead of re-naming, advocates "swapping" which is better behaved. The other (non)-solution is to do away with variable names altogether and simply have pointers from variable positions to $\lambda$s, as seen in the variants of the de Bruijn index method.