Disclaimer
Опять же, не факт, что если все делать как я, то все получится точно так же. Так что, это не руководство к действию, а просто чужой опыт, который, вероятно, вдохновит кого-то на что-нибудь подобное, и не факт что связанное с программированием ))
Эпиграф
Вступление
В один прекрасный момент я понял, что программирование даже лучше, чем железяки, потому что в этом есть элементы творчества — ты решаешь задачу, но при этом как будто пишешь стихи. И приятно видеть, как все твои закорючки прямо на глазах превращаются в страницы сайтов, и потом куча людей этим всем пользуется.
Я начал с того, что случайно наткнулся на книгу Agile Web Development with Rails 4 (здесь и далее я буду давать ссылки на ресурсы на английском языке, потому что самая свежая инфа именно там, но ты всегда можешь погуглить переводы этих книг на русском).
Я прошел все уроки с этой книжкой и понял — я уже что-то могу! При этом я не изучал отдельно верстку, css, базы данных и прочее. Во все вникал по ходу дела.
Затем были книжки по языку Ruby, туториалы всякие, например — RUBY ON RAILS TUTORIAL. Был и вот такой клевый сайт, кстати, с него даже рекомендую начать. А то книги читать скучно, особенно первое время, пока ты не понимаешь как оно работает.
Этим всем я занимался где-то полгода, по вечерам и в прочее свободное время. Затем я наткнулся на прикольные скринкасты от Ryan Bates. Их я посмотрел и попробовал все.
Потом я учился путем создания законченных приложений по видео урокам. Уже точно не помню каких, но что-то в этом роде:
Get Started With Ruby on Rails
Catch Up with Ruby on Rails 4
Riding Ruby on Rails
Build a CMS With Rails
и т.д.
На каждый уходило не больше недели, так что еще через полгода я уже был продвинутый.
Встал другой вопрос — а как работать в команде? Какой рабочий процесс происходит в студии? Что такое git, что такое трекеры, какие есть методологии разработок? Эти и другие вопросы тоже надо изучать, если хочешь работать в компании:
GIT
AGILE/SCRUM
PivotalTracker
После этого я закончил еще один онлайн курс, который длился два месяца (три занятия в неделю), и включал в себя занятие с ментором. Могу порекомендовать — http://www.thinknetica.com
Кстати, там ниже в отзывах есть и мой )
На курсе я оказался одним из лучших "студентов", и мне дали хорошую характеристику для поиска работы. А учитывая, что IT тусовка весьма плотная, и хорошие рекомендации быстро доходят до "кого надо", то работу я нашел сразу. Причем удаленную же.
Если ты пройдешь все тоже самое, то ты не будешь "без опыта, которого никто не берет". Нифига подобного. Этот год, что описано выше, дал много опыта. И студии это прекрасно понимают, достаточно пройти собеседование (в айти тусовке это называется интервью).
Что еще можно сделать, чтобы устроиться побыстрее и получше? Сделать приложение для себя, в демонстрационных целях. Мое было вот таким — http://stack-overflow.herokuapp.com
Я не получил за него ни копейки, но тыкал им работодателей в нос, показывая, что я не совсем с нуля, а уже могу играючи делать такого уровня сайты.
Студиям постоянно нужны разработчики. Это ценный материал, за ними охотятся. Если ты джуниор (это первая стадия программиста), то есть куча мест, куда тебя заберут с ногами и руками. И уже там ты через год сможешь дорасти до миддла (средний уровень), а еще через несколько лет и до синьора!
Короче, через год я уже нашел свою первую работу разработчиком. Еще через год я уже работал синьором. Сейчас, спустя два с половиной года, я работаю тимлидом (это такой командир целого отряда разработчиков).
Теперь подробнее насчет учебы.
Приготовься, что учиться надо много. И тратить на это все свое время. Никаких друзей, пьянок, посиделок в гараже. Жена и дети тоже будут видеть только твою спину, потому что круглые сутки ты будешь сидеть возле компьютера. Если не работать, то учиться. Если не учиться, то работать. Иначе нельзя. Вот почему это не всем подходит, только упоротые, кто фанат этого дела, могут выдержать такой темп.
Материалов для изучения валом. Можно начать с того, что я выше накидал. Но естественно, что это не жесткий сценарий. После первого погружения в тему ты уже сам сможешь искать то, что нужно именно тебе. Не понравился язык Ruby? Тогда ищи материалы по языку Pyton. Есть еще пара десятков языков ))
Учи письменный английский (чтение и письмо). Без него невозможно быть классным разработчиком, потому что все в мире самое крутое издается на английском. На русском обычно выходят только переводы некоторых книг, и то, с опозданием.
Хотя, я вот специально не учил, он сам быстро учиться, если постоянно изучать материалы на английском. Просто если сначала непонятно нихрена, то лезешь в словарик. Потом легче.
В сети реально дохрена материалов. Есть куча платных и не очень интерактивных курсов, которых не было еще пару лет назад (поэтому я по ним не учился). Так что тебе повезло, сейчас они есть. Например:
https://www.codeschool.com/
https://teamtreehouse.com/
https://www.codecademy.com/
Даже на русском языке есть (но качество похуже, конечно):
https://ru.hexlet.io/
Учись искать инфу в интернете.
Программист это не тот, кто все знает и умеет, а тот, кто если не знает и не умеет, то способен найти ответ в интернете. Помимо гугла нужно в закладках иметь как минимум сайт http://stackoverflow.com/
С вероятностью 99,9% ты будешь решать задачи, которые там уже давно обсудили и нашли решение.
Огромное количество инфы есть в ютубе, кстати. Например: https://www.youtube.com/user/DevTipsForDesigners
Повторю, наверно все это можно найти и на русском языке, гугли.
Но лучше учить английский, да еще и на курсу разговорного походить. Потому что в итоге это даст возможность работать по всему миру, хоть в США, а там ЗП только начинаются от 2,000, а в среднем 4-7.
Так же твоим хобби должно стать все, что дает тебе больше знаний по теме. Сайты будут уже не вконтактики всякие, и не фишки, а такие как habrahabr.ru, например.
Есть свободное время от работы? Залез на хабр, почитал новости отрасли, что где появилось, какие мероприятия скоро будут. Или на ютуб залез и посмотрел урок очередной. Или книжку взял с собой по паттернам проектирования, чтобы просто так в пробке не тупить )
Теперь подробнее, как искать работу.
Как я уже говорил, работы валом (и я не про шараги). Ее настолько валом, что я, будучи джуниором, ковырялся в предложениях. Я отказывал направо и налево, подыскивая себе вариант, который бы МЕНЯ устроил.
Где искать работу в России? Например тут:
http://rubyjobs.ru/ — там часто проскакивают вакансии для джунов.
https://moikrug.ru/ — всего навалом
Ну и гугл, конечно.
Как я уже сказал, хорошо иметь помимо резюме (где честно написать, что нет опыта коммерческой разработки, а есть только курсы, самообучение и прочее) сделанное приложение, которое не стыдно показать. Все когда-то начинали с джунов, и студии понимают что это такое, никто от них нос не воротит. Наоборот, даже иногда бывает драка за классных новичков — есть шанс урвать дешевого (относительно синьора и миддла) джуна и завалить его работой, чтобы разгрузить дорогих миддлов. А хороший джун это жадный до работы и до новых знаний джун, который способен быстро учиться глядя на старших товарищей.
В идеале, конечно, лучше устроиться в офис. Для этого можно и в Москву переехать, или там, в Новосибирск какой. Но я и без офиса, на удаленке прокачивался. Просто в офисе это будет намного быстрее — хорошо, когда рядом есть коллеги, у которых можно спросить.
В общем то все, Америки я, наверное, не открыл. Упорный труд, терпение, где-то даже фанатизм и можно стать разработчиком. Если, правда, идти туда только за деньгами, то идея плохая — реально нужно любить все это дело, чтобы иметь желание интересоваться в жизни только разработкой )
Если есть какие-то еще вопросы — отвечу в топике.
P.S.
Есть куча знакомых у меня, которые пытались. Спрашивали у меня что и как делать, что учить. Но слетали с дистанции, потому что это просто не их. Хватало на пару книг или уроков, а потом им становилось скучно, или находились "причины", почему вот именно сейчас они не могут продолжать самообучение. И это нормально — не всем интересно писать код ))