Как стать программистом с нуля?
Войти в IT — непростая задача, особенно если менять профессию и с нуля погружаться в незнакомую сферу. На старте тебя преследуют непонятные термины и концепции, а минимальные требования вакансий кажутся невыполнимыми. Получение новых знаний никогда не обходится без сложностей, поэтому главное — не сдаваться. Специально для поднятия духа новичков мы с Сашей Ильиным обсудили актуальные проблемы старта в IT и поделились опытом, чтобы помочь будущим джунам.
Зачем вообще становиться программистом?
Для начала стоит ответить именно на этот вопрос, чтобы не строить ложных надежд и неоправданных ожиданий от сферы. IT как и любая другая сфера обладает своими особенностями и подходит не всем. Из плюсов:
- Удалёнка. В большинстве айтишных профессий можно работать из любой точки мира и не вспоминать про походы в офис
- Плавный переход между разными профессиями. Например, если ты пишешь код под iOS и захочешь переключиться на Android, учиться годами с нуля не понадобится
- Участие в технологической революции. Новые приложения, устройства и технологии переворачивают мир с ног на голову и делают его лучше практически каждый год. Даже самый скромный джун-разработчик или тестировщик становится неотъемлемой частью этого глобального процесса и вносит свой вклад в движение технологий вперёд
- Нагрузка на психику. У большинства людей работа в IT закрывает потребность в деньгах, но также открывает новые проблемы. Выгорание, синдром самозванца и тревожность становятся типичными спутниками айтишников, с которыми важно бороться
- Частая смена работы и постоянная учёба. Сфера вряд ли подойдёт людям, которые хотят выполнять непыльную работу и годами получать за это деньги. Если ваш девиз как у мужика на картинке ниже — лучше присмотреться к работе в другой области. Для программиста нормально менять работу каждый год. Новые технологии и инструменты тоже приходится изучать постоянно, чтобы не терять своей ценности на рынке.
Из этих особенностей складывается общая культура «программистских» профессий. В ней большое внимание уделяется учёбе и саморазвитию, здоровым отношениям между сотрудниками компании и культуре opensource, когда кучу полезных инструментов создаёт и поддерживает сообщество разработчиков.
Особенно полезно попробовать себя в IT тем, кто чувствует стагнацию в текущей профессии. Когда ты видишь, как из года в год текущая работа всё больше напоминает трясину, зарплата не растёт, и интересных задач не добавляется, то попробовать что-то принципиально новое — отличная идея.
Как не бросить обучение на середине пути?
Защититься от слива во время обучения помогают чётко поставленные цели. Подумай над тем, к какому результату ты хочешь прийти через 3-5 лет: кем работать, сколько денег получать и что иметь. А ещё важно понимать, чего за это время лишишься, если не достигнешь целей.
Можно использовать тактическую хитрость. Например, учиться понемногу, но каждый день — так сформируется привычка, эмоционально слить которую одним днём будет непросто. Полезно помнить и про дисциплину: садишься учиться — сразу открывай курс, IDE или другой инструмент, которым планируешь заниматься. Приучи себя не отвлекаться перед практикой на твиттер или короткое видео в Youtube.
Важен ли для старта возраст, образование или склад ума?
Нет. Твой возраст, рост, цвет глаз или любимый покемон никак не влияют на шансы получить первую работу. Достаточно неглубоко копнуть ютьюб или гугл, чтобы как пример найти истории о работе в IT после склада и людей, которые успешно стартовали в IT c нуля в 32 года.
Так ли нужны математика и английский?
Без математики можно справиться, но лучше её просто выучить. Полезно понимать основы и владеть школьным курсом. Если ты не умеешь складывать дроби и решать простейшие уравнения, то потратьте несколько часов на пару видеолекций и закройте пробел, без которого жить и работать будет легче.
Знание английского более критично. Даже если ты работаешь в России и не планируешь переезжать, на языке выходит куча полезных материалов, записей конференций, документации и прочих полезных вещей, знание которых помогает расти и развиваться. По общему правилу все первоисточники пишутся на английском языке. Это стандарт индустрии, с которым надо считаться. Для начала полезно как минимум научиться читать — этому можно научиться с нуля за 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 действительно сильно, результат окупит все затраты времени и сил.
Если тебе понравилась статья, подпишись на мой канал, чтобы не пропустить новый контент!
- войти в айти
- джуниоры
- обучение программированию
- ошибки программистов
- карьерный рост
https://habr.com/ru/articles/714158/