Решение олимпиадных задач это вполне себе навык практического программирования. Практическое программирование отличается разве что тем что нужно использовать и редактировать готовый чужой код и библиотеки.
Задачи, которые вы будете решать на работе, будут почти всегда проще чем олимпиадные. В machine learning конечно задачи будут похожие по сложности.
Поскольку у вас хорошо с математикой и алгоритмами я бы советовал изучить машинное обучение прежде чем искать работу. Поскольку это может сильно повысить ваш уровень как программиста и после окончания курса( о котором ниже) можно пробовать искать работу в конкретной сфере т.е. в машинном обучении.
5 февраля стартует бесплатный курс по машинному обучению на русском языке от open data science и mail.ru
https://habrahabr.ru/company/ods/blog/344044/