Как правильно распределить время?
Обучение - это развитие мозга. Мозг развивается, если его регулярно напрягать. Как и мышцы. Когда только начинаешь заниматься спортом, сначала ничего не получается, всё болит и очень хочется им не заниматься. Приходится себя заставлять. Если воли оказывается достаточно, то однажды просто привыкаешь как минимум. Как максимум втягиваешься, и процесс начинает доставлять удовольствие. Особенно когда начинаешь видеть вдохновляющий результат.

Я тоже начал в 16. До этого я был весьма средним пользователем ПК и использовал его в основном для игр. С математикой у меня вообще всё плохо было. Все окружающие считали меня неисправимым гуманитарием. Но я поставил себе цель и начал ежедневно работать над её достижением. Было тяжело, очень хотелось забить, особенно после неудач. Первые полгода вообще всё свободное время отдавалось обучению. Где-то на 8-9 месяц наступил перелом, мозг адаптировался, я втянулся и процесс начал приносить удовольствие. С этого момента заставлять себя приходилось уже заниматься чем-то другим, кроме программирования.
Либо физика, либо программирование.
1) Для физики математика очень нужна. Можно читать (раньше был такой) журнал "Квант". Из программирования знаю MatLab. Ещё мне нравится функциональный подход (Haskell).
2) Если программирование (в том числе спортивное), то мне понравились лекции Андрея Станкевича.