Научиться кодить достаточно просто. Совсем другое дело - научиться разрабатывать. Если тебя впирает сам процесс кодинга, то подойдут любые книжки или курсы любого кружка/политеха по изучению языка программирования. Программирование само по себе за время существования эволюционировало не сильно, это по-прежнему применение операторов условия, циклов, присваивания и потоков ( со временем появляются лишь надстройки над кодом ассемблера, так называемые "новые уровни абстракции", что делает работу с ним проще), поэтому узнав синтаксис одного языка, без труда сможешь разобраться с синтаксисом другого, а значит сумеешь перевести с русского языка (заказчика) на язык машинный, на этом работа кодера заканчивается. К примеру, моим первым языком программирования стал Python, изучал я его на курсах программирования в школе и читал официальную документацию на python.org. Этот язык по праву считается "Паскалем 21-го века" и идеально подходит для решения школьных олимпиадных задачек, обладает множеством встроенных функций для работы с приметивными типами данных и одним из самых низких порогов вхождения. Далее я изучал c++ по одной из книжек O'Reilly, чтобы понять, как работает объектно-ориентированное программирование, и затем MySQL, чтобы понять, как работают базы данных. Все это учил под управлением OC Ubuntu (в итоге самый полезный опыт).
Что касается умения разрабатывать, то это подразумевает очень творческий и индивидуальный процесс. Сразу скажу, что не стоит переживать, если твоя область знаний и траектория обучения не такие же как у твоего товарища/знакомого разработчика. Например, у меня есть знакомые, которые были отличниками в школе и учились на красный диплом в ВУЗе и те, кто с горем пополам оканчивали школу и даже не шли в университеты - все они профессионалы своего дела, с каждым из которых я работал с огромным удовольствием и сделал бы это снова. Чтобы быть разработчиком не нужно уметь читать двоичный код или перемножать шестизначные числа в уме. Достаточно просто быть умным терпеливым парнем или девушкой с большим желанием обучаться новому и работать над ошибками.
Как обучаться разработке? Кинуться сразу в командный проект, не имея достаточных знаний, как многие советуют - это неплохой и достаточно эффективный способ обучения, но это точно не панацея и не волшебная палочка, которая сделает из вас программиста. Начало работы в команде профессионалов можно сравнить с покупкой картриджа для игровой приставки, на котором уже есть сохранение от продавцов или разработчиков где-то посередине игры. Вы можете не доходя до этой точки самостоятельно, начать играть с сохранения и у вас будет получаться, ведь принципы игры те же, будет даже местами интереснее, чем в начале. Но вы не будете знать, какими навыками следует обладать на этой стадии игры (хотя эмпирически это можно выяснить). Когда вы застряли на каком-то моменте при прохождении игры от середины до конца, то скорее всего игра с 1-го уровня поможет вам разобраться что делать в сложившейся ситуации. Есть и такие, кто может пройти игру, не возвращаясь к начальным уровням, понимая, что делать, на основе своего опыта или интуиции - значит им действительно не имеет смысла проходить игру от начала до середины - все люди разные :) Но в большинстве случаев (как и в моем), следует проходить игру параллельно, то есть чтобы научиться хорошо разрабатывать нужно и участвовать в реальном проекте с профессионалами (что можно написать в этой ситуации) и самому изучать основы программирования (как работает компилятор/интерпретатор, что для него лучше и почему).
Какой язык более универсальный?
Сколько зарабатываете в месяц/за час?
Очень круто и вдохновляюще