Статьи

Как самостоятельно стать программистом: от нуля до мастера

Эта статья обязана своим появлением очередной встрече автора с давним знакомым, работающим программистом в солидной московской компании. Максиму немногим за 40 лет, у него любимая профессия, большой опыт работы по специальности в России и за рубежом. Не имея специального высшего образования, он изучил программирование самостоятельно и на курсах, прошел трудный путь от полного нуля до крутого профессионала.

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

По результатам нашей с Максимом беседы получилась статья, которая сможет помочь человеку, решившему стать программистом, но еще не знающему как это правильно сделать. Тем более, что в Интернете выложены сотни предложений различных курсов, обещающих за полгода и пачку денег превратить «чайника» в настоящего профи. Реклама заманчивая, но нужно разобраться, как обстоят дела в действительности. Для удобства восприятия статья построена в виде вопросов и ответов.

Влияет ли отсутствие профильного высшего образования при трудоустройстве?

Практически не влияет. Наличие диплома может помочь только при старте карьеры. Да и то большинству работодателей важнее твой реальный уровень знаний и умений, а не формальное образование. Поэтому, возможности трудоустройства и уровень заработной платы не ограничиваются отсутствием диплома. Это актуально как для России, так и для заграницы. Слишком велик спрос на хороших специалистов, чтобы обращать внимание на формальности.  
Диплом немного облегчает процесс получения заграничной визы и оформление проживания в зарубежной стране. Но адекватный работодатель обычно находит оптимальный способ решения подобных вопросов. Именно поэтому нужно ехать за рубеж целенаправленно, имея на руках приглашение от конкретной компании.

Насколько сложно начинать с нуля?

Если для себя решил, что хочешь стать классным программистом, то все сложности преодолеваются без особых проблем. Конечно, многое зависит от особенностей и способностей каждого человека. Насколько он вообще способен воспринимать новые знания и самостоятельно разбираться в сложных вопросах. Не помешают коммуникативные навыки, помогающие по максимуму «выжать» информацию из преподавателя на курсах.  
Сложно, когда уже чего-то добился по другой специальности, поднял свою самооценку. А тут приходится начинать с самого низа, с азов. И это иногда напрягает, заставляет сомневаться в правильности решения. Но такое состояние быстро проходит после первых успехов в освоении программирования, когда что-то получается и виден несомненный прорыв наверх.

Стоят ли потраченные усилия получаемого в итоге результата?

Успешный результат вполне достижим для большинства начинающих программистов. Нужно изначально понимать, что понадобится несколько лет, чтобы начать получать неплохие дивиденды. Например, сейчас отлично подготовленный специалист со стажем 10 - 15 лет может претендовать на следующие доходы:
  • Россия – «белая» зарплата порядка 180 000 - 240 000 рублей, семейный ДМС (на семью), дополнительные бонусы, например, на аренду квартиры;
  • Европа – зарплата 5 000 - 8 000 евро, бонусы, медицинская страховка, единоразовые выплаты, например, на переезд. Работодатель ежемесячно выплачивает деньги в местный пенсионный фонд, дополнительно к вашим отчислениям.
  • США – зарплата 10 000 - 15 000 долларов, бонусы, медицинская страховка, выплаты в пенсионный фонд.
Так что есть к чему стремиться.

Что такое «отлично подготовленный специалист»?

Существует международное условное деление специалистов на несколько уровней. Сформулирую иерархию общими словами, поскольку в разных странах несколько отличаются требования к каждому уровню:
  • Junior – программист начального уровня, справляющийся со стандартными задачами. Неординарные задачи способен решать только с помощью опытных коллег.
  • Middle – вполне самостоятельный специалист, оптимально решающий любую поставленную задачу на основе своих знаний и опыта.
  • Senior – фактически это эксперт, глубоко разбирающийся в своей области программирования и прекрасно понимающий особенности сферы бизнеса, в которой трудится. То есть человек может эффективно участвовать в бизнес-проектах, вносить новые идеи и реализовать их.

За какое время возможно с нуля достичь каждого уровня?

Конечно, все очень индивидуально. Чтобы выйти на уровень Junior понадобится примерно 1500 - 2000 часов затраченного времени. На какой период растянется подготовка, целиком зависит от ежедневных трудозатрат. Идеально уделять учебе не менее восьми часов ежедневно.
На позиции Джуниор необходимо проработать порядка полутора-двух лет, чтобы претендовать на вакансию уровня Middle. Затем еще два-три года работы для получения опыта, требуемого на позицию Сеньор. Кто-то пройдет эту дорогу быстрее, кто-то медленнее. Но все достижимо, главное – упорство и труд.

