The common perception from people in the industry is that many of the best programmers are self taught. That doesn't preclude doing a degree of course, however even the really good programmers I've met that did degrees say that they really ramped up their learning efforts after leaving university (and that was my experience too).
Good to know they've unbent a little on that as well. Of course it then begs the question "how then do you hire good programmers?". Solving that problem would be really interesting (my pay might go up :D )
If you're smart and experienced, your degree doesn't matter much for engineering.
On your 2nd point, I totally agree with you that self-taught programmers should actually get a degree in CS or any related major. Although the programming classes might bore them out, there will be courses and professors who will take them to somewhere they would have never known before. This is just my generalization and, of course, will not apply to everyone ;)