Как переквалифицироваться в программиста?

Illustration of three characters: a person in an astronaut helmet to the left, a person adjusting their glasses in the center, and a humanoid figure with butterfly wings on the right, all in monochrome tones. Illustration of three characters: a person in an astronaut helmet to the left, a person adjusting their glasses in the center, and a humanoid figure with butterfly wings on the right, all in monochrome tones.

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

Александр Дюма

Можно ли переквалифицироваться?

Автор этой статьи — довольно удачный пример того, что переквалифицироваться в программиста можно. Сделал я это после многих лет работы системным администратором, имея диплом о музыкальном образовании. По состоянию на 2019 год около половины кандидатов на вакансию программиста не имеют профильного образования, что во многом объясняется особенностями трудового рынка нашей страны.

Что на рынке труда?

Уже не первое десятилетие спрос на программистов сильно превышает предложение. Работодатели готовы брать без образования и с минимальным опытом, лишь бы будущий работник мог выполнять задачи. Зачастую, риск оказаться без необходимого специалиста для бизнеса выше, чем риск нанять недостаточно компетентного специалиста. HR-менеджеры находятся в перманентном поиске новых программистов. Небольшие компании и стартапы предлагают соискателям завышенные зарплаты. Крупные компании создают стажировки, чтобы самим вырастить специалиста и продержать его как можно дольше. Неудивительно, что в этой ситуации требование о наличии профильного образования отходит на второй план.

А что с образованием?

Университетское образование не всегда может дать необходимые знания и навыки. Тем не менее, влияние университетов на рынок труда в IT усиливается. Сегодня в России есть очень сильные вузы, выпускники которых занимают первые места на международных олимпиадах по программированию. Каждый год выпускаются крутые алгоритмисты-математики, которые успешно находят работу, но они покрывают лишь малую часть вакансий, как правило, связанных с Data Science. Научиться каким-то прикладным навыкам вроде мобильной разработки, фронтенда или бэкенда шансов у студента мало. Этому почти не учат в вузах, этого нет в образовательной программе, а если и появляется, то быстро устаревает, так как информационные технологии в веб развиваются с огромной скоростью, а спектр прикладных технологий столь велик, что для каждого языка и фреймворка нужно было бы составлять индивидуальную программу обучения. Действительно ли самообразование остается единственным способом получить работу как для выпускников, так и для самоучек?

Курсы

Этот образовательный вакуум не мог бы существовать долго. Недавно он начал заполняться, и для меня удивительно, почему этого не произошло раньше. Последнее время появилось множество курсов, готовых обучить необходимой технологии за год или даже быстрее. Цены у них схожие — около 10000 рублей в месяц, иногда требуется полная оплата вперед. Те отзывы, что мне удалось получить от прошедших подобные курсы, были смешанными. Да, знания дают, но не все, что нужно. Да, есть стажировка, но не на реальных проектах, как обещали, и многое для своей стажировки приходится организовывать самому. Гарантия трудоустройства, о которой часто говорится в рекламе, вещь неоднозначная. Чтобы трудоустроиться, нужно все-таки многому научиться, а как можно гарантировать человеку, что он выучится, когда это зависит только от него? Шанс трудоустроиться вам предоставят, но этот шанс есть у вас и без курса. Окупится ли подобный курс? Я уверен, что окупится и очень быстро, если, конечно, вы сохраните желание быть программистом. В любом случае, не верьте красивой рекламе: никто не сделает из вас программиста — вам только наметят верную дорогу.

Буткемпы

Это относительно новый вид образования в IT для России. Формат обучения звучит многообещающе. Вы приходите в “лагерь” программистов, где в течение нескольких месяцев с утра и до ночи в вас закладывают знания опытные и хорошо мотивированные программисты. Вроде бы лучше и не придумаешь, но стоимость начинается от 150000 рублей за 10 недель: "Вау-вау, полегче!". Впрочем, если у вас много денег и вам нужен такой мощный толчок для саморазвития, то это вариант для вас. Иногда этот толчок просто необходим, а физическое присутствие опытных программистов и таких же как вы студентов усилит этот импульс. Но к такому короткому и супер-интенсивному курсу я бы рекомендовал относиться как к стартовому импульсу. Даже при полной погружённости в процесс обучения, вам не хватит десяти недель, чтобы запихнуть себе в голову весь необходимый объем знаний, разве что вы гений. Но если это так, то вы и без лагеря справитесь.

