However, most of the people I know have forgotten just about everything but the very basics from their algorithms class within a few years.
When I was teaching myself to program, I knew 3 guys who were seniors in CS at Georgia Tech. With only about 3 years experience myself, I could code circles around all of them.
At the time they may have had more theoretical knowledge than I did (definitely not true now though since I've caught up on the theoretical side), but I would have been a much better hire for 95% of programming jobs.
Not because I was some kind of rockstar, but because I'd had more practical experience actually writing real programs. Sure if I was working at Facebook, or trying to scale something truly massive (or working with resource limited embedded systems), they would have had an edge on me, but the vast majority of programming that happens each day doesn't require that level of computer science chops.
There are definitely jobs that require a "Computer Scientist", and if you want to work on interesting problems a CS degree is extremely beneficial. However, a CS degree is neither necessary nor sufficient for most programming jobs.
(That being said, I'm currently in the process of finishing a math degree.)
Github and a degree show different things.
Github shows that the person can write code. It doesn't show that he knows how to decide what code to write. Did he consider alternative algorithms? Did he chose based on understanding the strengths and weaknesses of the algorithms? If you see an O(N^2) algorithm used somewhere instead of an O(N log N) algorithm, is it because he didn't know better, or is it because he determined that for the inputs in this particular project the O(N^2) is actually faster?
A degree in the appropriate field from a good school goes a long way toward showing that the person can do that kind of analysis.