Как стать программистом с нуля или «100 тысяч рублей за 100 часов»

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

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

Условия

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

Качества человека и склад ума, способствующие успеху в профессии разработчика:

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

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

Обучение

Процесс самостоятельного обучения может быть построен с использованием материалов в интернете: статей, инструкций, гайдов, cookbook’ов и курсов. Сперва придется разобраться во многообразии доступной информации. А её действительно много. Но часть из неё уже устарела, часть плохо подана, часть не содержит полезной для новичка информации.

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

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

Теперь о том, какие области знаний и в каком порядке необходимо изучить для овладения профессией «web-разработчик».

Стоит начать с основ:

  • как устроен компьютер;
  • как устроен Интернет;
  • как работает сайт;
  • как работает база данных.

Причем погружаться в такие, казалось бы, простые вещи нужно основательно, т.к. на них строится понятийная база, без которой восприятие дальнейшего материала будет затруднено. Например, после этого этапа станут понятны такие термины, как сервер, HTTP- и HTTPS-запросы, оперативная память, домен, IP-адрес, HTML, таблица.

Следующим шагом нужно разобраться с понятиями backend и frontend. Первое — это реализация внутренней логики работы сайта, а второе — реализация интерфейса сайта и логики его взаимодействия с пользователем. Программистов, занимающихся разработкой бэкенда, называют бэкендерами, фронтенда — фронтендерами, а универсальных солдат, работающих и с тем, и с другим fullstack-программистами.

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

В случае выбора бэкенда, кроме языка программирования потребуется освоить ещё несколько дополнительных технологий: реляционные базы данных (SQL), NoSQL базы и основы сетевого взаимодействия в клиент-серверной архитектуре. Ещё пять лет назад можно было рекомендовать начинать изучение со связки PHP+MySQL. Однако, сейчас PHP сдает свои позиции среди языков разработки для web. На передний план выходят более производительные языки. PHP всё ещё остается привлекательным из-за огромного количества накопленных материалов для обучения и спросом на PHP-программистов. Но по мере популяризации других языков, конкуренция среди программистов в PHP растет, т.к. нового года на нем становится меньше, а на старый хватает тех, у кого уже хороший опыт за плечами.

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

И обязательно нужно разобраться в работе систем контроля версий исходного кода. Самой популярной, можно сказать, стандартом в отрасли, является система контроля версий git и популярный хостинг github.com.

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

Стажировка и старт карьеры

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

Иногда можно встретить компании, нанимающие студентов, неопытных специалистов для выполнения рутинной простой (в сравнении с другой) работы. Часто, это аутсорс-конторы, выполняющие несложные задания для третьих лиц. Для программиста без опыта даже такой опыт будет полезен. Окунуться в рабочую среду, увидеть изнутри как создаются продукты – это всё очень полезно. Да и первая запись в резюме дорогого стоит. Отмечу одно, важно не задерживаться в таких местах надолго, если опыт растет, а задачи и зарплата нет. Нужно двигаться дальше, мониторить рынок вакансий и сравнивать свои текущие скилы с их денежной оценкой в своей и других компаниях. Это помогает не только найти более высокооплачиваемую работу, а еще понять и найти свои слабые места, найти направления, в которых стоит подкачаться, чтобы претендовать на что-то большее. Многие компании нанимают новичков с тем, чтобы вырастить из них хороших специалистов и взаимовыгодно сотрудничать долгое время. Поэтому если чувствуете, что готовы попробовать новые задачи, пообщайтесь со своим руководителем, возможно он для вас уже что-то приготовил, либо расскажет по каким причинам новые задачи вам пока не по зубам.

В этом году стала популярна ещё одна возможность – устроиться в крупную известную компанию на удаленную работу без опыта. Возможно, придется подучить что-то специально необходимое для конкретного места работы, чтобы попасть на него.

Хорошая работа

После 6-12 месяцев работы, можно задуматься над следующими вопросами:

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

Имея опыт реальной работы, можно рассматривать вакансии уже не с позиции «лишь бы куда за опытом», а с позиции собственных интересов и приоритетов. Сперва нужно определиться с направлением, специализацией внутри выбранной области. Например, фронт на react, разработка микросервисов на go, машинное обучение или blockchain. Затем выбирать место, в котором помогут развиваться в выбранном направлении и обеспечат достойную оценку труда.

Послесловие

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

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