Нехватка хороших программистов

Такое обилие вариантов обучения дает и обратный эффект. Прошли лихие нулевые, когда на работу брали любого новичка по принципу: "Если сам чему-то научился, то научится и остальному". Нехватка джуниоров постепенно уходит. Рынок насыщается выпускниками вузов, курсов, кемпов и просто самоучками. Работа программиста становится очень модной. И если раньше нехватка специалистов была на всех уровнях, то сейчас устроиться без опыта или с небольшим опытом всё сложнее из-за возросшей конкуренции. Что с этим делать? Есть два варианта: научится что-то делать лучше, чем это делают другие (стать сильным джуниором), или научится делать что-то уникальное, чего другие не умеют. А что бы вы могли делать уникального?

Специализация программиста

Сам по себе уровень владения языком программирования работодателя особо и не интересует, хотя знать его устройство полезно. На собеседовании интервьюер может начать расспрашивать о тонкостях языка из дотошности или чтобы сбить соискателя с толку. Например, он может спросить: “Как в python создать неизменяемую переменную?”. Так ли это важно, и можно ли ее вообще создать? Скорее всего, в своей работе вы никогда с такой задачей не столкнетесь. Но что же тогда вам будет необходимо на практике?

Первое и главное — владение инструментами разработки, которые использует данная компания. Определенный веб-фреймворк, на котором разработан проект, библиотеки, используемые с кодом, подходы в юнит-тестировании кода. Найдите несколько вакансий по запросу на ваш язык программирования и в них вы увидите список технологий, которые реально нужны работодателю. Для веб-программирования одно, для Machine Learning другое, для разработки программно-аппаратных решений третье. При этом все они могут использовать один и тот же язык программирования!

Второе. Понимание предметной области проекта. Этот пункт менее важен, но с его помощью можно компенсировать недостаток во владении инструментами разработки, которые используются в компании. Медицина, логистика, финансы, системы управления персоналом — чем только не приходится заниматься программисту. Обычно требуется много времени, чтобы погрузится в нужную предметную область, понять ее задачи и законы. Если у вас уже есть опыт работы в необходимой сфере, то это будет вашим плюсом перед другими кандидатами. Плохо знаете фреймворк, но есть владение языком программирования и понимаете сферу деятельности? Прекрасно! Такие люди тоже нужны.

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

Преемственность развития

Так чем вы занимались все эти годы?

Были дизайнером? Можете начать со скриптов на python для 3D Max.

Вы геодезист? Изучайте программирование в сфере геолокации, навигаторы, карты. Лингвист? Читайте про обработку естественного языка — ваше знание морфем вполне могут пригодиться.

Вы бухгалтер? На данный момент есть множество веб-сервисов, связанных с финансами.

Может вы музыкант? Попробуйте разработать систему развития слуха.

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

Как запрыгнуть в лодку?

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

Подводные камни

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

Все помнят, как мы в школе учили стихи. Совсем непросто выучить стих за день и назавтра его рассказать. Нужно его немного поучить, подождать, пока он уляжется в голове, отдохнуть и еще немного поучить. А потом постоянно повторять. Весь процесс обычно занимал несколько дней. Используя этот принцип, можно параллельно учить сразу несколько стихов. Отсюда правило: "Невозможно выучить один стих за день, но можно выучить семь стихов за семь дней". Новая информация приживается постепенно, и мы не можем это форсировать. Тоже самое касается и физического развития. Чтобы быстро бегать, много отжиматься или подтягиваться, требуется время и терпение.

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

Страшно начинать самостоятельно? Автор этой статьи может стать твоим личным ментором и помочь тебе Нанять

Это нужно полюбить!

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

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