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

Виктория Шейх Халиль 5
Как стать программистом с нуля

Программисты разных специализаций в дефиците на рынке труда. Профессия высокооплачиваемая, поэтому привлекает многих, кто решает, кем стать, или думает, какое направление выбрать, чтобы сменить надоевшую и малодоходную работу. Что нужно, чтобы с нуля стать разработчиком, «ПрофГид» спросил у самих программистов. Кстати, недавно центр профориентации ПрофГид разработал точный тест на профориентацию, который сам расскажет, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте.

Роман Иванов
Главный ИТ-инженер, «Сбер», преподаватель JAVA в СберУниверситете

Вопрос вроде короткий, но отвечать на него можно очень долго. Попробую рассказать кратко. Рассмотрим на примере того, как стать с нуля java-разработчиком. Если вы будете следовать этому плану, вы с вероятностью 100 % станете разработчиком.

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

  1. Для начала нужно познакомится с Java Core. На это отведите месяца два интенсивной работы. Под интенсивной работой я подразумеваю минимум 40 часов в неделю. Я очень рекомендую найти для себя интерактивные курсы. Они позволяют хорошо прокачаться, потому что именно практика позволяет лучше впитывать знания.
    Я бы не рекомендовал глубоко изучать такие темы, как многопоточность, сериализацию, работу с сокетами, JSP. Эти темы вам с большой долей вероятности не пригодятся. Также не рекомендую заморачиваться с изучением алгоритмов – в бизнес-разработке их практически не используют, но при этом надо представлять, как устроены базовые структуры данных.

    Итого за два месяца вы должны покрыть следующие темы:
  • базовые примитивы, классы, циклы, базовый синтаксис;
  • обязательно тратить много времени на изучение коллекций, stream api – в разработке вы будете пользоваться ими 90 % всего времени;
  • изучить NIO.
  1. Получив хороший базис за первые 2 месяца, стоит приступать к изучению фреймворка Spring Boot. Здесь рекомендую сделать упор на написание контроллеров и работу с JPA. 99 % всех проектов, которые пишут разработчики, – обычный CRUD (Create, Read, Update, and Delete), то есть создание, чтение и удаление примитивных сущностей.
    Попробуйте реализовать пару проектов, например, на банковскую тематику – сервис расчета процентов по кредиту; сервис, эмулирующий работу банкомата. Здесь также должно хватить 2 месяцев.
    За эти 4 месяца вы освоите программирование на JAVA и будете способны уже проходить интервью. Но основная задача, которую мы хотим достичь, – быть круче других соискателей начального уровня. Для этого я специально выделил дополнительные 2 месяца.
     
  2. За это время нужно изучить работу с Docker, а вслед за ним Kubernetes. На данный момент, на мой взгляд, это самые важные навыки, и мало кто в них разбирается на должном уровне. Я видел множество людей с зарплатами 300 000+, которые откровенно плывут в данной теме. Поэтому в оставшиеся два месяца делаем следующее:
  • переходим на порталы по типу katacoda.com и начинаем интенсивно изучать все, что связано с k8s;
  • параллельно смотрим различные видео на ютубе про непрерывную доставку и деплой кода – то есть знакомимся с DevOps;
  • в конце вы должны представлять, как ваше Spring Boot приложение попадает в контейнер, затем в кластер кубернетеса, как оно там разворачивается и работает.

За эти последние два месяца вы набьете руку в написании микросервисов на Spring Boot, так как их надо будет написать очень много :)

Именно с таким набором знаний вы станете желанным сотрудником в большинстве компаний.

Курсы, где можно научиться программировать с нуля:

  • Хотите стать профориентологом всего за 2 месяца?
    Получите полезную профессию, помогающую людям. Курс Эльмиры Давыдовой.
Dmytro Budym
Software Development Engineer in Test, airSlate

Для начала стоит определиться: что вам ближе – интерфейсы или серверная часть. В зависимости от направления – front-end или back-end, будет варьироваться выбор языка, фреймворков, инструментов и навыков.

