Путь в программировании. Правилен ли мой план?
================================================

 Всем привет, мне 18 лет и учусь заочно на среднее профессиональное.  

В сети вычитал очень много статей по этому поводу и пришел к выводу, что для начала нужно получить фундаментальные знания в computer science, а потом уже переходить к какому-то конкретному направлению в программированию (frontend, backend, мобильные разработки и т.д.).  

По сути у меня впереди есть несколько лет для того, чтобы спокойно получать знания.  

Первый язык для изучения выбрал Python, лекции по алгоритмам и структурам данным cs50, мфти и так далее, благо в интернете информации полно.   

Такой план верен или проще забить на все, сразу начать JS и фреймворки, и пытаться сразу устроиться куда то работать? А брешь в обучении и фундаментальных знаниях закрывать уже после? 

 Если перевести "computer science" на русский язык, вся магия рассеивается. "Информатика" так красиво уже не звучит. Это расстраивает снобов, нагнетающих собственную важность, рассуждая про необходимость CS. А по факту бизнесу нужно быстро решать унылые задачи. Поэтому потратив время на получение "фундаментальных знаний" вы выйдете на рынок, где они нужны пяти компаниям в РФ и пятидесяти в мире (причём в куда более объёмном и качественном виде, чем вы могли получить самостоятельно), а вашими конкурентами будут люди, которые потратили своё время на умение программировать, востребованное вообще всеми. Ну, и наконец, дети сначала алфавит изучают, а уж сильно потом некоторые из них берутся за освоение принципов написания поэм высоким стилем. Надеюсь, понятна аналогия. 

 Для начала необходимо определиться, чем ты хочешь заниматься, в какой области работать или чем бы ты хотел заниматься. Это поможет не распыляться на все подряд. В любом случае , какой бы путь не был выбран, все равно нужно будет закладывать фундамент и знакомиться с основными понятиями любого языка: переменные, типы, массивы и т.п. и т.д.  

Чтобы научиться плавать, нужно плавать - (с). Если с областью определился, то пора изучать язык, принципы и начать писать простенькие вещи. Имхо, все эти книги по алгоритмам, структурам и т.д., это , конечно, здорово и будет плюсом. Спросить любого прогера с большим стажем и он насоветует еще 100500 сверху, какие ему пригодились по мере возникающих задач в его работе, один или два раза за всю жизнь. Но все это отнимает чудовищное количество времени, что можно вообще не добраться до кода, к тому же это нужно далеко не всем и не всегда. Достаточно знать, что они существуют и их можно посмотреть в случае нужды. Например, если бы людей перед обучением вождению автомобиля заставляли читать: историю автомобилестроения, полностью изучить устройство автомобиля, правила вождения в других странах и т.п., то у нас бы водили единицы.   

> По сути у меня впереди есть несколько лет для того, чтобы спокойно получать знания.

  

Поверь, я бы на это не рассчитывал, время просто летит и не ждет никого. А в жизни может произойти всякое, что потом у тебя не будет ни минуты свободной.   

Ну, и помни: специалист - это тот, кто знает что-то очень хорошо и глубоко, а не все, но понемногу. Теже: футболисты, хоть там и присутствует элемент "бега", не являются по нему чемпионами. Искусными мастерами своего дела становятся те, кто оттачивает свои умения до совершенства. 

 Первый два коммента читай, остальные в топку!  

Пойми, это мы, люди со стажем говорим тебе. Это основное запомни. Запомни.  

И теперь мои пять копеек:  

Спец, это спец. Если ты считаешь, что питон тебе принесёт радость и достаток в доме - вперёд. Но сейчас линия другая. Заметь, почти 90% на php. Ява вообще в неконкуренции.  

Объедини свои частные задачи, получишь фреймворк. (как пример JQuery).   

А ты думаешь программист писавший JQuery был выдающимся математиком или ещё кем? Нет. Это Интернет, свобода. Становись кем хочешь, расти, делай блага! Да, банально сказано.   

Ты ещё молод, знай только одно:  

Если ты умеешь (реально тебе понятно что да как) программировать хоть на одном языке, ты на другой сможешь переключится за короткий промежуток времени, и это не дни, прау месяцев минимум (отладка кода, убирание ошибок с точками, кавычками, ;, }, ] и тд и тп.)  

Вперёд! 

 Нормальный план, придерживайтесь его. Я лично уже успел пожалеть о том, что в свое время недостаточно времени уделял базовым вещам типа алгоритмов и структур данных.  

Фреймворки и языки приходят и уходят, а база остается.  

Конечно, если хотите быстрый старт, то можно избрать путь code monkey: изучить какой-нибудь модный язык и фреймворк и работать с ним. Но это бесперспективный путь. Отрасли нужны грамотные инженеры, а не макаки за клавиатурой. 

 Заметил по тостеру, что люди делятся, как минимум на два типа. Первый берут и что то делают, второй строят бесконечные планы изучения, личностного развития, режимы дня, графики оптимизации времени. Первые со временем начинают задавать все более сложные вопросы на тостере или даже начинают отвечать на вопросы сами, вторые из года в год задают вопросы что учить, как учить, а что будет если я стану фуллстак или сосредоточится лишь на фронте, учить ли джс или сразу реакт и тд и тд. 

 Для изучения фундаментальных знаний не нужны курсы, библиотеки, питоны и прочие языки.  

Пока не научитесь делать всё формулами - вообще не притрагивайтесь даже к написанию кода! (иначе - никогда не станете cs-специалистом)  
  

Когда будете понимать как самому строить нейронки и почему именно нужно делать так, а не иначе, начинайте учить Питон и тестировать свои формулы.  
  

Сделаете наоборот - пиши-пропало... 

 Если есть на что жить, то план сначала изучить "Computer Science" отличный