10000 hours in any language to become a good programmer... and additional 10000 hours to be able to produce something in C++

Though, if take a look to the C++ code of Doom 3, for example, it appears to be very nice (as some guy said, "
C with classes").
By the way, is there any code of old Clausewitz engine which can be looked at? I believe I saw somewhere something like news about it being open-source now (or probably it was about another company, bad memory).
PS: to someone who asked: I fully agreed with someone who answered somewhere above about an University. I often see that people on internet have thoughts like "I will study in University -> I will graduate and will find cool work". Such passive position is dangerously wrong - do not sit and wait when you will be thought something. Unless go into science, I would consider university courses as
supplementary. They will probably teach you nice things like math and complicated algorithms and what-so-ever, but they
will not teach you
programming. And it can be proven by seeing any curriculum of any university. And by job listings also - even for Junior positions employers usually want to see people with at least
some experience, and not just BSc/BEng education level. "Java course C100500" is not really what you want, it is a thrash. All what you need from Java you can go and get it on your own, without lecturing man (ask him by the way, how much real software he developed?) Of course, there is various situations in various countries and universities, but they mostly similar in one (unless it is an University of Applied Sciences like Ammattikorkeakoulu in Finland) - they teach
fundamental theory. It is very cool, interesting and sometimes required, but it is still
theory. You can not read and solve all the Donald Knuth's books and then go directly for a programmer's position, it is just not enough. IMHO.
PPS: here is job posting for some company, not game-development, C++ Junior. I think it is pretty typical:
1-2 years of C++ development experience
.NET experience is an advantage
Experience in working with DevExpress WinForms components is an advantage
Knowledge of UML is an advantage
Knowledge and experience in object oriented design principles is an advantage
Experience working as a member of a larger development team is an advantage
Good English communication skills
Fast learner
Motivated
There is a good quote about learning:
Not learning new skills
The computer industry is characterized by change. I know vast amounts about DOS, DBase III+, Real Mode, EMS, XMS, 68000/65816/8086/80386 assembly, FORTRAN, and all sorts of other useless cruft that I’ll probably never use again.
For over 10 years I’ve been primarily a Windows developer, but in the last few years I’ve learned something about Erlang, Ruby metaprogramming, Rails, Linux, vi, Racket, D and OCaml, and just recently completed my first C# project: IPC using named pipes. This is what keeps me relevant as a programmer, even though programming is only a part of what I do professionally.
When I talk to many programming candidates, it’s pretty clear they got off the learning train and became comfortable with the skills they had already acquired.
When you stop learning, you immediately become less employable. Keep learning.
I would add that this doesn’t mean you have to learn something awful. Spend some time looking at lots of technologies, then go deep on something you enjoy that you can use professionally.
Some areas that I think will continue to be in growth mode for the foreseeable future are network/server programming, web UI programming, mobile programming, operations automation (dev-ops), business intelligence, and security.
http://www.codeofhonor.com/blog/marketing-yourself-as-a-programmer
PPPS: and do not forget this historical comics