Самый простой вариант обучения – школы внутри больших компаний, где преподают практикующие программисты, а лучших выпускников по завершении курса берут в штат.

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

Как правило, для Junior-позиции необходимы:

  • базовые знания языка программирования и сопутствующих фреймворков;
  • знание инструментов сборки, чтобы собрать и запустить приложение;
  • умение работать с GIT;
  • навыки работы с базами данных, умение писать SQL-запросы;
  • не лишним будут навыки работы с системами непрерывной интеграции.

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

Евгений Афанасьев
Senior Software Engineer, IT-ONE (Luxoft)

Изучение любого языка программирования начинается с изучения синтаксиса и базовых возможностей. Найдите ресурсы, предлагающие большое количество задач по каждой теме на выбранном языке. Надо решить не по одной задачке на каждую тему, а по несколько десятков. В результате вы должны прорешать 700–900 задач. Загружайте их на GitHub. Решение задач – это очень важный процесс, который позволит набить руку в кодинге. Теория на таких площадках обычно скудная, совмещайте обучение с прочтением качественных книг, охватывающих недостающую теорию.

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

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

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

Останется только подготовиться к прохождению интервью. Это последний ключевой этап. Найдите список самых популярных вопросов, которые задают на собеседовании, и записи реальных или тестовых интервью. Изучите это все. Хорошее резюме и внушительный GitHub-профиль в совокупности с качественной подготовкой к собеседованию неизбежно приведут вас к получению достойного офера.

До изучения любого языка может быть все что угодно. Люди с разным бэкграундом становятся программистами. Я встречал коллег, которые поменяли профессию на программиста после 40 лет. Также видел школьников, которые уже нарешали сотни задач и продолжают заниматься. И я уверен, они получат первую работу в качестве младшего программиста, как только достигнут совершеннолетия.

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

Те, кто не заканчивал технических специальностей, тоже абсолютно спокойно могут пойти в программисты. Программирование – это не rocket science. Любой может научиться этому. Я сам окончил юрфак и изучал программирование уже потом самостоятельно. Просто кому-то понадобится больше времени, а кому-то меньше. Но если вы приложите необходимое количество усилий, не свернете на полпути, то обязательно достигнете цели.

Ещё курсы, где можно стать программистом с нуля:

Александр Коженков
Technical Lead, GridGain

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

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

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

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

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

А еще «ПрофГид», кроме основного вопроса «Как стать программистом с нуля?», задал уточняющие:

  1. Сейчас программистами становятся так же, как 10–15 (или даже больше) лет назад, или уже есть другие входы в профессию?
  2. Раньше войти в профессию было легче или теперь это сделать проще?
  3. Если сейчас пришлось бы начинать заново, вы повторили бы свой путь в профессию или выстроили бы траекторию как-то по-другому, минуя какие-то этапы, или, наоборот, захотели бы пройти еще какой-то дополнительный, который, возможно, облегчил бы будущую работу, о которой теперь вы знаете всё?

И получил на них вот такие ответы.

Дмитрий Титков
СЕО Piramis.dev. Разботчик @ChatKeeperBot

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

Раньше в плане обучения было сложнее, но интереснее. Конкуренция была ниже, так как сейчас высокие ЗП и повышенный спрос толкают в профессию много новых кадров. Сейчас гораздо проще начать, например, тем же frontend-разработчиком. Порог входа очень низкий. Есть готовые библиотеки/фреймворки, как React или Vue, и отличная документация.

Если сейчас выбирать путь программиста с нуля, я бы занялся C#. Думаю, что в обозримом будущем этот язык будет очень популярным. Он сейчас занимает достойные позиции и будет их только укреплять. Раньше не было удаленки, был плохой интернет, было очень мало документации и примеров. Я учил С++ по бумажной книге, которую мне подарил товарищ.

