When evaluating your coworker's abilities, do you judge their ability to perform CRUD and tedious bug fixes or their knowledge of abstract concepts, hard computer science, and cutting-edge math?
What makes you think they are necessarily so different? I'm not a programmer, but in architectural and landscape design and installation there are lots of broad, sweeping design principles and lots of tedious little detail work, and I have observed that the same people tend to do well at both. The important factors are self-discipline and enthusiasm. The enthusiasm to get you started and the self-discipline to help keep you going between bouts of enthusiasm - both to study the general principles (harder in design than in computers from what I have seen - they are not as well codified as algorithms and data structures are) and to keep working away at the tedious little (but so necessary) details.