Я, к примеру, учился самостоятельно (+ помощь уже пару лет практикующего программиста, который тоже самоучка), мат. базы вообще не имею, последний раз математику учил в классе 6, в работе еще ни разу не пригодилась. Хотя в целом иногда желаю, что забил на неё (жаль, что никто не научил малолетнего дармоеда, что она мозг хорошо развивает).
На курсере есть отличные курсы по комбинаторике и графам (на русском), их вполне хватает для понимания и дальнейшего изучения темы.
На той же курсере есть отличный курс по алгоритмам от Седжвика (на англ), что тоже очень полезно.
Если есть мотивация и время, то можно выучить все что угодно.
Для начала выбери направление (я выбрал веб) и ознакомься с языками которые там используются, сравни их для себя и выбери тот, который больше понравится, а потом начинай штудировать офф. документацию и книги.
Очень хорошо, если можешь норм читать на англ. так как русскоязычной литературы, честно говоря, почти нет, ну или она весьма устаревшая.
После того как хорошо освоишься с самим языком, то уже можно и к фреймворкам переходить, опять таки, как правило офф. дока по ним очень хорошая, но можно и литературу искать подходящую.
Плюс еще алгоритмы стоит изучить, очень помогут в решении будущих задач.
После того как получишь практику и реализуешь пару учебных проектов до конца, то можно ознакомиться с паттернами проектирования для более грамотного проектирования своих приложений. Но сильно на них зацикливаться в начале не стоит, просто нужно знать что они есть и "видеть" их в крутых решениях с которыми ты будешь работать.
А дальше уже отталкивайся от требований в вакансиях на разнообразных сайтах.
Точно рецепта тебе никто не даст, но для начала должно хватить.
Ну и приготовься к тому, что ты должен постоянно учится, всю жизнь! Как только перестанешь - за пару лет окажешься за бортом, если это не для тебя то лучше сразу откажись от этой затеи.
Цю повідомину відредагував Casper: 14.2.2016, 9:24