Глядя в прошлое, я бы обошел стороной 1С и С++. Они оба имеют очень узкую специализацию, а освоить С++ в совершенстве сложно и займет много времени.

Хороший вуз будет подспорьем, не более. Чтобы научится программировать, лучше всего идти стажером в компанию, так как программирование – это про практику.

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

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

Общая мысль в том, что техническая специальность и математика будут большим плюсом, но никак не обязательным условием. У нас в компании работал парень, который закончил юридический, при этом занимался программированием.

Александр Бочкин
Генеральный директор компании «Инфомаксимум»

Я по образованию программист, первый рабочий код написал в 5 классе, много лет посвятил разработке на С++. Сейчас не занимаюсь непосредственно написанием кода, но плотно и ежедневно общаюсь с программистами. Возможностей зайти в профессию или даже сферу сейчас стало намного больше. Есть шанс стать разработчиком не только у обладателей профильного образования, было бы желание.

Среди возможностей:

  • огромное количество разнообразных курсов – платных, бесплатных, общих, узконаправленных, теоретических, практических и т. д.;
  • разнообразные «тренажеры»;
  • прохождение стажировок на базе компаний (можно получить как профильный опыт, так и после окончания войти в штат на Junior-позиции).

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

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

Я бы ничего не поменял. Весь опыт бесценен. С++ – сложный язык, но его изучение научило меня системности и упорству.

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

  • Определиться со сферой деятельности.
  • Изучить теоретические основы. Практика – это прекрасно, но и азы знать нужно.
  • Подтянуть английский. Незнание языка сильно осложнит путь в профессии, ведь вся новая документация выходит именно на нем.
  • Практиковаться. Делайте задания, усложняйте образцы задачек, пилите собственные проекты. Пусть они будут элементарные, не страшно. Главное – начать.
  • Не бояться спрашивать совета. Какую библиотеку выбрать? А что лучше тут? А как тут?
  • Найти стажировку. Ничего не мотивирует сильнее работы над реальными проектами.
Павел Подкорытов
CEO & co-founder Napoleon IT

Порог входа в профессию снизился. Сейчас наиболее простой способ с технической точки зрения – вход через тестирование или через no-code. Это можно сделать, даже не получая фундаментального образования, связанного с математикой, программированием и другими длительными программами бакалавриата и магистратуры в университетах. Есть множество других способов, один из них – прохождение курсов, после которого можно трудоустроиться в компанию, не имея опыта в IT. Мы одними из первых запустили такую практику в Napoleon IT School, когда обнаружили нехватку кадров. Мы набираем и выращиваем таланты, которые и по сей день работают у нас.

В нашей компании есть очень интересные примеры, как ребята пришли в IT. Например, Дарья – QA-engineer, три года работала преподавателем по робототехнике для детей с 6 до 15 лет, а потом пришла на курсы QA Napoleon IT School. Когда получила тестовое задание, поняла, что навыки очень близки к профессии. Два дня изучала тестовый лендинг, перечитала кучу статей о том, как оформлять баг-репорты и спустя пару бессонных ночей со страхом отправила задание на проверку. А другой сотрудник Азат работал в Красноармейском лесничестве. Чтобы подзаработать, брал заказы на обработку участков от вредителей. Втянулся в сферу IT, когда разработал сайт для своей компании, а потом попал к нам в команду.

Сейчас 100 % легче попасть в IT. Конечно, для разработок, связанных с созданием новых технологических решений, необходимо фундаментальное образование.

Но сегодня IT настолько широко применяется абсолютно в разных сферах, где каких-то высокотехнологичных и прорывных решений не требуется. В 95 % случаев достаточно применения уже готовых решений, основанных на no-code. Это разработка, но она основана на других принципах, на более визуальных и простых. Вход для новых разработчиков очень простой.