Что скажешь о курсах, обещающих результат за несколько месяцев и трудоустройство с зарплатой 100 тыс. рублей?

Если человек начинает с нуля, то курсы нужны обязательно, лучше очные – в режиме офлайн. Необходимо осторожно подходить к выбору, смотреть отзывы, сравнивать условия. Идеально пообщаться с людьми, окончившими курсы. Оптимальный вариант – полугодовые курсы с частотой занятий не менее 3 раз в неделю. 
По возможности рекомендую договорится с преподавателем о дополнительных индивидуальных занятиях за отдельную плату. Но помимо обучения на курсах требуется самостоятельное освоение знаний по выбранному направлению. 
При положительных результатах обучения можно начинать искать вакансии программиста. Вряд ли сотрудники курсов смогут реально помочь в этом вопросе. Но есть неплохой шанс устроиться в небольшую фирму за скромную зарплату и начать приобретать опыт.

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

Для начала стоит выбрать основную специализацию в программировании. Вариантов довольно много: Front-end, Back-end, Full-stack разработчик, 1С программист, разработчик мобильных приложений и так далее. И в дальнейшем ориентироваться на требования к выбранному направлению. То есть изучать необходимые языки программирования, технологии и т.п.
Прекрасно, если среди ваших друзей и знакомых окажется программист, который даст полезные советы и поможет в обучении. При наличии средств можно нанять персонального преподавателя, что значительно ускорит учебный процесс. Про курсы и самостоятельное обучение уже говорили.
Не помешает составление индивидуального плана, в котором намечаются основные этапы, сроки выполнения, конкретные задачи. Планирование способствует лучшему осмыслению предстоящих трудов и их представлению в виде логичного и последовательного алгоритма.

Как совмещать учебу с основной работой? Ведь большинство людей, решивших с нуля стать программистами уже где-то работает?

Да, это очень актуальный вопрос для человека, решившего сменить профессию. Например, я работал полный день, а по вечерам посещал курсы и готовился самостоятельно. Плюс плотная самостоятельная учеба в выходные дни. Тяжело, особенно для семейных людей, но это временные трудности. 
Как вариант, можно накопить некую сумму, которой хватит на оплату курсов и сносную жизнь в течение полугода. И уже тогда полностью уйти в обучение. Возможно кто-то именно так и поступит. В этом случае стоит приплюсовать время, которое понадобится для поиска новой работы.

Человек живет в регионе. Что можно посоветовать с поиском вакансии программиста?

Однозначно переезд в крупный город, оптимально в Москву, Санкт-Петербург, как минимум, в столицу региона. В крупных городах спрос на программистов значительно превышает предложение. Можно найти хорошую вакансию даже без опыта работы. Главное, реально знать необходимый минимум по выбранной специализации и практически уметь программировать.
Начальные зарплаты в той же Москве раза в два выше средних зарплат в регионах. Однако, сразу понадобятся деньги на аренду комнаты или квартиры. А это немаленькая сумма. По мере карьерного роста заработок будет расти, и уже через год-два можно будет оплачивать аренду без особого напряжения.

А может лучше выбрать работу на удаленке?

Работа в удаленном режиме противопоказана начинающим программистам. Полезный и реальный опыт накапливается только при работе в коллективе среди коллег, которые всегда помогут и подскажут. Лучше учиться на чужих ошибках, чем на своих собственных. Именно опытное и адекватное окружение формирует специалиста и ускоряет его развитие.
Во фриланс обычно уходят программисты уровня Middle и Senior с наработанными связями и твердой репутацией в своем сегменте бизнеса. Они могут быть уверены в стабильном получении объемов задач с соответствующей их статусу оплатой.

Человеку 40 лет. Возьмут ли его на вакансию уровня Junior без наличия опыта?

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

Какой язык программирования лучше изучать?

Выбор языка программирования полностью зависит от выбранной специализации. Это может быть Java, PHP, Python, C++, Swift или любой другой язык. Главное, чтобы он точно соответствовал нужному направлению.

А что понадобится изучить помимо языка?

Вообще-то желательно познакомиться с несколькими темами, в той или иной мере необходимыми для расширения профессионального кругозора. Например:
  • контроль версий;
  • структуры и алгоритмы;
  • IDE;
  • отладка и тестирование;
  • базы данных;
  • документирование;
  • базовый Linux;
  • пакетные менеджеры;
  • фреймворки;
  • инструменты для сборки и автоматизации.
Глубина ознакомления опять же зависит от выбранной специализации. На одни темы достаточно потратить пару часов, а на другие выделить месяц.

Видел вакансии программистов с информацией о приеме на работу без опыта и обучении внутри компании. Стоит ли верить?

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

Что в итоге?

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