I just wanted to add that the undecidability of the Halting Problem can be thought of as an instance of the Barber Paradox. As the other answers have said, the "Barber Paradox" is really the observation that the statement
"(there exists a barber $B$ s.t.) $B$ shaves all and only the people who do not shave themselves"
leads to a contradiction (by asking the question: does the barber $B$ shave himself?), and hence the logical takeway is that such a barber $B$ can not exist.
Now, I will define a program (Turing machine, C/Python/whatever program, algorithm, whatever you want to call it) $Contrarian$ that takes in a string $s$, tries to interpret $s$ as a valid one-input program $P_s$ (returns "Abort" if it can't), determines if $P_s$ halts or runs-forever on $s$, and do precisely the opposite (i.e. if it determines $P_s$ halts on input $s$, then $Contrarian(s)$ will run forever).
In other words, this $Contrarian$ program satisfies:
"$Contrarian$ halts (on) all and only the (source codes of the) programs who do not halt on their own source code"
And just as in the Barber Paradox, a contradiction arises if we ask: does $Contrarian$ halt on its own source code $c$? (i.e. $h$ is a string, and in the previous notation, $Contrarian = P_c$), and hence the logical takeaway is that such a barber program $Contrarian$ can not exist.
The final observation is that the only step in the description of $Contrarian$ above that could possibly cause issues, is the line "determine if $P_s$ halts or runs-forever on $s$"; in other words, IF doing that was possible, THEN $Contrarian$ would be computable ("a valid program"), which we have just shown is impossible; and therefore it must be that determining whether or not $P_s$ halts on $s$ is NOT computable (i.e. there is no program $Decider(s)$ that can decide whether or not $P_s$ halts on $s$, uniformly for every input string $s$)
SUMMARY/BIG(GER) PICTURE:
Besides Halting Problem discussed above, Russell's (set theoretic) paradox is also based off the Barber Paradox.
Gödel's first incompleteness theorem is based off the Liar Paradox.
Chaitin's incompleteness theorem (which proves both Gödel incompleteness 1 and 2) is based off the Berry Paradox.
Barber and Berry Paradoxes ultimately lead to contradictions when you look at the specific case of self reference; but there is no self reference out-right in the statement of the paradox. The Liar Paradox does have self reference out-right in the statement. There are other paradoxes, but I think the 3 above are the ones are the "most applicable" in math, at least as far as I know.
There's also Löb's theorem and Curry's paradox, but somehow I feel those are more esoteric (more "pure logic" flavor), and frankly much more difficult to interpret. (Yes, Löb's theorem is very close to Gödel 2, and also can be seen (hilariously!) from the Turing machine perspective, but still, Löb's theorem and Curry's paradox still feel weirder.)