I am talking about the groups in aggregate, not every single case. In technical terms, my experience suggests that, for example, AVG(c.technicalSkill) > AVG(j.technicalSkill) and AVG(c.usableInterfaceSkill) < AVG(j.usableInterfaceSkill), where c = all C (or lower-level) programmers and j = all Javascript (or higher-level) programmers. That's grossly oversimplifying, and I don't believe all the differences can be stated that simply, but anecdotally there are substantial differences. If you've ever used software developed by electrical engineers, you'll immediately understand the kind of difference in skills that I'm talking about... I certainly wouldn't trust your average Javascript developer to write a decent OS kernel, any more than I would trust your average C developer to write a decent webmail application. That's not to say that one can't learn how to do the job of the other well, but it takes much more than just knowing how to do a thing in theory before you can do that thing well.