Мне это очень интересно.
С точки зрения программирования.
В деревья поиска умеете, например? В моих консерваториях при обучении задавали построение стандартных коллекций с нуля, своими силами. Деревья, мапы всякие, хеши, что касается структур данных, и парочка сортировок, что касается алгоритмов. Это немного с содержательной точки зрения, но выполнение этих заданий иногда помогает понять, как перемещаются данные, и, самое главное, зачем (я учился не на прогера, если что, это общим курсом было). Эдакое переизобретение велосипеда.
чтобы хорошо работать с алгоритмами и структурами данных
, как ни странно, нужно с ними работать. То, что я написал выше, это первый шаг. Дальше вы можете, например, решать задачки олимпиадного программирования. Приоритет, думаю я, нужно здесь поставить не на "решить на 100 очков за 3 минуты", а как раз на подбор структур данных и алгоритмов, как можно более естественным образом решающих задачу. Здесь вам может понадобиться помощь опытных товарищей на тему "как сделать правильно", чтобы усвоить основные вехи.
Другой вариант -- свой pet project, как говорят. Можно начать с его небольшой самостоятельной части. Написать прототип, наметить входные/выходные параметры, как с этим фрагментом будет взаимодействовать остальная программа. Это на самом деле (что называется, если я не ошибаюсь, как раз словом архитектура) оказывает значительное влияние на модель данных.
То, что я написал сверху, может выглядеть как комок сознания. Может быть так и есть, но я думаю, что когда вы сами начнёте, то этот комок станет сам распутываться.
Достоинство этой дорожки -- вы можете по ней идти, параллельно изучая всякие абстрактные математики.
Вы можете начать прямо сейчас, короче. Не откладывайте, если реально хотите. Просто начните работать с этими вещами, пробовать их на зуб.
P.S.
занимаюсь программированием... JavaScript-ом
Рекомендуется выбрать вместо него какой-нибудь низкоуровневый язык, чтобы, например, побиться лбом об стену прямого управления памятью несколько месяцев, чтобы понять, как реально используются структуры данных, как они хранятся, как передаются. Я со своей колокольни посоветовал бы C, чтобы узнать, как оно там, под слоем высокоуровневых абстракций, но не настаиваю.