I wasn't trying to say that somebody has to go through a university programme.
However, more "academic" CS knowledge is useful and can make you a better developer. A degree is a good a way of acquiring it. You can also go read the communications of the ACM and read a lot of Knuth.
My (minor) point of contention is that I don't see a CS degree as a negative. Yes there are poor developers with CS degrees - but there are also poor developers without CS degrees. A good coder will get a hell of a lot out of a good degree programme.
...A good coder will get a hell of a lot out of a good degree programme...
Oh yes, indeed! All of what you can learn in a CS study, being a more or less experienced programmer, will fall on "fertile" ground and thus flourish (pardon the analogy, maybe there's a bit too much of Chauncey Gardner in there ;-) I even would make at least 1 year of programming a prerequisite for being allowed to do a CS study.
But that's just the problem. Many CS students don't have any programming experience. They're not able to make a connection between their new knowledge and the real world (yet). And by the time they're in a position to apply, they will have forgotten about most of what they're learned.
I once gave a 3 week course in programming (TenCORE LAS if you must know) to a group of 15 ex-teachers who had never done any programming before. Unfortunately, the forces in charge decided that it would be at least 4 months before any of them would be able to use it in the real world. Needless to say, after 4 months I could basically start teaching all over again. Very frustrating. Glad I'm not in the (classroom) teaching business anymore.
I agree completely that a degree will benefit somebody with real world experience more than a complete newbie - but that applies to any subject.
(My partner is convinced that nobody should be allowed to do a degree until they're at least twenty five - until then they won't be able to appreciate it!)
The problem I get with new CS graduates without real-world experience isn't that they've forgotten stuff - it's that they don't realise that there is a lot more left to learn: working in teams, maintaining somebody else's code, having to talk to clients without sounding like a patronising know-it-all SOB, the ability to talk to people without degrees who just happen to know a lot more than they do, etc.