Войти в IT — непростая задача, особенно если менять профессию и с нуля погружаться в незнакомую сферу. На старте тебя преследуют непонятные термины и концепции, а минимальные требования вакансий кажутся невыполнимыми. Получение новых знаний никогда не обходится без сложностей, поэтому главное — не сдаваться. Специально для поднятия духа новичков мы с Сашей Ильиным обсудили актуальные проблемы старта в IT и поделились опытом, чтобы помочь будущим джунам. Зачем вообще становиться программистом?
Для начала стоит ответить именно на этот вопрос, чтобы не строить ложных надежд и неоправданных ожиданий от сферы. IT как и любая другая сфера обладает своими особенностями и подходит не всем. Из плюсов:
— Удалёнка. В большинстве айтишных профессий можно работать из любой точки мира и не вспоминать про походы в офис
— Плавный переход между разными профессиями. Например, если ты пишешь код под iOS и захочешь переключиться на Android, учиться годами с нуля не понадобится
— Участие в технологической революции. Новые приложения, устройства и технологии переворачивают мир с ног на голову и делают его лучше практически каждый год. Даже самый скромный джун-разработчик или тестировщик становится неотъемлемой частью этого глобального процесса и вносит свой вклад в движение технологий вперёд
Есть и минусы:
— Нагрузка на психику. У большинства людей работа в IT закрывает потребность в деньгах, но также открывает новые проблемы. Выгорание, синдром самозванца и тревожность становятся типичными спутниками айтишников, с которыми важно бороться
— Частая смена работы и постоянная учёба. Сфера вряд ли подойдёт людям, которые хотят выполнять непыльную работу и годами получать за это деньги.
Если ваш девиз как у мужика на картинке ниже — лучше присмотреться к работе в другой области. Для программиста нормально менять работу каждый год. Новые технологии и инструменты тоже приходится изучать постоянно, чтобы не терять своей ценности на рынке.
Из этих особенностей складывается общая культура «программистских» профессий. В ней большое внимание уделяется учёбе и саморазвитию, здоровым отношениям между сотрудниками компании и культуре opensource, когда кучу полезных инструментов создаёт и поддерживает сообщество разработчиков.
Особенно полезно попробовать себя в IT тем, кто чувствует стагнацию в текущей профессии. Когда ты видишь, как из года в год текущая работа всё больше напоминает трясину, зарплата не растёт, и интересных задач не добавляется, то
попробовать что-то принципиально новое — отличная идея.
Как не бросить обучение на середине пути?
Защититься от слива во время обучения помогают чётко поставленные цели. Подумай над тем, к какому результату ты хочешь прийти через 3-5 лет: кем работать, сколько денег получать и что иметь. А ещё важно понимать, чего за это время лишишься, если не достигнешь целей.
Можно использовать тактическую хитрость. Например, учиться понемногу, но каждый день — так сформируется привычка, эмоционально слить которую одним днём будет непросто. Полезно помнить и про дисциплину: садишься учиться — сразу открывай курс, IDE или другой инструмент, которым планируешь заниматься. Приучи себя не отвлекаться перед практикой на твиттер или короткое видео в Youtube.
Важен ли для старта возраст, образование или склад ума?
Так ли нужны математика и английский?
Без математики можно справиться, но лучше её просто выучить. Полезно понимать основы и владеть школьным курсом. Если ты не умеешь складывать дроби и решать простейшие уравнения, то потратьте несколько часов на пару видеолекций и закройте пробел, без которого жить и работать будет легче.
Знание английского более критично. Даже если ты работаешь в России и не планируешь переезжать, на языке выходит куча полезных материалов, записей конференций, документации и прочих полезных вещей, знание которых помогает расти и развиваться. По общему правилу все первоисточники пишутся на английском языке. Это стандарт индустрии, с которым надо считаться. Для начала полезно как минимум научиться читать — этому можно научиться с нуля за 1-2 месяца.
Сколько времени нужно потратить, чтобы стать программистом?
Если каждый день тратить по паре часов на практику и не отвлекаться, то базовыми навыками популярных языков программирования можно овладеть за 4-5 месяцев. Всегда есть и элемент случайности: если в момент твоего выхода на рынок вакансий становится мало, то поиск может затянуться. И наоборот — при высоком спросе можно удачно запрыгнуть на стажировку в компанию после месяца интенсивной учёбы.
Отсюда возникает вопрос, стоит ли бросать текущую деятельность, чтобы уделять всё время учёбе для входа в IT. При большой нагрузке на основной работе нужна крепкая сила воли, чтобы прийти домой и сесть писать код вместо отдыха. Такой режим потянут немногие. Это не значит, что нужно бросать работу, терять зарплату и с головой погружаться в самообразование. Можно использовать лайфхаки — например, учиться до работы, а не после. Потрать час-другой, реши пару задач или напиши несколько строк кода, пока у тебя свежая голова и есть запас продуктивности.
Если после пары бесплатных курсов окончательно понятно, что программирование привлекает, то уволиться с работы можно. Это высвободит много времени и ресурса для учёбы. Но помни — всё это время ты будешь сидеть без денег. Поэтому для такого подхода важно иметь финансовую подушку и не иметь долгов.
Зайти в IT тестировщиком правда легче?
Популярное мнение о лёгком старте через тестирование обещает, что не придётся учить языки программирования, и уже через три месяца можно найти первую работу. План отличный, но он не работает. Идея стать разработчиком через «промежуточную» профессию как минимум отнимет много времени — почему сразу не учиться разработке? К тому же, представь, сколько тысяч человек решило схитрить как ты, и посмотри количество откликов на джуновские вакансии тестировщиков — конкуренция среди новичков огромная. Про типичный день из жизни QA мы говорили на отдельном стриме.
На вакансии много откликов, нет смысла в неё лезть?
На количество поданных откликов вообще не нужно смотреть. Подробнее мы разбирали эту тему вместе с Сашей на отдельном стриме по собесам. На любой подходящей вакансии главное для тебя — релевантное резюме и хорошее сопроводительное с максимумом ключевых слов.
Окей, всё ещё хочу стать программистом. Но какой язык выбрать?
К выбору языка нельзя подойти однозначно и сказать, что точно нужно первым учить Python, JavaScript или вовсе Solidity. Всё зависит от направления, в котором ты хочешь развиваться, потребностей и склонностей.
Выбранный язык определит направление развития на 3-5 лет вперёд. Чтобы подойти к вопросу ответственно, важно примерно представлять, какие задачи ты будешь решать и будет ли актуален этот язык через несколько лет. Полезно до начала обучения посмотреть 3-5 видео про разные языки, услышать аргументы за и против них, узнать базовые концепции.
Чтобы конкретизировать выбор, можно сначала назвать те языки и направления, которые не стоит изучать первыми, если у тебя нет образования в Computer Science и айтишного бэкграунда:
— C и С++, достаточно низкоуровневые, в них нужно управлять памятью и совершать много сложных для новичка операций, которые будут ещё сильнее культивировать стресс от нового и непонятного инструмента
— Data Science. Если нет крепких математических знаний, понимания статистики и линейной алгебры, то рекламная магия про написание нейросеток и создание терминатора на деле обернётся ужасом от сложных формул и концепций
— Геймдев. Для работы над топовыми проектами нужны крепкие знания алгоритмов и других сложных вещей, которые с нуля учить сложно и долго
— 1С. Язык может показаться привлекательным, особенно если не знаешь английского и ищешь лазейку для того, чтобы его не учить. Но 1С остаётся узким и непопулярным инструментом, который к тому же привязывает тебя к рынку РФ. А ещё по статистике за него мало платят, в сравнении с другими языками
В остальном, для старта можно выделить 3 направления и 7 основных языков:
— Фронтенд на JavaScript
— Бэкенд на Java, PHP, Python и C#
— Мобильная разработка на Swift и Kotlin
С языком определились, как лучше учиться?
Вначале нужно вспомнить банальную истину: чтобы научиться программировать, нужно программировать. Без практики написания кода у тебя не получится найти работу, сколько книжек не прочитай.
Самый прямой путь выглядит примерно так:
— Выбираешь язык программирования и направление развития
— Находишь ментора в выбранной области, который даст конкретный план и воспроизводимые шаги для того, чтобы стать как он
— Изучаешь выбранный курс, основы языка и всё, что предложил и расписал ментор
— Когда чувствуешь, что набрал критическим минимумом навыков, просишь у ментора подобрать типичное тестовое задание для джуниора в своей области. Это может быть простое приложение или небольшой бот
— Делаешь задание, не стесняешься задавать вопросы ментору и спрашивать совета, когда сам заходишь в тупик
— Когда ментор проверил и одобрил законченный проект, его можно залить на Github, подробно описать и считать полноценным плюсом к резюме
— Если ты сделал самостоятельно сделал проект и всё в нём понимаешь, у тебя есть минимальное представление о том, чем примерно будешь заниматься на будущей работе — самое время начинать её искать
Главное — не найти вместо ментора дементора. Например, если ты обращаешься за советом к человеку, который получал профильное образование и на старших курсах вуза уже пошёл на стажировку в крупную компанию, то велика вероятность попасть в ловушку. Он может принять свой путь за единственно правильный и отправить тебя учить тома Тененбаума и разбираться, как работает память компьютера или ассемблер. Тебе же нужно не в совершенстве знать устройство компьютера, а уметь решать задачи, которые появятся на первой работе. Поэтому лучше найти наставника, который будет понимать твои цели и ориентиры вместо того, чтобы строить из себя всезнайку.
Не стоит сразу кидаться на платные курсы и думать, что это решит все проблемы. Лучше сначала попробуй бесплатный — так ты не потеряешь деньги и получишь примерное представление о том, чем собираешься заниматься. Если всё хорошо, то можно подумать о покупке платного курса и продолжении обучения. Основная ценность коммерческих курсов — сообщество таких же как ты новичков, которые решают общие для всех задачи, а также постоянная обратная связь от наставников, которая на старте приносит много пользы. Поначалу в голове будет возникать много абстрактных вопросов, которые часто невозможно загуглить и найти ответ на stackoverflow — в таком случае и пригодится обратная связь от наставников.
Помни, что когда ты покупаешь курс — ты не покупаешь работу в IT. Работать придётся много и усидчиво вне зависимости от того, сколько денег заплатишь за обучение.
А когда начинать искать работу?
Не откладывай походы по собеседованиям надолго — начни откликаться на вакансии через 3-4 месяца после начала обучения. Поиск работы и общение с эйчарами и лидами помогут сориентироваться в процессе найма и ты отточишь навыки делового общения. Также не стесняйтесь фрилансить: всегда можно найти друзей и знакомых, которым нужно создать телеграм-бота, помочь с лендингом или что-то ещё. Из простых, но реальных задачек сложится полезная практика, которой ты сможешь подкрепить резюме.
Мы часто говорим о том, в какие компании не нужно идти работать. Но этот разговор всегда касается специалистов с опытом, на которых есть спрос. На старте тебе лучше поступиться частью принципов и помнить, что главная задача — найти работу. Пусть на первом месте будет не лучшая атмосфера, задачи или коллеги. Всё это можно пережить, чтобы набрать опыт реальной работы над релевантными задачами и устраиваться на следующую работу с неким запасом прочности. То же касается и государственных компаний: по общему правилу в них лучше не работать, но если это первая работа — отказываться глупо.
Не пугайся отказов. Если ты отправил 100 откликов, на 60 получил отказ, ещё 35 остались непрочитанными и в итоге был всего один созвон с hr — это нормально. Главное, чтобы это не стало причиной для тебя опустить руки и перестать искать работу. Найти свою первую вакансию джунам всегда сложно, но пробить этот барьер можно только усидчивостью и терпеливым увеличением откликов.
И при всей любви к удалёнке — первую работу лучше найти в офисе. Так получится легче и интенсивнее вкатиться в процессы, изучить работу команды изнутри и получить максимум пользы от коллег и лида.
Как развиваться, если на первой работе ты один разработчик в команде?
Коротко: никак. На первой работе тебе всегда нужны старшие коллеги, которые в идеале хотят делиться знаниями и активно помогают расти. За год интенсивной работы с таким наставником можно сократить ваш разрыв в навыках процентов на 70. Дальше всё просто — найди новую компанию со своим багажом знаний и нового человека в ней, на которого можно будет равняться.
В итоге понятно, что для работы программистом нет никаких секретных путей или условий. Тебе придётся много и усердно учиться, заниматься не только теорией, но и практикой написания кода, выстраивать мотивацию и ставить цели. Будет сложно, иногда нервно, но если желание войти в IT действительно сильно, результат окупит все затраты времени и сил.