Proficiency with programming languages
Learning concepts and applying them to other problems
Mathematical skills
Problem solving capability
Communication skills
Writing skills
Inquisitiveness