Если бы сейчас я вновь становился человеком в IT, то пошел бы учиться в университет на фундаментальную длительную программу, но я бы всегда это сопрягал с изучением и применением своего опыта в том, что дает быстрые результаты. Либо пошел бы параллельно с этим на no-code курс и уже сразу бы начал делать проекты на нем, в процессе обогащаясь фундаментальными знаниями и непосредственным опытом для наиболее эффективного применения таланта.

Алексей Шепелев
Ведущий разработчик, «Альторос»

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

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

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

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

  1. Платные онлайн-курсы. По-моему, самый быстрый и эффективный способ войти в карьеру.
  2. Бесплатные обучающие видео на youtube, плюс бесплатные курсы и семинары. Немного сложнее чем платные курсы, но при большом желании более чем реально многому научиться.
Denys Zavhorodnii
Java Developer at Playtech

Я больше 10 лет работаю программистом. Начинал с 1С, сейчас пишу на Java. Есть сертификат Java Oracle, веду курсы по Java для новичков. Мой путь развития в профессии был достаточно линейным – технический колледж, затем институт. Дальше я просто изучал то, что интересно, и развивался в том, что актуально.

Сейчас сфера IT очень манит новичков высокими зарплатами и разными возможностями. Огромное количество курсов, вебинаров, марафонов обещают вам, что через 5–10 месяцев вы войдете в IT и сможете работать из любой точки мира. Это не так. Чтобы стать мастером своего дела в любой отрасли, необходимо провести много часов, занимаясь этим делом на практике. Об этом реклама курсов чаще всего умалчивает.

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

Мне всегда было интересно программирование, думаю, что так или иначе я бы к этому пришел. Мой совет тем, кто начинает, – не распыляться и не пытаться выучить все сразу. Выберите технологию, выберите направление и изучайте его. Как можно больше.

И всегда, всегда, всегда пишите код. Программирование – это не про «прочитать», это про «написать». Чем больше практики, тем быстрее придут ваши успехи и будет тот самый заветный офер из компании вашей мечты.

Подведем итоги:

  1. Среди программистов немало самоучек – разработчиков, совершенно самостоятельно освоивших профессию с нуля без фундаментальной вузовской базы.
  2. Пункт, прямо вытекающий из предыдущего: неважно, каким было базовое профобразование – гуманитарным, техническим, высшим, СПО. Нестрашно, если его вообще не было: есть программисты, которым для старта хватило курса средней школы. Но высшее образование все-таки большой полюс – это база, на которую накладываются все надстройки.
  3. Программирование – это не страшно, и не только для технарей до мозга костей. Главное – захотеть, и все получится. Лучший аргумент для вдохновения: среди разработчиков ПО немало бывших юристов, филологов, биологов и других гуманитариев.
  4. Главное в профессии программиста – практика: писать, писать и еще раз писать коды. Ну, конечно, сначала надо почитать, как их писать.
  5. Не надо пытаться объять необъятное и хвататься сразу за все – выберите определенное направление программирования и углубляйтесь в него.
  6. Знание английского очень упростит путь в профессии – вся новая документация выходит на этом языке.
  7. Курсы надо выбирать те, в программе которых есть разработка учебного проекта, максимально приближенного к реальному, обязательно на современном стеке технологий. Тренировочный проект можно представить в портфолио.
  8. Самый простой и перспективный вариант обучения на программиста – школы в больших компаниях, где преподают практикующие программисты, а лучших выпускников по завершении курса берут в штат.

И, наверное, главный вывод: стать программистом с нуля можно в любом возрасте: хоть в школе, хоть в 40 лет, когда жизнь только начинается…  

2 комментария
Оценка:
  • sss
    очень полезная статья
    Ответить
    0
  • Александр
    Пожалуй, самая мощная статья, которую я прочитал здесь. Благодарю! По правде сказать, ничего еще не купил на сайте, да и на веб-разработчика я уже месяц как учусь... Но трудно дается, были вопросы по поводу стоит оно того или нет, для чего это всё и т. д. Но ваша статья - это мощный толчок для меня. Аплодирую вам!
    Ответить
    3