- Excellent OOP and software design knowledge – you should know how to create software that’s extensible, reusable and meets desired architectural objectives- Knowledge of concurrent and parallel execution patterns in Python