Understanding of data structures, data modeling and software architecture Deep knowledge of math, probability, statistics and algorithms Ability to write robust code in Python, Java and R Familiarity with machine learning frameworks related to NLP