В последнее время достаточно часто вижу статьи под заголовком "Как я стал программистом в ... лет". Решила попробовать рассказать свою историю, поделиться своим опытом в качестве первого поста на пикабу. Возможно, кому-то будет полезно.
На данный момент у меня за плечами 4 года back-end разработки (Java), и работа с неплохой зарплатой в крупной IT-компании. Вроде как уже не джун =)
Как все начиналось
По образованию я учитель математики с небольшим уклоном в информатику. Да, некоторое отношение к IT это, наверное, имеет (с большой натяжкой), но все же это не профильное образование.
В университете у нас был pascal и delfi. Задачки по ним щелкались как орешки и с большим интересом, в какой-то момент даже было желание перевести на факультет информатики, но не сложилось. В общем, особой базы у меня за плечами не было.
Получив заветную корочку, я устроилась работать в школу.
Попытка №1
На то, чтобы понять, что это не мое, у меня ушло почти полтора года. И в один прекрасный (или не очень) вечер, я открыла Яндекс.Работа, прошерстила вакансии, связанные с разработкой, и уволилась в никуда. Параллельно же нашла курсы по С++ (что-то около 40 часов теории) в крупном профильном университете. Выбор на С++ пал после того самого анализа зарплат и вакансий.
Что тут могу сказать? Во-первых, проделывать такое (т.е. увольняться в никуда) стоит только имея тыл за спиной - либо какой-то денежный запас, либо того, кто будет вас содержать, так как никто работу вам сразу не предложит. Во-вторых, подобные курсы - это прям совсем база. Это все равно что с пятью классами математики пытаться устроиться на работу, где требуется высшая математика. Ну, вроде как, считать, складывать, умножать, делить и т.д. вы умеете, но этого явно недостаточно.
Работу я, естественно, не нашла - знаний катастрофически не хватало, как по С++, так и в целом (хотя бы про те же базы данных)
Поиск возможностей
Так как денег стало не хватать, пришлось вернуться обратно в школу. Ну и параллельно встал вопрос о каком-то более, что ли, комплексном обучении - первый опыт показал, что одного курса с базой языка недостаточно, и я слабо себе представляю, как же в действительности идет разработка и как та пара классов, что я написала, становится программой, крутящейся в промышленном контуре.
Поскольку на тот момент тема с курсами была еще не так развита - это сейчас это довольно популярная тема и каждый, кто хоть чуть-чуть умеет программировать, стремится запилить свою школу с блекджеком и шл... э, в смысле, с курсами за 100500 денег - то выбор был между второй вышкой и курсами профессиональной переподготовки специалистов. И то, и другое давало в результате диплом гос образца с присвоением квалификации, но первое длилось бы 2 года, а второе - 11 месяцев и имело менее абстрактный набор дисциплин.
Возможно, на мой выбор именно между вышкой и переподготовкой повлияло еще и то, что тот же geekbrains еще не был так раскручен, и платить сразу много денег за непонятный продукт в интернете было как-то страшно.
Через 11 месяцев я стала обладательницей диплома с присвоением квалификации инженера-программиста.
Что это мне дело?
- Общее представление о разработке (перечислю все в кучу: как работать с заказчиком, как писать требования, как рисовать всяческие диаграммы, какие методологии бывают и т.д.)
- Хоть и учебный, но опыт работы с разными базами данных: MS SQL, mysql, oracle, даже Microsoft Access затесался. По ораклу у нас вообще был сертифицированный оракловый курс
- Основы верстки сайтов (css, html), query, js
- Базовые знания по 3 языкам - С++, C#, Java - в целом уровня совсем зеленого джуна с нулевым опытом
Тут, вероятно, вы ждете рекламу, но ее не будет =)
Формат у нас был очный - занятия часа по 3 с 18.30 3-4 раза в неделю. Сейчас, насколько я знаю, у них есть смешанный формат - часть дистанционно, часть очно.
Из плюсов - по каждому курсу сдавался зачет (вполне себе полноценный), в конце была защита диплома.
Из минусов - на тот момент (около 5 лет назад) все курсы были довольно базовые, то есть сразу после них вы вряд ли устроитесь, нужно еще много самостоятельно изучать. На примере java: был только Core, совсем не было фреймворков.
Ну и конечно же стоимость таких курсов немаленькая, хотя оплата была разбита на довольно комфортные платежи.
Сразу после курсов я работу искать не стала - еще около полугода зависала на форуме www.cyberforum.ru в разделе по java - повышала свой скилл, помогала по мере сил новичкам, и параллельно пилила pet-проект, задавая все на том же форуме вопросы. Заглядывала иногда и на форум sql.ru в раздел java, но там ребята мне казались хоть и весьма и весьма прошаренными, но несколько менее дружелюбными к новичкам (чисто, конечно, субъективщина).
Занесло меня даже как-то на javarush, но мне быстро надоело писать по 100500 раз System.out.println, а также решать простенькие однотипные задачи на начальных уровнях с куцей теорией, и я забросила.
В целом, все это мне позволило поднабраться опыта, структурировать полученные знания и искоренить совсем уж детские ошибки новичков (что-нибудь из разряда: писать все в одном классе, не соблюдать Java Code Conventions, делать все поля public).
Однако, этот путь обучения имеет не такую уж большую степень продуктивности - невозможно оценить косяки, если не знать, что это косяки. Ты варишься "в собственном соку" - сам придумал, сам сделал, но насколько правильно - неизвестно, так как опыта и знаний для оценки не хватает.
Попытка №2
Поднабравшись опыта на форумах, вновь стала просматривать вакансии. И столкнулась с таким явлением, как java-школа. Их устраивают довольно многие компании, например, epam, t-system (на тот момент), некоторые банки проводят свои java-школы (Deutsche Bank, Сбер, Тинькофф и т.д.). В том числе устраивала и та компания, в которой я сейчас работаю.
В чем отличие java-школ от тех же курсов (geekbrains, skillbox и такого типа)?
- Во-первых, чаще всего нужно хоть минимальное знание java (или другого языка, но тут явно будет сложнее). Поэтому, кстати, берут не всех и есть отсев в виде теста или собеседования.
- Во-вторых, это своеобразный интенсив - никто разжевывать совсем базовые вещи вроде типов переменных не будет (см п. 1), но и глубина проработки тем будет весьма на приличном уровне (по крайней мере, у нас так было, и я иногда даже сейчас открываю некоторые лекции, чтобы освежить некоторые моменты). Полагаю (субъективно!), что глубина связана с тем, что студентов компания готовит под себя и, следовательно, заинтересована в хороших знаниях. Но тут, конечно, еще многое зависит от преподавателей.
- В-третьих, школу ведут (чаще всего) действующие разработчики, так что они могут рассказать и про устройство компании, и про разработку внутри компании.
- В-четвертых, для поступления в некоторые java-школы требуется английский (в тот же epam).
- Ну и в-пятых, - и это я считаю одним из основных плюсов, - трудоустройство. Часть студентов получает возможность трудоустроиться в компанию, которая проводила школу. Да, трудоустраивают не всех, но это реальный шанс, а не обещание курсов помочь вам с трудоустройством (читай, помочь вам с составлением резюме и провести для вас демо-версию собеседования с преподавателями, чтобы вы были готовы к настоящим собеседованиям)
Из минусов: зарплату вам могут предложить по низу вилки для джунов.
!!! Все перечисленное выше является обобщением и может разниться в зависимости от java-школы и от онлайн-курсов.
Собственно, я такую школу и прошла (4 месяца, 2 раза в неделю по вечерам, очно, но сейчас, думаю, у многих есть дистант).
Нашла я ее на hh, висела как вакансия. После получения моего резюме мне перезвонили и пригласили на тестирование. И, как нам потом сказали, из около сотни человек отобрали в результате теста всего 20. Среди них была и я.
В конце обучения каждый из нас прошел собеседование, по результатам которого, а также проекта, который мы защищали, нам было предложено (а кому-то и нет) дальнейшее трудовое сотрудничество. И я вот уже 4 года как работаю в этой компании на позиции java-разработчика.
И да, на первых порах все прекрасно поминали кто я и откуда, чего стоит от меня ждать, а чего - нет, ровно потому что представляли, какой уровень у преподавателей, да и собеседовали нас те же коллеги, к которым мы шли в отдел.
Итог
Смена профессии дело непростое - особенно, если нет профильного образования, но вполне возможное.
Сейчас есть много вариантов, как это сделать, но стоит для себя ответить на несколько вопросов, прежде чем во все это ввязываться:
- Как вы планируете обучаться?
Сейчас есть онлайн курсы - как платные, так и бесплатные, есть видеокурсы на youtube, точно так же есть курсы и при университетах и есть, наконец, вторая вышка. Тут стоит понимать, насколько вы самоорганизованы: готовы ли систематически заниматься, смотреть лекции, искать и решать задачки самостоятельно (по тем же бесплатным материалам), или вам, как и мне, легче учиться на очных/заочных курсах с четким расписанием и сдачей домашек.
Если вы выбрали курсы (очные или заочные), посмотрите программу, спросите у знакомых программистов (если такие есть) или на форуме насколько хорошее и полное содержание. По java часто дают только core, что знать, безусловно, обязательно, но, к сожалению, недостаточно для работы.
Из первого вопроса вытекает второй:
- Уверены ли вы, что у вас есть достаточно времени на обучение?
Обучение, так или иначе, потребует у вас значительного времени. Не стоит верить обещаниям научить вас всему за 21 день. Кроме того, обучение требует систематичности, то есть, чтобы добиться результата, надо заниматься постоянно, а не от случая к случаю.
- Готовы ли к тому, что ваш доход, возможно, снизится?
Стоит понимать, что если вы уже состоявшийся специалист в своей сфере, то на позиции джуна вы будете получать, скорее всего, меньше, чем в своей сфере. Это может быть критичным, если у вас семья с ребенком и, к примеру, ипотека.
Хотя сейчас сайты курсов пестрят громкими заголовками "средняя зарплата джуна от 80-100 тыс.", но, во-первых, это зависит от региона (даже в рамках одной компании у одинаковых должностей в разных регионах могут быть разные зарплаты, а Москва - это вообще отдельное государство со своими зарплатами), а во-вторых, от компании. Ну и тот же хабр говорит, нижняя планка зарплат в java - это около 35 - много это или мало - наверное, смотря с чем сравнивать.
- Готовы ли к тому, что поиски работы затянуться?
Несмотря на обещание многих курсов вас трудоустроить, несмотря на большую потребность в разработчиках, несмотря на то, что из-за пандемии и возможности теперь работать удаленно многие московские компании вышли на региональный рынок, рынок джунов несколько переполнен. Сейчас многие курсы готовят разработчиков и многие хотят "войти в айти", но вакансий именно для джунов довольно мало. Компании предпочитают искать мидлов и выше.
Можно ли "войти в айти" в 30-40 лет? Можно. Но возраст требует более взвешенной оценки смены профессии: стоит объективно оценить все за и против, все минусы и плюсы (востребованность профессии, языка, возможное снижение заработка, необходимость времени/финансов на обучение и т.д.)
Но если вы все же решили попробовать, то дерзайте. С моей точки зрения низкий уровень английского или отсутствие профильного образования не является стопорами - все это можно подтянуть со временем, никто от вас сразу звезд с неба ждать не будет, главное постоянно развиваться. Кроме того, сейчас, мне кажется, как раз хорошее время попробовать - многие компании пошли в регионы и из-за дефицита мидлов готовы обучать джунов себе в штат.
Так что если вы собираетесь, удачи вам)