I think your point about studying algorithms and data structures is key. Top programmers know lots of languages and think nothing of picking up a new one, but the value of a programmer isn't in the language details. It's knowledge of the underlying principles that separates real programmers from people who simply code. It doesn't matter how neatly you code in language X if your program is inherently unable to scale because of the data structures and algorithms. The lack of understanding this is one of the most expensive failures in the software world because managers also often don't get this. In many organizations, people show a demo that behaves brilliantly and objections that it can function only at demos scale are lost on those who make the decisions. I've watched more than one project collapse because the demo, which any monkey could have coded, looks great, but cries that it can't work in the large are ignored.