1. Пожалуйста, не надо ЗАСТАВЛЯТЬ ребёнка программировать. Он должен сам этого хотеть, равно как и заниматься боксом или игрой на скрипке.
2. "спортивное программирование" и олимпиады ничего не дадут ему в плане опыта реального программирования. Ему будет крайне сложно работать в комманде над реальными программами, потому что олимпиадники думают не тем местом и не о том, о чём нужно и их код могут понять только такие же олимпиадники, либо вообще никто не может ег понять...
Третье. Если ребёнок считает, что ему интересно программирование, есть игровые языки программирования. игровые в том смысле, что всё программирование происходитв виде игры. Модули накидываются мышкой, как паззл и кое-что кодируется на языке типа бейсика. И результат трудов будет виден буквально за часы, т.е. он быстро сможет заставить двигаться вадратик по экрану, а не будет пол года сидеть в слезах, пытаясь понять, почему его алгоритм бинарной сорировки в некоторы хслучаях сбоит, а в других работает правильно...
А уже потом он сам попросит вас оплатить курсы по настоящим языкам программирования. Или курсы по рисованию. Или ещё какие-т окурсы или кружки, которые ему будут интересны. Не лишайте ребёнка детства! Лучше сами снежинку нарисуйте в терминале :)