Введение
Сегодня мы поговорим о том, как найти работу в разработчику.
Я имею опыт работы в разных компаниях. Малый, средний и крупный бизнес, а так же гос. корпорация.
Чтобы получать такой опыт я прошел более 70 собеседований на разных этапах своего развития.
Во время прохождения интервью я сформировал ряд выводов и наблюдений, которые могут быть полезны тем, кто только начинают свой путь в IT.
В этой статье я буду рассказывать только про интервью в Российских компаниях.
Где размещать резюме
Первое с чего начинается поиск работы это выбор площадки для размещения резюме.
Лидером среди различных сервисов является HeadHunter. На HH представлено самое большое количество вакансий, поэтому размещать свое резюме на других сайтах или сервисах смысла не имеет.
В случае если вы хотите найти работу в определенной компании, то имеет смысл посмотреть открытые вакансии на сайте компании, но с большой вероятностью они так же будут представлены и на HH.
Когда-то я делал список топовых айти-компаний в России и пересматривал их сайты в надежде сделать отклики на сайте компании. Могу сказать, что это время было потрачено зря, тк на HH у тех же компаний я обнаружил куда более большой список вакансий.
Резюме и подготовка к собеседованию
Регистрируемся на HH и следом нас встречает вопрос как лучше оформить резюме.
Давайте разберем резюме по пунктам:
ФИО, семейное положение и образование это обязательные вещи, которые нельзя оставлять пустым если вы хотите найти работу в хорошей компании.
Что с образованием?
На примере работы фронтенд-разработчика я могу сказать следующее. В России нету хорошего гос образования для фронтенд-разработчика. Конечно же есть прекрасные вузы с уклоном на информационные технологии, но поверьте, что ваш работодатель прекрасно понимает, что с типовыми задачами фронта можно справиться без знаний компьютерных наук. Вы можете не знать алгоритмы и структуры данных, можете не понимать сложность алгоритмов, но если вы к примеру не знаете хотя бы один фрейморк из большой тройки (Vue, React, Angular), то у вас объективно будут проблемы с поиском работы.
К сожалению, много технологий, которые сегодня используются в веб-разработке относительно молоды, а университеты слишком медленные в адаптации к постоянно изменчивому рынку.
В России в IT большее предпочтений получит кандидат имеющий практический опыт решения задач, чем человек с красивым дипломом. Кстати говоря красивый диплом пригодится только для того, чтобы с него HR снял копию и положил в архив.
На техническом собеседовании всех будут интересовать ваши хард и софт скилы, а про образование фактически вспоминают только HR и то больше для галочки. Из этого следует, что вы совершенно можете не боятся указывать ваше настоящее образование, даже если оно не относится к IT.
Что с курсами?
А что же с курсами? Ведь в поле об образовании можно вписать и курсы, а вот там уже как раз учат тому, что нужно. В каком то смысле это так.
Если почитать программы многих курсов, то там действительно темы, которые нужно знать. При этом большая часть людей прошедших курсы не готовы к выполнению даже легких рабочий задач. Почему так получается вопрос для отдельного ролика.
HR и рекрутеры знают об этой проблеме, поэтому многие достаточно скептически относятся к курсам. Я бы рекомендовал не указывать на каких курсах вы учились, если эти курсы не имеют высокий авторитет.
Почти каждый рабочий день программиста состоит из задач, которые он не знает как решить. Одно из важнейших умений разработчика это поиск информации, умение обучаться и решать возникающие проблемы без привлечения коллег. Самостоятельное обучение программированию супер активно развивает эти умения, а структурированный курс и ментор за спиной приводит к тому, что выпускники курсов не могут сделать ни шагу в сторону от того, чему их учили.
Самоучки другие. Им ни кто ничего не рассказывал. Именно самоучки отлично имеют находить ответы на сложные вопросы. Я не против курсов и менторов. Я говорю о том, как все получается на практике.
Зарплата
Нужно ли указывать зарплату? Однозначно да.
Указание зарплаты сразу отсекает тех, кто не готов вам платить столько, сколько вы хотите. В первую очередь это экономия вашего личного времени на общение, которое изначально не привело бы вас к сумме денег, которую вы хотите.
Какую зарплату указывать?
Предложим вы рассчитываете на 100 000 рублей. По итогам собеседования у работодателя есть 3 возможных пути какую оплату вам предложить:
-
Попытаться вас прогнуть по деньгам в меньшую сторону и назвать к примеру 80 000 рублей и сгладить понижение ваших ожиданий отлично сложенной мотивационной беседой о возможностях роста. Всегда помните, что терять вы начнете сразу, а вот возможностей роста в компании по факту может и не оказаться.
-
Вам назовут ровно ту сумму, которую вы указали как комфортную.
-
Вам назовут сумму чуть больше ваших ожиданий, например 110 000 или 120 000 если компания в вас заинтересуется и будет готова конкурировать с другими компаниями, которые так же проявят желание вас нанять.
И как же тут не прогадать? Формула простая. Берем сумму ваших ожиданий. К примеру это 100 000 рублей. Добавляем сразу 20 процентов. Пишем 120 000.
И снова рассмотрим 3 пути:
-
Вас так же пытаются опустить по зарплате. Но опускать будут от той суммы, которую вы изначально завысили. Обычно понижают на те же самые процентов 20. В конечном итоге вам предлагают плюс минус ту сумму на которую вы и рассчитывали изначально.
-
Вам назвали указанную сумму. Получается вы получили больше своих ожиданий.
-
Вам назвали сумму больше, чем вы указывали и добавили еще 10-20 процентов. Итого вы можете держа в голове планку в 100 000 может получить предложение в 130 000 – 150 000.
Честно ли это? Рынок найма в первую очередь это рынок. Если вам делают предложение на ту сумму, которая больше ваших представлений о вашей ценности, то это значит лишь одно – вас так оценили. Так зачем вам продавать себя дешевле, чем вам могут предложить компании, которые просто по умолчанию конкурируют на рынке и предлагают более высокие зарплаты?
Вы ни кого не обманываете! На интервью и техническом собеседовании находятся не дураки. Люди которые вас будут собеседовать уже будут иметь представления о том что им нужно и сколько они готовы за это платить. При этом если будет возможность платить меньше, то обычно работодатели не брезгуют тем, чтобы заплатить меньше. Тогда почему вы должны жертвовать собой?
Как не продешевить с своими пожеланиями по зарплате?
Изучите вакансии на HH и посчитайте вилку за какие знания и умения сколько готовы платить. Еще раз напоминаю, что рынок труда это в первую очередь рынок! Всегда ставьте возможный максимум! Если на вашу цену ни кто не соглашается, то это значит, что ваши ожидания нужно уменьшать.
Вроде логично и понятно, но по факту просить больше для большинства это страшно и волнительно. Особенно это касается тех, кто только начинает свой путь в IT.
Если вы не можете переступить через себя и говорить ожидания по зарплате выше, чем вы сами себя оценили (обычно это ниже того, сколько действительно могут платить), то для вас у меня будет более комфортная рекомендация. Начните свой путь как хотите, но на каждом новом месте работы прибавляйте по 20-30 процентов от суммы, которую вам платили. Конечно же при условии, что вы хотя бы 1,5-2 года поработали в рамках компании из которой уходите. Смена места работы с повышением зарплаты это более простой способ начать стоять дороже, чем долго и упорно стараться получить повышение по зарплате. Это проверено практикой многих людей.
Аватар
Я надеюсь, что для большинства зрителей мой совет окажется и так понятным, но когда я работал на руководящей позиции в маркетинге и в мои обязанности входил найм, то как оказалось многие все же этого не понимают.
Уделите внимания и поставьте хорошую качественную фотографию на ваше резюме. Вы это не только ваши хард скилы и ваш код, но и то как вы выглядите! Мы живем в мире в котором софт скилы начали побеждать над хард скилами. Оденьтесь в чистую и опрятную одежду, которая не кричит о вашей творческой индивидуальности. Не нужно одевать все брендовые вещи или футболку с вашей любимой рок-группой. На фотографии на резюме вы должны приятно выглядеть для любого, кто будет смотреть ваше резюме. Выберите нейтральный фон и место с хорошим светом. Не делайте фото как для паспорта! Улыбайтесь. Вы не крупный государственный чиновник и не топ-менеджер, не перебарщивайте с строгостью.
Знания и умения
Отдельно опишите ваши знания и умения.
-
Какие языки программирования вы знаете?
-
С какими фреймворками работали?
-
Какие библиотеки использовали?
-
С какими операционными системами работали?
-
Какие методологии и подходы вы знаете?
-
Какие сервисы использовали?
Пишите обо всем с чем имели дело если это относится к вашей работе. Не надо думать, что что-то является и так понятным по умолчанию. Я разрабатываю на Vue. Буквально на каждом интервью спрашивают умею ли я работать c Vue Router. Как можно писать на Vue и не уметь работать с Vue Router? Ни как! Но загвоздка в другом. У рекрутеров есть список технологий, которые используются на проекте и они ищут людей у которых в резюме будут пересечения по тем технологиям, которые используются. Вот почему важно писать про все с чем вы имели дело. Рекрутеры и HR не разработчики. Они не обязаны и зачастую не знают многие тонкости. Помните об этом.
Видео и звук
Для собеседования подготовьте хороший микрофон и веб-камеру. Совсем не обязательно пользоваться зеркалами и дорогими видео-камерами. Но если у вас плохая веб-камера я всё же рекомендую приобрести хорошую веб-камеру. Поверьте в удаленной работе она вам пригодится.
Опыт работы
По классике описываются ваши обязанности, должность и время работы в компании.
Этого нам не достаточно. У нас у фронтов везде одинаковые должности и по факту одни и те же обязанности. А вот то, что у нас действительно отличается это суть проекта и используемые технологии, а так же сложность самого проекта.
По каждому месту работы опишите суть вашего проекта и чем больше всего вы занимались. Отдельно по каждой компании опишите технологии, которые вы использовали.
Конечно же используемые технологии будут пересекаться с списком навыков, который мы описывали выше. Как же правило не повторять себя? Тут не совсем повторение. Это детализация, которая дополнительно покажет срок работы с технологией. К примеру вы указали в навыках TypeScript. Как долго вы на нем пишете? Неделю? Может год? 5 лет? Не ясно. Указанием используемых технологий на проектах вы даете понимание как долго вы работаете с этой технологией. А как же где работали и как применяли. Поверьте. Это очень важно.
Дополнительная информация о вас
У вас есть блог про айти? Прикрепите ссылку!
Вы пишите в open source? Прикрепите ссылку!
У вас есть домашние проекты, которые вы пишите сами для себя? Прикрепите ссылку!
Вам нечего показать? Специально для такого случая напишите небольшой домашний проект и прикрепите ссылку на репозиторий.
Очень важно, чтобы работодатель мог увидеть то, как вы пишете код. Ваш код может рассказать о ваших умениях куда лучше, чем вы сами. Если код будет достаточно хорошего уровня и в достаточном объеме, то вас это может спасти от выполнения тестового задания.
Контакты
Контакты, контакты и еще раз контакты. Оставьте все возможные контакты. Дайте работодателю возможность связаться с вами удобным для него способом.
Чаще всего для связи используют:
-
Telegram
-
WhatsApp
-
Почта
-
Звонок по мобильному
Социальные сети
При подготовке к собеседованию не забудьте проверить ваши социальные сети. Служба безопасности компании может изучить ваши социальные сети и вы можете не получить ваше приглашение на работу только потому, что служба безопасности выявит ваших социальных сетях то, что противоречит взглядам компании. Поэтому я рекомендую скрыть любой контент, который может повлиять на мнение о вас в отрицательную сторону для компании.
Видео сервисы
Во время подготовки к собеседованию обязательно заведите аккаунты в WhatsApp и Telegram, а также жe в всех популярных приложениях для видеоконференции таких как Skype, Teams, Яндекс Телемост, Zoom. В разных компаниях интервью будут проходить в разных видео-сервисах. Если вы отложите этот вопрос на потом и начнёте регистрироваться в сервисе за 5 минут до начала технического собеседования, то у вас могут возникнуть сложности с регистрацией и это приведёт к тому, что вы опоздаете на собственное интервью. По этой причине важно заранее подготовить все аккаунты.
Воронка вакансий
Поговорим о том, как искать работу на HH.
В маркетинге есть такое понятие как “воронка продаж”.
Смысл заключается в том, что самый большой охват людей всегда на входе в воронку (например показ рекламы). Далее на каждом этапе взаимодействия с клиентом число людей уменьшается и в итоге остается самое меньшее количество людей, которые дошли до этапа покупки услуги или продукта. Это и называется воронкой.
Я и некоторые мои знакомые применяем подход создания воронки при поиске работы. Как показывает практика создание воронки более эффективный подход, чем избранные отклики.
Давайте подробнее. Как выглядит воронка вакансий на практике. Приведу свой пример.
На фронте лидируют 3 фреймворка (Vue, React, Angular). Все остальные крайне редко встречаются в вакансиях. Я пишу на Vue и переходить на React и Angular я не хочу. Мы получили первый фильтр в интерфейсе HH. Я вбиваю в поисковую строку Vue и получаю все вакансии в содержании которых как-то упоминается Vue. Наша воронка началась.
По личному опыту я знаю, что если не поставить фильтр на Россию, тогда мне будут попадаться предложения зарубежных компаний. Мигрировать я не хочу. Поэтому я устанавливаю фильтр по России. Мы снова срезали часть предложений.
Фильтр по городу мы так же не устанавливаем, на сегодняшний день очень многие компании дают возможность разработчикам работать удаленно. Если вы все же не установите фильтр по стране, то кроме зарубежных компаний вам будет податься большое число компаний связанных с криптовалютой, тк чаще всего они зарегистрированы не в РФ, даже если сама компания имеет корни из России. Так что если вы хотите именно в эту область, то страну не указывайте.
Обычно дальше люди все больше и больше сужают воронку различными фильтрами и откликаются не больше чем на 1 вакансию из 10-20. Бывает что люди просидев час на HH делают около 5-10 откликов.
Помните, что воронка сужается не только вашими усилиями, но и работодателями. Вы выбираете и компании выбирают. Вот тут-то и получается ошибка. Сделав 5 откликов вы рискуете, что ни кому из 5 компаний вы не подойдете. Что дальше? Еще на отклики? Снова ждете? И вот на вас откликнулись. Вы общаетесь с компанией и строите надежды, что вас выберут. А вас не выбрали. И вы снова начинаете круг. Проблема в том, что это крайне долгий и не эффективный подход.
Помните, чем больше воронка на входе, тем больше она на выходе! Нам не нужно своими руками сильно играть с фильтрами и собственным отбором.
У меня есть список всех вакансий где упоминается Vue. Я кликаю на все вакансии подробно не читая их! Исключение составляют только те вакансии в которых изначально зарплата указана сильно меньше моих ожиданий. С такими компаниями мне нет смысла общаться.
Почему я подробно не читаю на что откликаюсь? Предложим что вы откликнулись на 100 вакансий и получили 10 откликов. Это примерно 10 процентов конверсии на взаимный отклик. При этом вы прочитали 100 вакансий и 90 процентов времени на чтение было потрачено зря, тк вы не получили от них отклик. Помним правило что 20 процентов действий могут приносить 80 процентов результата так же как и 80 процентов действий могут приносить 20 процентов результата. Если я получаю 10 взаимных откликов из 100, то я трачу время только на подробное чтение вакансий компаний, которые уже ко мне проявили интерес. Кому мы не интересны по факту не должны быть интересны и нам.
И так по примеру мы получили 10 взаимных откликов. Что делаем? Выходим на звонки и интервью? НЕТ! Мы дальше расширяем воронку. По всей стране на Vue c моими ожиданиями по зарплате плюс те, кто не указал зарплату в сумме обычно не более 400 вакансий.
На HH есть ограничение на 200 откликов в день. За субботу и воскресенье я делаю 400 откликов.
По факту я рассказал о себе всем с кем мы потенциально можем сойтись в вопросе денег.
Понедельник будет веселый. На нас посыпятся взаимные отклики и будут сыпаться еще примерно дней 10. На этом этапе у нас максимально широкая воронка и те компании с которыми у нас может сложиться сотрудничество. Вот именно сейчас пришло время внимательно читать, задавать вопросы и изучать нашего будущего потенциального работодателя.
Если вы ищите не первую свою работу и представляете ценность для компаний, тогда количество звонков и сообщений будет выше вашей пропускной способности.
Да да да самое время отфильтровать тех, кто точно нет.
Полностью освободите вашу будущую неделю. Крайне важно общаться с рекрутерами и HR в состоянии готовности к разговору. Первичные звонки сложатся куда менее удачно если вы в моменты звонков будите заняты другими делами. При такой воронке вам будет чем заняться. Скучно вам точно не будет. Вы уж поверьте.
Во время чтения вакансий можно заметить интересный факт, что зарплата у джуниоров и у сеньоров очень сильно отличается, но при этом рабочие обязанности и требования по знанию технологий могут быть одинаковыми. Это вас это не должно пугать. Очень часто размещение вакансии на HH занимается именно HR. Предварительно он собирает информацию о вакансии.
К примеру руководитель команды может сказать HR, что на проекте используется Docker. HR запишет это требование вакансию не зная о том что фактически глубокие знания Docker не нужны, а сам Docker будет использоваться для того, чтобы развернуть backend на локальном компьютере. Чтобы это сделать нужно всего лишь минимальное представление что вообще из себя представляет Docker. С большой долей вероятности все нужные конфиги вы скачаете из репозитория в свой первый рабочий день. Глубокие знания тут не нужны. Это лишь один из примеров, которым я хочу показать, что очень часто эти требования которые вы будете читать в резюме изначально завышены. Поэтому их не стоит пугаться. Техническое интервью существуют для того чтобы определить подходите вы по требования или нет.
Как начинающему понять список требований
Для тех, кто ищет свою первую работу в IT отлично подойдет рекомендация взять 100 вакансий и из них выписать список требований. Следующие сотни вакансий будут содержать примерно те же требования. Таким образом вы сформируете для себя общий список технологий, который нужно изучать.
Но есть одна проблема. В вакансиях вы не увидите ни слова про грейды. Возможно я кого то огорчу, но список технологий, который необходим на проекте будет одинаковым как для джуниора так и для сеньора. Если в проекте пишут на TypeScript, то все разработчики любого грейда будут писать на TypeScript без исключения.
Так в чем же разница? Джуниору будут отдавать более простые и монотонные задачи, а более сильные разработчики будут получать более сложные.
Простые и сложные задачи даются в рамках тех технологий, которые используются в рамках проекта. Поэтому фактически список требований в вакансиях будет одинаковый. С какой-то точки зрения из-за этого порог входа в IT действительно высокий. Но не стоит сразу пугаться. Более опытные разработчики и руководители не будут вам давать то, с чем вам не по силам справиться. Даже если такое произошло, тогда всегда есть возможность передать задачу более сильному разработчику. В беде вас не оставят.
Чем рекрутер отличается от HR.
Я очень много говорю два слова. Рекрутер и HR. А в чем разница?
HR это менеджер по работе с персоналом. Как правило HR обладает гораздо больше информацией о компании, чем рекрутеры. Это связано с тем что задача рекрутера это поиск кандидатов, поэтому как правило рекрутеры не могут рассказать детали о компании и проекте.
В больших компаниях скорее всего вы будете сталкиваться именно с рекрутами. Следует помнить, что HR как правило уделяют больше внимания рассматриваемым резюме.
Часто заработная плата рекрутера зависит от приведённых людей и соответственно ему выгодно приводить больше релевантных разработчиков, чтобы повысить свой шанс получить свой бонус за разработчика, которого наймут. Это совершенно не значит, что вы на этом этапе понравились компании. Компания может даже не знать о том что, с вами ведётся диалог по вакансии.
Этапы интервью
В России в IT распространено несколько этапов интервью. О каждом мы сейчас поговорим.
Первичное знакомство
Первый этап это всегда первичное знакомство. Его проводит HR или рекрутер.
Изначально вам позвонят или напишут в месседжеры по контакту, который вы оставляли в резюме. Обращаю ваше внимание на то, что так же есть практика, что на HH вам могут ответным письмом в отклике написать контакты по которым будут ожидать звонка от вас. Если случай именно такой, тогда не стесняемся и звоним по указанному номеру строго в рабочее время. При планировании звонков не забывайте, что мы не фильтровали компании по городу, а следовательно у вас и у человека могут быть разные часовые пояса. Отталкивайтесь по от часового пояса работодателя.
Ваша задача во время интервью с рекрутером или HR получить ответы на все интересующие вас вопросы. На этом этапе мы делаем вывод стоит ли продолжать общение дальше.
Обязательно перед началом общения создайте эксель таблицу, поверьте дальше она нам очень сильно пригодится. В эту таблицу мы заносим вопросы которые нас интересуют. В дальнейшем по записанным ответам на наши вопросы мы будем определять с кем имеет смысл выходить на техническое интервью. Список вопросов должен содержать базовые вопросы плюс важные для вас критерии по которым вы будите выбирать свою новую работу.
У меня был такой список:
Название компании
Название компании нам нужно для того чтобы в дальнейшем получить более подробную информацию о компании.
Контактное лицо
Этот контакт нужен для того чтобы мы всегда смогли связаться с компанией и актуализировать статус по резюме.
Статус
В моём случае я использовал следующие статусы:
-
Нужно связаться по контактам (в случае если на HH нам отправили контакт)
-
Жду дату интервью с HR
-
Жду дату технического собеседования.
-
Жду решения после технического собеседования.
-
Отказ по вакансии
-
Получен оффер.
Зачем нам такие подробные статусы? Если мы проходим интервью в 2-3 компаниях, тогда вполне можно запомнить информацию о каждой из этих компаний. В нашем случае мы общаемся сразу с десятком, а то и более компаний. После общения с третьей компанией вам будет не хватать вашей оперативной памяти и в вашей голове перемешается вся информация. Чем больше мы будем общаться с разными компаниями, тем меньше деталей мы будем помнить. Именно по этой причине нам нужны эти статусы.
Когда актуализировать статус
Этот пункт нам нужен для того, чтобы мы всегда помнили, когда нам нужно напомнить о себе. Рекрутер или HR общается не только с вами одним, но и с множеством других кандидатов. По этой причине не самые ответственные рекрутеры могут просто забыть о вас.
Дата и время интервью с HR
Первое общение обычно занимает не более 20-30 минут. Дату этого общения мы записываем.
Дата и время технического интервью
Про вас могут забыть не только на этапе общение с рекрутером. Если рекрутер пообещал вам назначить дату технического собеседования и в течение 2 недель вам так и не назначили дату, тогда я рекомендую прекратить общение с этой компанией. Скорее всего там неблагоприятная среда для работы. Похожая история и с ответом по итогам технического интервью. Если вы ожидаете больше двух недель с момента прохождения технического интервью, то скорее всего вы неинтересны компании.
Ссылка на вакансию
Во время технического интервью скорее всего у вас спросят что вы уже знаете о компании. Здесь нам пригодится наша сохранённая ссылка. Будет не очень красиво если вы будите не знать то, что изначально было написано в вакансии.
Суть проекта
Здесь всё просто. Мы записываем всю информацию о том на какой проект компания ищет разработчика.
Где ведется общение
Обязательно запишите где именно ведётся переписка с рекрутером. Если вы одновременно будете общаться более чем с пятью компаниями, то вспомнить где именно вы общались с определенной компанией будет проблематично.
Работа по ТК РФ или договор оказания услуг?
Здесь мы фиксируем по какому виду договора мы будем работать с компанией.
Какой формат работы?
Существует 3 основных формата.
-
Работа в офисе.
-
Удаленная работа из дома.
-
Гибрид. Вы какие-то дни работаете в офисе, а какие-то удаленно.
Есть ли деление зарплаты на премии?
Важной помнить, что компания согласно трудовому кодексу обязана выплатить вам только ту сумму денег, которая в трудовом договоре записана в качестве зарплаты. В некоторых компаниях зарплату могут делить на премию, бонусы и надбавки.
У HR будет множество обоснований почему в компании существует такое деление. Вас будут уверять, что вам нечего бояться. Но вы должны помнить, что та часть суммы которая написана в трудовом договоре как бонусы, премии или надбавки не являются обязательный ежемесячной выплатой. Это происходит на усмотрение работодателя. Мы живём в не спокойное время. Если у компании начинаются финансовые проблемы, то чтобы сократить свои расходы компания может убрать премиальные выплаты своим сотрудникам. У меня уже был такой негативный опыт. И поверьте это совсем не приятно. Идти на подобный риск или нет решать вам.
Есть ли индексация зарплаты?
Независимо от премии и бонусов в некоторых компаниях ежегодно проходит индексация заработной платы связанная с инфляцией в стране. Это не частая практика, но если в компании есть индексация заработной платы, то это определённо плюс.
Если ли квартальные / годовые премии?
Здесь также всё просто. Мы узнаём какие ещё выплаты мы можем получать помимо нашей зарплаты.
Какой адрес офиса?
Для тех людей, которые работают в офисе это может стать очень важным моментом при принятии решения.
Какое кол-во людей в компании?
Лично я люблю работать в больших и зрелых компаниях. На мой взгляд именно в крупных компаниях лучше устроены бизнес-процессы. Как правило работать в такой компании комфортнее.
Есть ли ДМС?
Этой пункт будет важен тем, кто действительно пользуется услугами ДМС. Если вы не пользуетесь ДМС, тогда по сути для вас это не должно быть критерием выбора места работы.
Какое начало дня?
В среде программистов встречаются разные люди. Кто-то может начать свою работу в 7:00 утра, а кто-то еле-еле проснётся в 11:00. При этом даже в рамках одной компании в разных командах могут быть разное начало времени начала рабочего дня. Так же время начало будет зависеть о часовых поясов в которых находятся большая часть команды. Подбирайте работу, которая вам комфорта. В IT такая возможность есть.
Какие есть бонусы для сотрудников?
Бонусы бывают разные. Оплата курсов, оплата спортзала, корпоративное обучение, секции и кружки для детей и так далее. Бывает, что подобных бонусов вообще нет. Нужны ли вам подобные вещи решайте сами.
Есть ли должностная инструкция?
Одни компания будут удивляться зачем вообще эта инструкция. Другие будут удивляться тому, что можно работать без данного документа. Лично для меня этот вопрос показывает уровень компании. Я не доверяю тем, кто пренебрегают документами, которые должны быть. Как правило если бардак начинает уже в подобных вопросах, то дальше будет еще хуже.
Есть ли обрезка ЗП на испытательный срок?
Если предложение по работе не является вашей последней надеждой, тогда я не рекомендую соглашаться на уменьшение зарплаты во время испытательного срока, так как есть множество компаний, которые во время испытательного срока оплачивают полную зарплату.
Есть ли KPI?
KPI распространены как правило в маркетинге и в продажах. IT компании как правило не ставят KPI для своих разработчиков. Но если вы узнали, что KPI всё же есть, тогда обратите особое внимание на эти показатели. Сможете ли вы их выполнять и будет ли зависеть ваша зарплата от выполнения данных KPI?
Впечатление от общения
В момент разговора помимо информации о компании вы конечно же будете обращать внимание на манеру и тон разговора. В разных компаниях от разных рекрутеров подход к общению будет разный. Я убежден в том, что уважающая себя компания, которая ценит своих разработчиков не позволит рекрутерам грубо или не профессионально общаться с кандидатами. В этом пункте мы будем записывать все наши эмоции которые мы получили от общения с рекрутером или HR пока мы их помним. Так же сюда можно записать впечатления после прохождения технического интервью или от общения с руководителем.
Техническое собеседование
Обычно вторым этапом является техническое собеседование. На котором проверяются ваши знания и умения, а также работодатель обращает внимание на вашу коммуникабельность, стрессоустойчивость, умение работать в команде и прочие другие важные вещи для совместной работы в команде.
Подготовьте заранее краткий рассказ о себе. Расскажите о ваших предыдущих местах работы и чем вы там занимались. Какая была команда и как был построен процесс. На каждое место работы не уделяйте больше 5 минут, а общий рассказ о вашем опыте работы не должен быть больше 10-15 минут. Постарайтесь сделать ваш рассказ о вашем опыте максимально кратким, но ёмким.
Во время рассказа о своём предыдущем опыте всегда помните, что скорее всего вы подписывали NDA (соглашение о не разглашении) на предыдущем месте работы. Как правило эти документы запрещают рассказывать практически всё. Поэтому при рассказе не называйте конкретные названия проектов, конкретных людей и конкретные цели. Попробуйте рассказать о своём опыте не вдаваясь в детали которые могут иметь коммерческую ценность и нарушить подписанное вами соглашение о не разглашении.
Если вам задают вопросы, на которые ответ требует как раз этих самых деталей, в таком случае вы имеете полное право отказаться от ответа на вопрос ссылаясь на то, что ответ на вопрос не может быть озвучен по причине подписания соглашения о неразглашении.
Как отвечать на вопросы
Если во время технического собеседования вам задали вопрос на который вы не знаете ответа, тогда обязательно запишите этот вопрос и после собеседования найдите ответ на этот вопрос. Есть большая вероятность, что этот вопрос может попасться вам на следующем техническом собеседовании.
Ещё более лучшей практикой является записывать свои технические собеседования, таким образом по необходимости вы сможете восстановить всю информацию которую вам сообщили о компании на техническом собеседовании.
Если вам задали вопрос на который вы не знаете ответа, то постарайтесь вслух порассуждать о том, как бы вы решали данную задачу на рабочем месте. Многие сложные вопросы задаются не для того, чтобы получить точный ответ, а для того чтобы увидеть как вы размышляете и какие подходы используете.
Поэтому крайне важно рассказывать о том какие мысли у вас в голове во время решения той или иной задачи.
Очень важное влияние оказывает уверенность вашего голоса. У меня были случаи, когда техническое собеседование на вакансию frontend разработчика проводил backend разработчик, который сам до конца не знал правильных ответов на те вопросы которые задавал.
Если у вас будет похожая ситуация и вы будете отвечать неуверенным голосом, то вам могут навязать неверный ответ на вопрос с которым вы можете согласиться, хотя изначально знали правильный ответ. Если вы уверены в правильности своего ответа стойте на оставайтесь на своем ответе и не дайте сбить вас с толку. Такие провокации могут быть.
Во время ответов на вопросы постарайтесь давать ответы более кратко. Всегда помните о том, что чем больше слов вы будете говорить, тем больше возможности задать вам уточняющие вопросы на которые возможно вы не сможете ответить. Запомните правило. Меньше слов говорите – меньше вопросов получаете. Ваши ответы должны содержать суть, но не быть многословными.
Если вам задали интересный вопрос на который вы не знаете ответа вполне нормально в конце интервью поинтересоваться и узнать правильный ответ на вопрос. Возможно ответ на этот вопрос поможет вам прохождение следующего технического собеседования.
Также могут быть случаи когда интервьюер будет мериться с вами знаниями и пытаться продемонстрировать своё превосходство.
Конечно же это не профессиональный подход. Если у вас попался именно такой случай, тогда старайтесь не спорить и не мериться знаниями в ответ.
Также вам могут задавать вопросы на которых попросту нету однозначных ответов. Для вас здесь явно сигнал, что это как раз тот вопрос на который вам нужно порассуждать.
Софт скиллы могут оказаться важнее, чем хард скиллы. Если у человека есть пробелы в знаниях, то его можно научить. Но если человек не коммуникабельный, то скорее всего перевоспитать взрослого человека уже не получится. Да и не имеет смысла. Именно по этой причине выбирая между разработчиком которой лучше знает теорию, но менее коммуникабельный и разработчиком который знает чуть хуже, но более коммуникабельный могут отдать предпочтение человеку который обладает более лучшими софт скилами. Будте приятны в разговоре при прохождении интервью.
Бывают случаи когда работодатели задают вопросы личного характера. Помните о том, что вы не обязаны отвечать на подобные вопросы.
Исключением является проверка службой безопасности. Есть ли у вас именно такой случай и вы заполняете анкету для проверки службы безопасности, только в этом случае вы должны предоставлять информацию о вашей личной жизни. В других случаях руководителей не должно волновать, что происходит в вашей личной жизни если это не отражается на работе.
Вопрос который во многом уже стал уже мемом. Это кем вы видите себя через 5 лет. Многим этот вопрос кажется абсурдным и банальным, но в таких вопросах есть смысл. Ответ на этот вопрос рассказывает о ваших планах на будущее и возможно ваши планы могут соприкасаться с интересами компании. Поэтому рассказать о своих планах для вас даже полезно. К примеру может быть ситуация , что вы хотите стать тимлидом, а представитель компании понимает, что в будущем у них будет потребность в тимлиде. В таком случае вы получите преимущество, потому что компания будет понимать, что они нанимают не просто разработчика, а человека который в будущем сможет занять позицию тимлида.
Вам могут задать вопрос есть ли у вас офферы от других компаний. Я рекомендую ответить кратко, что предложения есть, но вы хотите получить детальную информацию от всех и вдумчиво принять решение. Наличие офферов от других компаний повышает вашу ценность при этом считается дурным тоном рассказывать детальную информацию о том, какое именно предложение вам сделала другая компания. Если вы хотите намекнуть работодателю о том, что вы будете ждать от него контр-оффер. Вы можете не раскрывая деталей своего оффера мягко намекнуть что-то, что предлагаете вы не конкурентно по отношению к другому офферу.
Live coding
Live coding во время технического интервью обычно бывает после ответов на технические вопросы.
Вас могут попросить написать код в режиме реального времени. Обычно разработчики не любят писать код в режиме реального времени потому, что это не естественный процесс как пишется код. На работе у нас есть время подумать, написать разные варианты решения, посмотреть варианты решения в интернете, а также посоветоваться с коллегами.
Во время написания кода в режиме реального времени наше время ограничено. Поэтому написание кода в таком режиме вызывает стресс.
Я рекомендую не отказываться от лайв кодинга. Вы сможете выработать иммунитет к этому этапу интервью.
Тестовое задание
Также Вас могут попросить выполнить тестовое задание.
По своим собеседованиям я заметил, что когда я рассчитывал на зарплату до 150.000 в начале своего пути, то мне очень часто предлагали сделать тестовое задание.
Когда я стала рассматривать предложение выше 150.000 мне практически никто не предлагал выполнять тестовые задания.
Статистика конечно же может отличаться. Я рассказываю о своём опыте. Вы должны понять, что если вы не любите тестовые задания, вы имеете право от них отказаться. В таком случае я рекомендую в качестве альтернативы предложить посмотреть ваши репозитории на GitHub, поскольку они гораздо больше расскажут о ваших знаниях, чем выполнение короткого тестового задания, который на практике оказывается совсем не коротким.
При этом если вы хотите понравиться компании и показать свою заинтересованность, тогда рекомендую выполнять тестовые задания.
Финальное собеседование с руководителем.
В некоторых компаниях вам могут сделать оффер после прохождения технического собеседования. Также может быть третий этап – это интервью с руководителем команды или проекта. Как правило на третий этап собеседования попадают те, кто уже успешно прошёл техническое собеседование. Но не спешите радоваться. Думать о том, какую компанию вы выберите стоит только после получения оффера.
Оффер
Оффер не является обязательной частью. Многие прогрессивные компании уже ввели практику отправки оффера. Это документ который является официальным приглашением вас на работу. В нём описывается предлагаемая позиция, условия работы и зарплата.
Если компания не высылает оффер, тогда обычно с вами связываются и говорят эту информацию по телефону или приглашают в офис.
Мы создавали воронку для того чтобы получить лучшее предложение из всех возможных. Поэтому не торопитесь принимать ваш первый полученный оффер. Возьмите время на размышление.
Напишите всем остальным с кем у вас было техническое интервью, что у вас уже есть оффер, но вы хотели бы увидеть все предложения, прежде чем принимать решения.
Это повысит вашу ценность в глазах других работодателей, а также может ускорить процесс подготовки оффера для вас если этот процесс затянулся по каким-то причинам.
Принимайте решение соглашаться на тот или иной оффер только тогда, когда вы будете понимать что больше офферов вы не получите. В противном случае вы рискуете выбрать не самое лучшее из возможных предложений.
После получения оффера я рекомендую запрашивать шаблон трудового договора. У меня есть практика которая показала, что формулировки в трудовом договоре могут отличаться от того что мне рассказывали на собеседовании.
Как понять от кого ждать оффер
Казалось бы логичный ответ на вопрос, что стоит ждать предложения от тех, где вы лучше всего прошли техническое интервью.
Однако моя практика это опровергла. Очень часто те компании, где по моему мнению техническое интервью прошло идеально не давали мне оффер, а те компании о которых я даже не думал ждать от них оффер в конечном итоге делали лучшее предложение из всех. Поэтому чтобы вы лишний раз не расстраиваюсь я рекомендую не делить шкуру не убитого медведя. Думайте о том кого выбрать только по факту, когда у вас есть оффер на руках.
Выбор компании
Следующий фактор по которому стоит задуматься это выбор самой компании.
IT компании условно можно разделить на два типа. Компания которая разрабатывает свой продукт для внутреннего использования или продажи.
Второй тип это аутсорс и аутстаф компании. Если кратко, то в таком типе компаний вас нанимают, чтобы продать другой компании для разработки продукта. Не редко бывают цепочки из субподрядов.
Если вы разрабатываете продукт внутри компании и для этой компании, то скорее всего процесс разработки будет происходить более спокойно.
Аутсорс и аутстаф характеризуется тем, что вы постоянно будете находиться в неком стрессе. Вы будете работать в разных проектах, с разными технологиями, с разными с разными командами и в условиях строго ограниченного времени. При этом вы всегда должны держать в голове как правила вашей компании так и правила компании которой вас продали. Я работал в таком режиме и честно вам скажу, что это действительно вызывает стресс.
Есть и плюс таких компаний. В них руководство компании заинтересовано в том, чтобы их разработчики развивались. Чем более опытный разработчик, тем дороже его можно продать. Таким компаниям выгодно вкладываться в развитие своих разработчиков. Год работы в таком режиме с точки зрения получения опыта может заменить несколько лет работы в обычной компании.
Не опытным разработчикам я советую отдать предпочтение именно аутсорс / аутстаф компании. Там вы сможете вырасти как разработчик.
Но если вы уже являетесь опытным разработчиком вероятнее всего комфортнее вам будет в компании, которая занимается собственным продуктом.
Следующий немаловажный критерий это формат самой работы. Существует несколько форматов работы. Первое это работа в офисе. Второе это работа удалённо дома. Третье это гибрид, который совмещает как поездки в офис так и работу из дома. Какой формат работы более удобный вопрос индивидуальный. Здесь решайте сами.
Работа из дома дает больше времени, но при этом требует гораздо больше самодисциплины. Первый год удаленной работы мне было тяжело. Мало того, что нужно себя контролировать, так и дни начинали превращаться в день сурка. Даже поездка в офис стала казаться интересным мини приключением. Поэтому вы будите вынуждены еще и сами себе придумывать досуг.
Масштаб компании.
Маленькие компании отличается тем, что в них работает маленькое количество людей, а следовательно у таких компаний как правило нехватка человеческих ресурсов.
Это значит что любой сотрудник может быть в роли кухонного комбайна, который будет выполнять различные функции. Возможно вам придётся делать то, что не входит в ваши рабочие обязанности. При этом для вас это возможности для роста. Чем крупнее компания, тем уже список должностных обязанностей, которые выполняет сотрудник. Также любую инициативу гораздо сложнее воплотить в жизнь. В маленьких компаниях быстрее развиваться, а в больших компаниях комфортнее работать. Что для вас важнее развитие или комфорт решите самостоятельно.
Разница фрейморков
Что делать если вы пишите на одном фреймворке, но вам очень сильно понравилась компания и вы понравились ей, но там используется другой фреймворк. Здесь вам нужно подумать готовы ли вы переходить на другой фреймворк. Если да, то можете смело принимать приглашение. Если вы хорошо знаете один фреймворк, то вы достаточно быстро сможете освоить и другой. В Angular, React и Vue очень много похожих паттернов. Фреймворки заимствует подходы друг у друга и поэтому они во многом похожи.
В чем разница между большой и маленькой командой.
На проекте в команде может быть разное количество разработчиков начиная от 1 и до 20 по моей практике. У меня был опыт работы в команде где фронтендом в рамках одного проекта занимались более 20 человек, а общий объём команды составлял около 50 человек включая других разработчиков, аналитиков и дизайнеров. Начинающим разработчикам я советую сделать выбор в сторону более больших команд, так как там у вас будет больше возможности получить помощь от коллег, просто потому что их больше, а значит больше вероятность того, что найдётся человек который уделит своё время чтобы вам помочь
Грейды
В этой теме я думаю надо обсудить разницу между джуниор, мидлом и сеньором.
В разных компаниях разные требования к этим грейдам. Для того чтобы у вас было понимание разницы между этими грейдами можно обобщить информацию и сказать так. Джуниор это разработчик который не может полностью самостоятельно выполнять рабочие задачи и ему часто требуется помощь коллег.
Мидл как правило может полностью самостоятельно выполнять рабочие задачи без помощи коллег.
Сеньор может писать точно такой же код как и мидл, но будет отличаться более широким опытом, что будет позволять сеньору принимать решения по архитектуре. Обычно сеньоры это просто более опытные разработчики.
Зарплаты
Теперь стоит поговорить о зарплатах.
Я буду говорить о зарплатах для фронтенд разработчика работающего на российскую компанию находясь в России.
Конечно зарплатные вилки у всех разные, но обобщая мы можем увидеть следующую градацию.
Джуниоры от 50 до 150.000. Мидлы от 150 до 250.000. Сеньор от 250 дача до 350.000. В России зарплата более 350 000 для сеньор разработчика это уже редкость, Если у вас зарплата выше, то считайте вам повезло. Как правило на зарплату выше вы можете претендовать уже на позиции тимлида, но в таком случае вы уже будете заниматься не только разработкой, но и управлением команды, что в свою очередь будет требовать других компетенций и знаний.
Безусловно факт который может не радовать это то, что нам разработчиком всегда есть куда расти. Несмотря на то, что зарплата выше 400 000 это действительно большая редкость вы всегда можете переключиться на следующий этап развития и искать работу в зарубежной компании в которых зарплата для разработчиков могут доходить до 10 000 долларов в месяц и более в зависимости от компании. Здесь нужно понимать, что зарубежная компания будет платить меньше тем, кто работает не в офисе и проживает на территории другой страны. Только в России удаленные разработчики и офисные получают одни и те же деньги. Если вы хотите больших денег работая в зарубежной компании, тогда вам придется мигрировать.
Отказы
Для начинающих разработчиков большое количество отказов может повлиять на их самооценку. Этого следует избегать. При поиске места работы помните о том, что не важно какое количество компаний вам отказали. Для вас важно найти место работы которое вам понравится и оно вам нужно одно, а не много. Я рекомендую пытаться искать работу до тех пор, пока вы не найдёте эту одну компанию и поверьте рано или поздно вы получите оффер который вам понравится
Как часто можно менять работу
Меняйте вашу работу по необходимости. Если вы чувствуете, что в рамках компании вы больше не можете развиваться или вам не нравится условия на вашей работе или вы понимаете, что можете найти новую работу с более высокой зарплатой, то я рекомендую сменить место работы.
При этом не делайте это очень часто. Постарайтесь хотя бы год или полтора года отработать на одном месте. Если вы ещё не отработали год вы конечно можете уволиться если на то есть резкая причина. Не делайте это часто. Если в вашей трудовой книжке будет 3 место подряд где вы работали по полгода или меньше, тогда вопросы у нового работодателя будут к вам. Как так получилось что 3 раза подряд вы принимали решение так быстро уходить
Подведем итоги
Как правило при подходе создания воронки вы сможете найти работу за 3-4 недели с учетом того, что первые две недели вы посвятите прохождению интервью.
У меня лично поиск работы никогда не занимал больше месяца ни в начале моего пути ни сейчас.
Создание воронки так же хорошо тем, что вы неизбежно будете общаться с большим количеством компаний. Сможете почувствовать разницу между этим компаниями и что самое важное получите опыт прохождения собеседования.
Даже если вы уже проходили собеседования, то первые 10 ваших собеседований это всегда стресс. Поверьте если вы пройдёте больше 20 и более собеседований, то страх и неуверенность перед собеседованием вас навсегда покинет.
На своём опыте я понял, что не стоит проводить больше 3 технических собеседований в день. Будет перегруз. Рекомендую остановиться на максимум двух в день.
За все годы практики в разработке я чётко понял, что процесс программирования должен вам нравится.
Каждый день вы будете сталкиваться с большим количеством проблем, которые не будете знать как решить. Если вам не доставляет удовольствия то, что вы делаете и если добавится ещё и большое количество проблем и вопросов, то работа для вас превратится в сплошной ад.
По этой причине я рекомендую искать работу разработчиком только тем, кому действительно нравится процесс разработки.
Если вы хотите прийти в эту сферу только ради денег, то я рекомендую отказаться от этой идеи . Скорее всего карьеру у вас не получится построить. Это действительно сложная работа справиться с которой поможет интерес и любовь к тому что вы делаете.
Если у вас есть история которую вы хотите рассказать о вашем опыте собеседований и передать какой-то свой опыт, тогда пишите в комментарии. Поверьте найдутся ребята, которым ваш опыт будет интересен.
Всё что я рассказал это мой личный опыт основанный на прохождении большого количества собеседований. Мой опыт может отличаться от других.
Такую же цель преследует и канал OPEN JS в целом. Я буду стараться как возможно чаще выпускать полезные и обучающий контент.
Поддержите этот канал своей подпиской, лайками и комментариями.
Всем удачи в поиске работы!
Недавно мы с Алексеем Паршуковым, Unit Lead в SkyEng, ex-CTO DocDoc, проводили вебинар «Быстрый старт в Программировании с нуля» и обсудили различия в изучении языков программирования, суть профессии программиста, как устроиться на работу и какие бывают работодатели. Посмотреть вебинар вы можете по ссылке, а статью по нему прочитать прямо сейчас 🙂
Что такое работа программистом?
У профессии программиста есть очевидные плюсы, о которых всем известно:
- Хорошие зарплаты
От 100 т.р. по регионам России, 250-300 т.р в Москве, за рубежом от 10 тысяч долларов.;
- Гибкий график
Разработчик — это преимущественно удаленная работа;
- Востребованность на международном рынке
Это одна из самых простых профессий для иммиграции.
Но не каждый человек может стать разработчиком, иначе все бы уже давно переквалифицировались в программистов. Тут всегда надо оставаться на линии. Нельзя освоить какую-то одну технологию, почитать книжку, пройти курс, в совершенстве изучить Python и потом 20 лет зарабатывать за счет этого. Отрасль и технологии развиваются настолько быстро, что подходы, фрэймворки, языки программирования, которые актуальны сегодня, через 4 года уже почти наверняка полностью сменятся, а если выпасть из профессии на год, то придется начинать практически с нуля.
Например, для студентов уход в армию является очень большой проблемой, ведь за год отсутствия в мире разработки изменится очень многое. Это не очень критично. Можно достаточно быстро наверстать, но, в любом случае, необходимо постоянно пребывать на линии тренда, постоянно обучаться, изучать современные подходы, смотреть что и как меняется, и тогда вы будете успешным разработчиком, который зарабатывает много денег.
И еще один недостаток, о котором мало кто говорит, — достаточно сильная дискриминация по возрасту. Если вы студент, то найти работу будет достаточно просто. Если вам 30-40 лет, то вам рады в любой технологической компании. Если вам чуть за 40, то уже будет сложнее. Но если вам за 50, то вы, скорее всего, работу нигде не найдете. Об этом стоит помнить, такое существует.
Как понять, подходит ли вам работа программистом?
Здесь не так важно, какое у вас образование, закончили ли вы институт по профессии. Главное, чтобы у вас была сильно развита усидчивость. Почему это так важно?
Представьте, что вам ставят задачу как разработчику, например, перенести в мобильном приложении кнопку с левой стороны экрана в правую, чтобы было удобно нажимать на нее большим пальцем. Вы садитесь и начинаете делать эту задачу. У вас уйдет немного времени на то, чтобы разобраться в приложении: где оно лежит, как оно собирается. Еще немного уйдет на то, чтобы изучить код, который программирует и выводит эту кнопку на экран. Совсем мало времени уйдет на то, чтобы внести изменения в этот код и сказать компилятору или мобильному телефону: “Пожалуйста, отобрази эту кнопку не слева, а справа”.
Но дальше этот код, скорее всего, не заработает. И следующие несколько попыток он не заработает. Нужно будет прочитать тонну документации, чтобы разобраться, как работает отображение кнопок в Android или iOS. Придется попробовать 10 разных способов: найти какие-то воркэраунды, подпереть это все костылями, написать разработчику, посмотреть исходные коды Android и через 4-5 дней, в лучшем случае, а то и позже эта кнопка отобразится так, как вам нужно.
Из подобного состоит вся работа: каждый день, каждая задача. Каждая строчка кода, которую вы написали, с высокой долей вероятности либо не заработает, либо заработает не так, как вам хочется, и не будет очевидных причин, почему она не работает. Безумное количество времени уходит на то, чтобы разобраться в том, что же там происходит, и как заставить эту штуку выполнять то, что вам хочется.
И финальный результат, в котором все заработало, должен приносить вам много радости. Это основной мотиватор разработчика, который его заставляет изо дня в день ходить на работу и что-то делать. Усидчивость позволит вам не сломаться, не отказаться, не передумать, не отвлечься на кофе и соцсети, а часами напролет сидеть и думать, почему эта штука не работает и как заставить ее работать.
Какие бывают работодатели?
Фриланс
Как правило, это небольшие задания за небольшие деньги. Их можно достаточно быстро сделать. Они размещаются на биржах фриланса. Основная биржа в России — freelance.ru. Основная международная — upwork.com.
Биржи подходят для того, чтобы взять какие-то практические задачи, которые приносят какую-то пользу, например, заработать свои первые деньги. Это достаточно просто. Никто не будет читать ваше резюме, проверять, есть ли у вас реальный опыт, сможете ли вы затащить эту задачу или нет. Это хорошее место, чтобы набить руку и начать что-то программировать, зарабатывая на этом деньги. Теоретически, есть люди, которые занимаются этим всю жизнь и зарабатывают там денег намного больше, чем у работодателя.
Но есть и минусы. Основной состоит в том, что это больше походит на создание своего бизнеса, нежели на работу программиста, так как вы тратите много времени на поиск заказов, коммуникацию с заказчиком, эффективное выстраивание процессов, а на разработку уходит не так уж много времени. И, как правило, продукты, по которым даются задания на биржах, используют довольно специфический стек технологий. Например, много заданий будет связано с изменениями в движок блогов WordPress. Он редко используется в продуктовой разработке, еще реже — в компаниях, но на фрилансе будет миллион задач на эту тему: поправить какой-нибудь лендос, переместить картинку, запилить плагин. Этот опыт и эти технологии в работе на работодателя слабо применимы. На фрилансе сложно чему-то научиться, потому что нет команды. Нет людей, с которыми вы взаимодействуете, у которых можно что-то почерпнуть, которые могут проверить вашу работу и поделиться опытом. Поэтому, фриланс хорошо подходит для старта, но не для профессиональной работы.
Студии/Интеграторы/Аутсорсеры
Это достаточно разные компании, деятельность которых сильно различается. Есть как маленькие, так и большие игроки, но, как правило, у них общие плюсы и минусы.
Из плюсов:
- Большой поток совершенно разных проектов
Вы не засыпаете в какой-то рутине какого-либо конкретного проекта. Это разные проекты, они постоянно меняются, у вас есть возможность постоянно учиться чему-то новому;
- У большинства этих компаний выстроены достаточно четкие процессы
У них есть алгоритмы по работе с документацией, выстроен процесс разработки, взаимодействия с заказчиком, они хорошо работают с оценками, умеют считать экономику, потому что это их профессиональная деятельность.
- Высокий уровень
У них можно хорошо научиться разрабатывать программное обеспечение.
Из минусов:
- Не все компании классные
У топовых компаний действительно все хорошо. У них все отлично выстроено, есть деньги, заказчики и интересные проекты. Но существует много нишевых компаний с небольшим штатом в 5-10 человек, в которых не такие отлаженные процессы, но зато в эти компании легко можно устроиться и научиться чему-нибудь полезному. Можно научиться разрабатывать программное обеспечение, поработав с ними полгода, и перейти в другую компанию на более высокооплачиваемое место.
- Мало свободы
Заказчик, как правило, знает что ему надо. У него есть дизайн, есть четко прописанное задание, он часто приходит со своими технологиями. И несмотря на то, что вам кажется, что лучше будет сделать иначе, обычно, такие вопросы не обсуждаются.
Для того, чтобы попасть в эти компании, нужно знать прикладные языки программирования. Например, PHP, Python, Java, Javascript.
Это хорошее место для начала карьеры.
Стартапы/Небольшие компании
Таких компаний сотни. Каждый день открывается десяток новых, но девять из них обязательно закроется.
Есть масса преимуществ, почему стоит попробовать работать в стартапе:
- Это очень драйвово и весело;
- Проще всего заработать действительно большие деньги.
На ранних этапах, зачастую, учредитель активно делится своими акциями, особенно, если стартап взлетит и будет быстро расти, то вы очень скоро станете миллионером;
- В проектах нет Legacy, нет старого кода, от которого хочется плакать
- Большое количество свободы
Есть возможность выбирать технологии и программировать так, как нравится вам. Вы можете сильно влиять на продукт.
Но есть и минусы:
- 9 из 10 компаний закрываются
Многие из них закроются ещё в течение первого года, так и не запустив продукт;
- Слабая возможность обучения
Как правило, в эти компании приходят не самые лучшие специалисты, не всегда там будет чему научиться;
- Непредсказуемость
Зачастую, финансовый поток у этих компаний нестабилен. Вы можете проработать какое-то время на такую компанию, и вам не выплатят зарплату за два месяца.
На самом деле, веселье перевешивает все эти минусы. Но идти в такую компанию без опыта будет не лучшим решением. Уровень стресса будет очень высоким, а уровня практических знаний, скорее всего, не хватит, чтобы затащить проект.
Банки/Энтерпрайз
Плюсы:
- Стабильность;
- Хорошая зарплата;
- Низкий уровень ответственности
Никто не будет просить вас перерабатывать и отвечать за что-то крупное. Любая большая энтерпрайз компания — это мастер по размазыванию ответственности между кучей менеджеров.
Минусы:
- Очень низкая скорость работы
Вы можете год или два пилить фичу, так ее и не выпустив, потому что за это время она потеряет свою актуальность. Зарплату, конечно залпатят, но эта штука очень демотивирует;
- Специфический опыт
Как правило, это какой-то свой банковский софт. В основном, это старый код, в котором не очень приятно и не очень интересно работать;
- Сменить сферу деятельности здесь будет довольно сложно
В первую очередь, потому что вы потеряете в зарплате. В Сбербанке они всегда выше, чем в Яндексе.
Отличный вариант для первого места работы, если вы попадете на место стажера. В крупной компании на стажировке можно получить много полезной информации прикладного характера в сжатые сроки: о том, как разрабатывается ПО, какие нужно использовать инструменты. Этот опыт, в любом случае, будет релевантен.
Продуктовые компании
Плюсы:
- Актуальные технологии;
- Отлаженные процессы;
- Команда профессионалов;
- Высокий уровень стабильности.
Минусы:
- Сложно заработать действительно большие деньги;
- Сложно устроиться на работу;
- Огромное количество инструментов, с которыми придется разбираться.
У каждой компании этот набор инструментов свой, и данный опыт будет не слишком релевантен для рынка и для перехода на другое место.
Как выбрать язык?
Зависит от того, чем вы хотите заниматься и в какую компанию хотите пойти.
PHP, например, очень популярный язык. Он используется в куче российских и зарубежных компаний, в том же Facebook. Но нет никакого смысла учить PHP, чтобы устроиться в Twitter, потому что он там не используется. Если вы хотите в Яндекс, надо учить Python или Java. Переучиваться с PHP на Java очень непростой процесс.
Лучше всего сразу определить для себя 2-3 компании, в которых вы бы хотели работать. Узнать, какие они используют языки программирования и изучать их. Либо, отталкиваться от понравившегося языка и затем искать компании, которые его используют.
Какие бывают разработчики?
Backend
Это код, который выполняется на сервере. Бэкендер, как правило, общается с базой данных, с внешними сервисами и отвечает за бизнес логику. Например, позволяет осуществить регистрацию пользователя, сохранить его в базе, списать у него деньги, отправить ему какое-нибудь уведомление или смс.
Типичные языки: PHP или Python, а так же менее распространенный Ruby.
Frontend
Это то, что вы видите, когда заходите на сайт. Это кусок из верстки. Верстка, как правило, делается на языке разметки HTML, который говорит, как контент отображается на странице, каким цветом он будет показываться. Javascript отвечает за то, как эта страничка будет себя вести, как она будет анимирована, куда отправится форма, какая ошибка будет выведена клиенту, если телефон введен неверно. Эти знания нужны почти каждому программисту. Практически не бывает таких областей, где вам не придется сталкиваться с версткой. Этот язык очень хорош для старта, потому что куда бы вы ни переметнулись, он будет везде востребован.
Fullstack
Это разработчик, который умеет делать и фронтенд, и бэкенд. Он один может напилить и на стороне сервера, и на стороне клиента, заставить все это вместе работать, заставить работать проект без какой-либо помощи. Это высший пилотаж. Такие разработчики, обычно, зарабатывают в полтора раза больше.
Мобильная разработка
По сути, это тот же фронтенд, но здесь используются другие языки. Здесь нет смысла вникать в языки программирования, которые использовались 5 лет назад, такие как Objective-C и Java. Сейчас используются Swift и Kotlin. Все новые приложения пишутся именно на этих языках, а старые под них переписываются.
GameDev
Это отдельная сфера. Здесь, как правило, используется C++ и специальные библиотеки, такие как Unity и т.п. Разработчик, который умеет делать мобильное приложение на Kotlin, не сможет написать игру, потому что используется совершенно другой стек, совершенно другие технологии.
Desktop
Это то, что нативно запускается у вас на компьютере. Например, браузер, Word и т.д. Чаще всего используется C++, С#. Мощные приложения пишут на C++. Иногда десктопные приложения пишут на Delphi, потому что это намного проще и дешевле.
1С
Это самый популярный продукт в России. Он используется, так или иначе, в любой российской компании. Его главный минус в том, что кроме России он нигде не используется. Он очень узкий, из 1С очень сложно уйти, но вакансий очень много и они неплохо оплачиваются.
DevOps
Это системные инженеры, которые настраивают компьютеры. Сейчас компьютеров нужно много, продукты сложные. Facebook, например, использует десятки тысяч серверов и для того, чтобы их было проще администрировать, чтобы код быстрее закатывался с компьютеров разработчиков в продуктивную среду и быстрее докатывался пользователям, нужны инженеры, которые умеют это дело преобразовывать, автоматизировать, автоматически вводить в строй десятки тысяч серверов. Они делают это при помощи программных инструментов. Самый востребованный язык в этой сфере Python и Bash. Изучение питона любым системным администратором поднимет его зарплату минимум в полтора-два раза.
AI/ML/BigData/Криптовалюты
Чаще всего разработчики этих сфер используют все те же самые языки. ML и анализ данных это в основном Python и иногда чуть-чуть Java. Криптовалюты используют C++. Здесь особенность в том, что требуется хорошее знание математики и глубокое знание прикладных инструментов. Обычный разработчик на питоне вряд ли сможет за неделю переквалифицироваться в разработчика ИИ, так как потребуется более глубокое погружение.
Как не нужно выбирать язык и направление?
- Не ориентироваться на зарплаты
Согласно исследованиям опубликованным на Habr, самым высокооплачиваемым языком является Eclipse. Это довольно модный, молодежный, позитивный и современный язык. Но что случится, если вы сегодня начнете его учить? Сейчас на hh.ru всего 11 опубликованных вакансий. И даже если вы зайдете на место с высокой зарплатой, это не значит, что через несколько лет он будет все также актуален. В таком случае можно оказаться невостребованным, а переключение с одного языка на другой — достаточно сложная история;
- Не стоит выбирать модные, экзотичные, ограниченные или вымирающие языки
На экзотичные языки (Scala, Eclipse) очень мало вакансий и, как правило, они все для опытных разработчиков. Устаревшие языки обычно дают в институте/школе, например, Pascal. У них нет никакого прикладного применения, они не востребованы на рынке. Как и не стоит начинать с 1С из-за его ограниченности.
- Не стоит начинать со сложных языков
Не лучшим решением будет начать с С/С++. В интернете есть даже такой мем: изучить С++ за 40 дней. Это сложный в освоении язык. Необходимо потратить много времени, чтобы у вас начало что-то получаться и вас стали ценить на рынке. Если вы собираетесь идти в геймдев, то альтернативы никакой нет, придется учить С++. Но, например, в Яндекс можно попасть Java и Python разработчиком.
Хорошие языки для старта
- HTML/JavaScript
Они просты в освоении. На них проще всего почувствовать нравится ли и подходит ли вам программирование. Знания этих языков будут полезны вам в любой выбранной далее области;
- PHP/Python
Тоже просты в освоении. Очень много вакансий с позицией junior. И с течением времени, вы сможете использовать эти знания при переходе на более крутые позиции. Можно сделать карьеру разработчика от junior до senior за 2-3 года, достигнув высоких показателей по зарплате;
- Java/C#
Если вам нужна стабильная высокооплачиваемая работа в банке или энтерпрайс компании, то это лучшие языки для старта. Java является очень популярным языком на протяжении последних 20 лет и, скорее всего, в ближайшие 20 лет он так и останется самым популярным языком на рынке.
С чего проще начать?
-
Сделайте свою HTML-страничку.
-
Попробуйте подключить 1-2 строчки JavaScript, поймите что такое циклы, условия.
-
Прочитайте книгу по любому языку программирования для чайников. В свое время была очень популярна книга “PHP для чайников”. С нее многие начинали и искали свою первую работу после прочтения.
-
Пройдите курсы. Курсы полезны с точки зрения практического опыта.
-
В идеале, пройдите стажировку. Она даст вам много полезного практического опыта, после чего можно будет найти работу в каком-то другом месте, даже если вас не трудоустроят по месту прохождения стажировки. Минусами стажировки может стать fill-time занятость и низкая оплата труда или даже стажировка без оплаты.
-
Устройтесь на работу мечты. Скорее всего, с первого раза у вас это не получится. Первая работа, обычно, дурацкая. Но через полгода-год можно уже пробовать свои силы в той компании, которая вам нравится. Или запустите собственный проект.
Как не нужно делать?
- Не стоит идти в смежные профессии: тестирование или тех. поддержка
Если вы уже в этой сфере, то, конечно, стоит пробовать свои силы в разработке, но если вы юрист или только закончили ВУЗ и не знаете, как строить карьеру, то не нужно выбирать такой сложный и долгий путь. Сразу изучайте программирование, прикладные инструменты и ищите работу программиста. Вполне возможно осуществить это в сжатые сроки;
- Не нужно устраиваться в IT-компанию на другую должность
Например, работа курьером в Яндексе никак не поможет вам устроиться туда же программистом;
- Не надо упарываться трудоустройством в топовую компанию
Скорее всего, в качестве первой работы у вас это не получится. Вы потратите много времени впустую. Лучше всего начать с более простых компаний, где у вас сразу будет зарплата, поколупаться там полгода и затем уже переходить в компанию мечты, имея практический опыт за спиной.
Нюансы работы разработчиком
- Первое место работы не будет долгим
Не стоит рассматривать работодателя в долгосрочной перспективе. В среднем, разработчики переходят из компании в компанию каждые три года. Это связано с тем, что многие компании не умеют повышать зарплату сотрудникам, поэтому самый простой способ двигаться по карьерной лестнице — просто уйти в другую компанию;
- Есть смысл переезжать в Москву и далее на запад
Даже если вы попали на удаленную работу, целесообразно двигаться в направлении развития. Так вы будете расти намного быстрее. И самое главное, это напрямую влияет на зарплату. Разница между зарплатой в регионах и в Москве будет около 50%, и гораздо больше в штатах, если вы туда переедете;
- Не стоит выбирать узкую специализацию
На рынке программисты с широким спектром навыков намного более востребованы, нежели узкие специалисты;
- Развивайте софт скилы
Это даст вам возможность эффективно коммуницировать в компании, понимать друг друга. Чем больше вы растете профессионально, тем меньше будет требоваться знание непосредственно программирования, нежели знание того, как эффективно добиваться результатов в команде;
- Понимайте свою мотивацию
Вам будет проще расти и выбирать ту компанию, которая придется по душе, если вы будете хорошо понимать свою мотивацию. Это, в первую очередь, может сделать вас счастливыми.
Как подготовиться к собеседованию?
Неважно, что вы знаете. Если вы пройдете 20 собеседований, то на 21-е вас возьмут. Независимо от того, программист ли вы, есть ли у вас практические знания или вы никогда этим не занимались.
Можно сделать пустое резюме, вас пригласят в разные компании, вы походите по собеседованиям, поймете, что вас спрашивают и с 20 собеседования вы будете знать, что отвечать на эти вопросы. Стоит начинать с каких-нибудь простых компаний, куда вы не очень хотите устроиться и спустя месяц начать ходить на собеседования в те компании, куда вы реально хотите устроиться. Скорее всего, вас возьмут и дальше все будет зависеть от вас.
Что спрашивают у джунов на собеседовании?
- Тестовое задание
Практически все компании будут просить вас сделать тестовое, его обязательно нужно будет сделать;
- Примеры кодов
Лучше заранее сделать какое-нибудь задание на фрилансе или какой-нибудь pet-project, поработать над ним хорошенько, сделать так, чтобы он выглядел красиво;
- Подготовить ответы на вопросы о вашем опыте и кем вы видите себя через 5 лет
Лучше всего, подготовить красивую и правдивую историю, чтобы ее было интересно слушать. Это важно, потому что эти вопросы дают понять, есть ли у вас какой-то стимул развиваться и на что вы вообще тратите свое время. При собеседовании на позицию джуна работодатель и так понимает, что вы толком ничего делать не умеете, работодатель хочет взять перспективного человека, и эти вопросы как раз покажут то, насколько вы перспективны.
Стоит изучить азы на следующие темы:
- Объектно-ориентированное программирование;
- Базы данных. Не обязательно учить огромный двухтомник по оптимизации SQL, но как делать SQL запросы в базовом виде стоит знать;
- Паттерны проектирования;
- Система управления версиями (Git)
- Базовые возможности языка. Например, как подключаются пакеты PHP.
С этими базовыми знаниями можно решать какие-то практические задачи. Эти вопросы были актуальны и 5 лет назад, актуальны сейчас и будут актуальны в ближайшем будущем.
Хотите узнать ещё больше о работе программистом?
Записывайтесь на наш шестимесячный онлайн-курс «Профессия: Программист» 👉 Узнать подробности!
IT-сфера за последние годы стала синонимом успешной карьеры и высокой зарплаты, поэтому все больше людей хотят «войти в IT», но мало кто понимает, с чего начать и какое направление выбрать. Чтобы не запутаться в сотнях новых терминов и десятках языков программирования, рекомендуем начать свой путь с нашей статьи. В ней мы дадим понятный гид по основным профессиям в этой сфере и необходимым навыкам, простым языком расскажем о профессиональных терминах.
Вот на какие вопросы вы получите ответы в этой статье:
- Какие языки программирования наиболее востребованы в 2023 году?
- Какие существуют основные специализации в сфере программирования?
- Какие языки и навыки нужны для каждой из специализаций?
- Какие дополнительные скиллы нужно прокачивать в сфере разработки?
- Как эффективно стартовать в карьере и не терять время?
- Какие языки самые простые в изучении и подходят для новичков?
- Сколько можно зарабатывать в разных профессиях из сферы ИТ?
- Что выбрать: платные курсы, вуз или самостоятельное обучение?
Основные специализации в программировании
На сегодня можно выделить несколько основных специализаций:
- Веб-разработка.
- Разработка игр.
- Мобильная разработка.
- Разработка десктопных приложений.
- Программирование встраиваемых систем (Embedded-разработка).
- Data Science, программирование искусственного интеллекта, нейросетей, работа с большими данными.
Поговорим о каждом направлении подробнее.
Веб-разработка
Основная задача такого специалиста – разработка сайтов и веб-ресурсов. Интернет растет, а вместе с ним и сфера web девелопмента, из-за чего внутри нее сформировалось уже несколько более узких профессий:
- Front-end. Фронтенд разработчики отвечают за создание пользовательского интерфейса сайтов, если говорить проще – за их внешнюю реализацию. Все кнопочки, меню, плашки на сайте и их адекватное функционирование – это ответственность такого программиста. Для этой профессии необходимо обязательно выучить JavaScript, HTML и CSS (верстка), а также Perl, PHP, MySQL, GIT, фреймворк Django, поработать с WordPress. Иногда такие специалисты совмещают в себе также функции веб дизайнера, поэтому нелишним будет попробовать изучить еще специализированный софт для работы с визуалом.
- Back-end. Специалист отвечает за внутреннюю начинку сайта или веб-ресурса – программно-административную и серверную часть: все то, что обычно остается вне видимости обычного пользователя, но на чем держится функционирование сервиса. Чтобы работать по специальности, нужно учить Python, PHP, Ruby, SQL, MySQL, MongoDB, PostgreSQL, .NET, Haskell, Node.js.
- Full-stack. Это универсальный веб-разработчик, который может работать и над бэкендом и над фронтендом, разбираться с сервером и элементами интерфейса. По сути, он выполняет разработку веб-ресурса под ключ. Соответственно, он должен владеть полным набором навыков этих двух специалистов.
Разработка игр
Game Development или разработка компьютерных игр – это очень интересное направление в программировании, особенно, если вы увлекаетесь геймингом. Естественно, разработчик игр – это очень обширное понятие, и внутри него вы найдёте свои специализации – разработчик мобильных, десктопных игр, MMORG.
Помимо разработки игр с нуля, такой специалист может заниматься поддержкой, обновлениями, исправлением багов, отладкой кода.
Что нужно знать:
- Языки группы С – это может быть C/С++, С# и другие.
- Java со своими библиотеками.
- DirectX / Open GL.
- Игровые движки – Unity, Unreal Engine, Torque.
Также многие практикующие специалисты настаивают на том, что игровой девелопер должен очень хорошо знать математику и физику, так как от этих скиллов зависит то, насколько естественным будет движение объектов в игре, как они будут откликаться на действия игрока.
Мобильная разработка
Специалист этой отрасли занимается созданием мобильных приложений, и здесь у нас также логично вырисовываются две специализации – Android и iOS.
Чаще всего Андроид-разработчик выполняет полный цикл создания приложения, хотя иногда в крупных компаниях присутствует разделение на фронтенд и бэкенд.
Необходимые скиллы:
- Android Studio;
- Java;
- OpenGL;
- Android SDK.
iOS-разработчик создает приложения для устройств Apple, но в целом делает то же самое, что и его коллега с Андроидом. Но здесь есть свои требования к стеку технологий:
- Swift или Objective-C;
- CoreData;
- XCode;
- OpenGL;
- Cocoa Touch;
- CoreGraphics.
Со временем большинство мобильных разработчиков расширяют свои знания и изучают оба направления, чтобы стать более универсальными специалистами. Но на старте лучше не распыляться и выбрать что-то одно.
Разработка десктопных приложений
Десктопные – это те приложения, которые мы устанавливаем на компьютер, а работают они под управлением операционной системы. Работа в этом направлении – один из традиционных карьерных путей айтишника.
В зависимости от особенностей приложения, разработчику могут понадобиться разные языки и дополнительные навыки, считается, что чем больше знает такой специалист – тем луче. Но для уровня junior (младших разработчиков) начните с базы: С++, Java, Python. Если планируете разрабатывать программы для ОС Windows, лучше сделать упор на C# , для Linux – C++, для работы с macOS придется изучить Swift и Objective-C.
Embedded-разработка
Это одно из сложных, и вместе с тем малоизвестных широкой общественности направлений, поэтому сначала нужно разобраться с тем, что из себя представляет Embedded-разработка.
Это узкая специализация, при которой человек занимается встроенным программным обеспечением – обычно его задача не только и не столько разрабатывать его, сколько обслуживать, тестировать, сопровождать, настроить, запускать. Встроенное программное обеспечение – это программы, заложенные в компьютер, которые начинают работать при его включении. Они есть в любой технике с микропроцессорами и микроконтроллерами – в фотоаппаратах, смартфонах, телевизорах и т.д.
Пожалуй, самым ярким примером такого ПО является BIOS. С термином немного разобрались.
Итак, что же нужно знать специалисту в этой сфере? Из языков программирования – MATLAB, С/C++, Ассемблер, Java и подобные. Также необходимо иметь познания в электротехнике, электронике, информатике, математике, алгоритмах, уметь работать с Linux OS, разбираться в аппаратной части и сетях.
Data science и работа с искусственным интеллектом
Такие специалисты работают с большими массивами данных, разрабатывают технологии искусственного интеллекта, нейросети, внедряют машинное и глубокое обучение.
Общепринятым квалификационным стандартом для работы в этой отрасли является знание языков R и Python. Также необходимо будет освоить библиотеки Пайтона – Pandas, PyTorch, NumPy, TensorFlow, Keras, scikit-learn, Matplotlib, и дополнительные инструменты R – Esquisse и Ggplot2, Dplyr, Shiny.
Мы рассмотрели лишь основные направления, есть еще специалисты по работе с базами данных, информационной безопасностью, тестировщики, робототехники, системные администраторы и другие. В любом случае, с основными векторами мы разобрались, осталось понять, какой из них вам понравился.
А чтобы принять взвешенное решение нужно учитывать несколько важных факторов:
- Личные предпочтения, интересы, темперамент.
- Сложность в изучении.
- Ситуацию на рынке труда и уровень зарплаты.
Как найти «свой» карьерный путь в программировании
С одной стороны, все направления программирования имеют несколько общих характеристик – они требуют технических навыков, развитого аналитического мышления, усидчивости, внимательности, длительного сидения за компьютером. Но есть и отличительные черты, которые необходимо учитывать.
- Если вы чувствуете в себе потребность к творчеству и считаете себя креативным человеком, то стоит выбрать направление фронтенд, мобильной или игровой разработки, где вы сможете реализовать этот потенциал.
- Если вам всегда легко давалась математика, вы справляетесь со сложными вычислениями и даже в своей повседневной жизни склонны все систематизировать, отличным выбором для вас станет data science.
- Если вы классический «технарь», любите вникать в суть каждого устройства и программы, разбирая их по косточкам, тогда вам прямой путь в embedded или backend разработку.
- Не знаете, с чего начать и хотите сначала посмотреть на индустрию изнутри – стоит подумать о тестировании программного обеспечения. Чтобы претендовать на вакансии начального уровня не нужно изучать языки программирования, это профессия с низким порогом вхождения, благодаря которой вы окажетесь в эпицентре разработки.
Если вы пока совсем не понимаете, какой вектор развития в IT-индустрии подойдет вам больше всего, рекомендуем формат обзорных вебинаров от SkyPro. Эта площадка на регулярной основе и совершенно бесплатно проводит вебинары с экспертами в программировании и смежных специальностях, на которых они рассказывают об особенностях профессии изнутри, требованиях работодателей и реалиях индустрии, дают базовые знания по теме.
Вот несколько примеров таких вебинаров:
Frontend разработка: создаем сайт с нуля
Даст возможность познакомиться с несколькими языками программирования – HTML, CSS, JS и на практике создать посадочную страницу.
Кто такие аналитики данных и почему это самый короткий путь к удаленной работе
Воркшоп, который даст понимание требований к специалисту, особенностей этой профессии и развития в ней, помогает разобраться с тем, что такое фриланс и как работать фрилансером на удаленке.
Быстрый старт в профессию тестировщика
3-дневный интенсивный курс, который даст понимание рутинных задач специалиста и первый опыт создания баг-репортов, поможет узнать, как сделать первый шаг в профессии, пройти путь от стажёра до senior специалиста.
Такой формат поможет не только с получением знаний, он даст возможность познакомиться с экспертами в вашей отрасли, найти единомышленников, которые сейчас проходят тот же путь, что и вы. Вы не будете одиноки на непростом пути получения новой профессии.
Самые легкие ЯП для изучения
Каждый из языков программирования имеет свой синтаксис, уникальные особенности, теги, плюсы и минусы, но в целом – их многое объединяет. Поэтому каждый последующий язык изучается проще предыдущего.
В качестве примера хотим показать, как будет выглядеть синтаксис «Hello World» на разных ЯП:
Python:
print(“Hello, World!”)
PHP:
<?php
echo “Hello, World!”;
?>
Perl:
print “Hello, World!n”;
JavaScript:
<!DOCTYPE HTML>
<html>
<body>
<script>
alert( ‘Hello, world!’ );
</script>
</body>
</html>
Java:
class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}
C++:
# include <iostream>
using namespace std;
int main()
{
cout << “Hello, World!”;
return 0;
На этот простом примере можно понять, что есть более лаконичные в синтаксисе языки, а есть – развернутые и более сложные. Те, которые будут просты в изучении на старте, и те, которые лучше оставить на потом. Мы составили топ языков программирования, которые лучше всего подходят для новичков.
С
С и его производные – это одна из самых популярных групп, которая, к тому же, имеет очень широкое и разнообразное использование. Опытные разрабы говорят, что знать С программисту так же важно, как врачу знать базовую анатомию. Этот ЯП позволяет понять, как программы взаимодействуют с оборудованием, изучить тему на самом низком уровне, понять общие принципы работы компьютеров.
Хотя этот язык не назовешь абсолютно простым, и возможно не всем он подойдет в качестве первого для изучения, но его точно стоит внести в свой топ-3 или топ-5.
Низкоуровневый ЯП, которому необходим компилятор.
Java
Многие считают его лучшим вариантом для старта, а также самым практичным среди ЯП. Его освоение даст новичку фундаментальное понимание объектно-ориентированного программирования, а его принципы применяются во многих современных языках, таких как C++, Perl, Python, PHP. Он сам достаточно прост в изучении, а также облегчает изучение других языков, построенных на ООП.
Еще одно его важное преимущество – это обширная практика, благодаря которой появилось много шаблонов, паттернов и готовых решений практически на все случае жизни.
Принадлежит к строго-типизированным, мультипарадигмальным ЯП.
JavaScript
Еще один очень популярный вариант для новичков, который имеет понятный синтаксис, не требует сложных настроек IDE (среды разработки) для старта работы, поскольку встроен в браузеры. Также чистый JavaScript – это очень наглядный язык, позволяющий быстро понять, как реализуется написанный вами скрипт.
Если вам интересно работать над веб-проектами, и вы хотите создавать интерактивные элементы, точно стоит начать именно с JS. Если вы до этого работали верстальщиком и знали язык гипертекстовой разметки и CSS, то джаваскрипт также станет логичным продолжением в совершенствовании ваших навыков.
Кроссплатформенный, высокоуровневый ЯП, исполняет код при помощи интерпретатора.
Python
Пайтон также станет беспроигрышным вариантом для старта, поскольку он многофункционален (используется и для написания компьютерных программ, и для data science), имеет простой, понятный синтаксис без излишней строгости. Написание кода на нем не требует много времени и строк. Кроме того, в последние годы его востребованность только растет.
Самые востребованные языки программирования в 2022 году
Сегодня в мире существует несколько сотен programming languages, но широким кругом разработчиков используется лишь несколько десятков. Список наиболее востребованных и популярных языков динамичен и регулярно обновляется, чтобы специалисты и новички в этой сфере могли понимать тенденции рынка.
Отслеживанием популярности языков программирования занимаются такие рейтинги, как TIOBE, PYPL, IEEE, Stack Overflow Annual Developer Survey, Google Books Ngram Viewer. Если вы хотите отслеживать актуальные тенденции, советую добавить их в закладки и периодически просматривать, это упростит понимание рынка труда.
В рамках этой статьи мы лишь коротко обозначим десятку самых популярных ЯП в мире:
- Языки C, C++, C#.
- Java.
- Python.
- JavaScript.
- PHP.
- R.
- Swift.
- Matlab.
- Kotlin.
Если вы хотите подробнее разобраться с рейтингами и популярными языками, рекомендую к прочтению нашу статью «Самые популярные языки программирования | ТОП-15 Лучших»
Рынок вакансий и заработная плата
Смена профессии и изучение чего-то нового всегда требуют от нас усилий, времени, а иногда и финансовых вложений, если вы решили пойти на платные курсы. В любом случае – вы тратите свои ресурсы, поэтому очень важно убедиться в том, что старания не напрасны. А для этого важно понимать, нужны ли такие специалисты работодателям, и сколько они готовы им платить.
О том, что сфера ИТ прибыльная и востребованная, лишний раз напоминать не будем, лишь приведем последние данные статистики Хабра за 2021 год:
Согласно этому исследованию Хабра, зарплаты программистов по основным языкам распределились следующим образом:
А по направлениям деятельности вот так:
Чтобы понять, какие профессии наиболее востребованы работодателями, обратимся к крупнейшему сервису вакансий HeadHunter. По их данным (за 2019 год) список самых востребованных специалистов возглавили фронтенд, PHP и Java разработчики.
Hard Skills разработчика
- Знание языков программирования.
- Понимание алгоритмов и умение работать с ними для поиска, сортировки, сжатия данных.
- Умение работать с фреймворками и библиотеками ЯП, это позволит упростить многие задачи, выполнять их быстрее и эффективнее.
- Умение работать с системами управления версиями. Это даст возможность без потерь вернуться к ранней версии проекта.
- Способность читать и понимать чужой код, а также техническую документацию.
Soft Skills разработчика
HR-специалисты акцентируют все больше внимания на гибких и дополнительных компетенциях соискателя. Сейчас считается, что они не менее важны для эффективной работы и для продвижения по карьере, чем hard skills или сугубо профессиональные навыки.
Для сферы разработки необходимо совершенствовать такие дополнительные компетенции:
- Английский язык. Сегодня большинство IT-компаний имеют клиентов-иностранцев или держат в штате сотрудников из разных стран, поэтому без языка международного общения вам не обойтись. Кроме того, очень много новой литературы, профессиональных статей и дайджестов выходит именно на английском.
- Стрессоустойчивость. Работа программиста только на первый взгляд кажется спокойным сидением за компьютером. На деле – это постоянные дедлайны, повышенные нагрузки, необходимость быстрого реагирования на кризисные ситуации или поломки.
- Эмоциональный интеллект и умение работать в команде. Один из важнейших гибких навыков современного разработчика. Сегодня многие продвинутые курсы даже включают работу над командным проектом, чтобы проработать со студентами их слабые места в этом аспекте. От этого качества зависит не только личная эффективность, но и успех всего проекта.
- Тайм-менеджмент. В большинстве компаний работа программиста строится на отдельных задачах, которые он должен выполнить в установленное время. И тут очень важно придерживаться личной дисциплины и грамотно распределять свое время, понимать, сколько времени у вас займет выполнение той или иной работы.
- Любознательность. В сфере разработки профессиональные знания устаревают быстрее, чем растет бамбук. Поэтому, чтобы оставаться в курсе актуальных технологий и трендов отрасли, специалист всегда должен учить что-то новое, развиваться.
Hard Skills и Soft Skills: что это такое, примеры, различия +самые востребованные навыки 👈
Форматы образования: вузы, курсы, самообучение
Теперь вы можете наметить для себя примерную цель, понять, в каком направлении программирования хотите развиваться, с какого языка начать изучение. И тут возникает следующий важный вопрос – как учиться и где искать полезные знания? У нас есть несколько вариантов:
- Традиционное вузовское образование. Займет 4-5 лет.
- Самообучение. В среднем занимает 1-1,5 года до получения первой работы.
- Курсы. Могут длиться от нескольких месяцев до полутора лет. Но при длительной программе предполагается, что студент начинает искать первую работу еще в процессе обучения. Уже через полгода вы сможете претендовать на позицию джуниор, а после окончания курса, имея опыт работы, на позиции мидла.
Разберем подробно все «за» и «против» каждого формата.
Традиционное образование
Преимущества:
- Дает сильную теоретическую базу и понимание фундаментальных основ, логики и искусства программирования.
- Выпускники хорошо разбираются в математике, общих технических компетенциях, поэтому любые новые знания в программировании им даются легче. Вас научат базе, что существенно упрощает дальнейшее развитие в отрасли.
- Для многих работодателей диплом профильного вуза является важным фактором при оценке соискателя.
Недостатки:
- Обучение занимает много времени.
- Государственные стандарты образования не успевают адаптироваться к стремительным изменениям отрасли, поэтому выпускнику, скорее всего, придется учиться самостоятельно, чтобы догнать тренды.
- Высокая стоимость обучения, тут и калькулятор не нужен, чтобы понять – это не самый экономный вариант.
- В образовательном процессе много общих знаний, дополнительных предметов, которые не связаны с профессией и не пригодятся в будущем.
- Большая нагрузка не всегда дает возможность подрабатывать параллельно.
- Обучение оффлайн.
Самообучение и бесплатные курсы
Преимущества:
- Это совершенно бесплатно.
- Можно учиться онлайн.
- В интернете много полезной информации в открытом доступе.
- Вы можете самостоятельно формировать свою программу обучения, выбирая только то, что необходимо вам в профессии.
Недостатки:
- Нужно обладать хорошей самодисциплиной. Часто мы начинаем что-то изучать, но не имея четкого расписания и контроля, со временем начинаем забивать и откладывать это на потом. В результате – обучение занимает очень много времени и не дает ожидаемый результат.
- Сложно оценить качество образовательного контента. Будучи новичком в теме, вы не всегда сможете понять, полезная ли перед вами информация, насколько она актуальна и применима в работе.
- Нет наставника или хотя бы сокурсника с которым можно обсудить тему, задать уточняющие вопросы, разобрать свои ошибки.
- Нет документальных подтверждений ваших знаний для работодателя.
Платные курсы
Преимущества:
- Есть преподаватели, менторы, которые помогут в трудные моменты обучения, укажут на твои ошибки и расскажут, как их исправить. В целом – помогут научиться грамотно программировать.
- Структурированные видеоуроки, разработанные практикующими специалистами.
- Часто платные курсы помогают пройти собеседование и устроиться на работу, организуют стажировки, консультации с рекрутерами, дают инструкции по составлению резюме.
- На курсах упор в обучении дается на практические навыки и работу на портфолио, поэтому после выпуска у вас будет не только диплом, но и готовые проекты, которые можно показать работодателю.
Недостатки:
- Это дорого.
- Можно попасть на низкокачественные курсы, которые льют воду и не дают полезных знаний.
Какой вывод из этого можно сделать? Вариант вузовского образования хорош для школьников, но если вы хотите сменить профессию уже во взрослом возрасте или начать зарабатывать как можно быстрее, образование в ВУЗе будет не самым удачным выбором. Необходимой базе можно обучиться гораздо быстрее в других форматах.
Формат самообразования вполне имеет право на существование, и многие успешные сегодня программисты учились сами, когда интернет еще не был заполнен десятками курсов и сотнями профессиональных сайтов. Но выбирая этот путь, нужно быть уверенным в своих навыках самоорганизации, личной дисциплине и упорстве, поскольку перспективы стать разработчиком несколько ниже: на старте карьеры вам придется сложнее, чем выпускникам вузов и платных курсов.
Самый сбалансированный вариант – это платные курсы. Они позволяют получить актуальные навыки, делают это довольно быстро и помогают своим студентам в начале пути. Но не стоит считать, что это панацея, вам все равно предстоит много учиться, ведь дипломный проект и экзамены за вас никто сдавать не будет и на работу за ручку не отведут.
Чек-лист для самообучения
Если вы уверены в своих силах и решили изучить язык программирования самостоятельно, очень важно составить четкий план действий, понять, что именно вы будете изучать и в какой последовательности.
Вот чек-лист, который поможет вам спланировать свой процесс самообучения после того, как вы определитесь с направлением и языками программирования:
- Изучаем сайты с вакансиями, записываем требования работодателей, можно просмотреть дополнительно статьи о профессии, в которых дается обзор необходимых навыков. Главное – после этого анализа получить четкий список компетенций, которые вам предстоит изучить.
- Далее начинаем искать источники информации – бесплатные курсы, вебинары, профессиональные блоги, статьи, книги. Сделайте себе подборку полезных материалов и ссылок по каждой теме в вашей программе обучения.
- Составьте себе расписание и старайтесь придерживаться его. Позиция «буду учиться, когда появиться свободная минутка» – не работает. Чтобы получить результат, занятия должна быть регулярными. Старайтесь учить не только теорию и читать книги, оттачивайте свои навыки на практике, тренажерах, чтобы лучше понимать свой уровень и возможности, также просматривайте примеры кода других разрабов на Github.
- Найдите наставника. Если в вашем окружении будет человек, к которому можно обратиться в моменты сложностей – это большой плюс. Если нет претендентов, можно поискать на специализированных форумах, где часто сидят опытные разработчики, которым несложно помочь новичку.
Когда вы поймете, что получили достаточно знаний и опыта для уровня джун, попробуйте искать первые заказы. Очевидно, что самоучка на старте карьеры имеет меньше опций, чем выпускник с дипломом, поэтому не стоит ждать, что вы сразу найдете работу своей мечты. Ищите первые заказы у знакомых, друзей, даже если вы на них не сможете заработать. Также можно пробовать устроиться в заинтересованные стартапы. Они часто ограничены в бюджете и могут брать новичков с минимальным опытом на выполнение несложных задач.
Как выбрать платные курсы
Если вы знаете, что дисциплина – это не ваша сильная сторона или вы не получили желаемый результат в рамках самообразования, стоит задуматься о платных курсах. Сегодня образовательные программы по программированию представлены на десятках площадок: SkyPro, Geekbrains, Skillbox, SkillFactory, Академия Яндекса и Яндекс.Практикум, Udemy, Coursera, Otus, Нетология, HEDU, Code Academy, курсы ИТМО и т.д. Внимательно изучите учебный центр и саму программу. Мы советуем обращать внимание на такие факторы:
- Сама программа обучения. Внимательно изучите все заявленные темы, сопоставьте их с актуальными требованиями на рынке труда. Убедитесь в том, что на курсе будет не только теоретическая база, но и практические знания.
- Изучите лекторов. На лучших видеокурсах вас будут учить практикующие специалисты из топовых компаний, которые хорошо знают реалии профессии, смогут поделиться практическим опытом, кейсами, лайфхаками. Узнайте, будете ли вы общаться с ними напрямую, дается ли возможность задавать вопросы, потрудились ли выделить вам менеджера для решения организационных вопросов.
- Политика в отношении трудоустройства. Отдавайте предпочтение площадкам, где выпускникам помогают с поиском первой работы, организуют стажировки, проводят консультации по составлению резюме и поведению на собеседованиях.
- Изучите отзывы на независимых площадках.
- Посмотрите, какой диплом вы получите после прохождения курса – хорошо, если это не просто корочка, а документ установленного образца.
- Ценовая политика. Полноценный курс, который дает глубокие знания не может стоить дёшево, но площадка может проявить лояльность к своим студентам, предлагая рассрочку, скидочные опции или отсрочку первого платежа.
- Думайте про портфолио. Многие курсы программистов включают работу над реальными проектами, которые можно добавить в портфолио и показывать работодателю – выбирайте их, и тогда вы уже не покажетесь неопытным новичком.
✅ Каталог курсов и отзывы о них
Где работать программисту?
Программисты сегодня нужны практически везде – малому, среднему и большому бизнесу в самых разных сферах деятельности, от медицины до банков и торговли. Но можно выделить несколько основных вариантов трудоустройства:
Компании-аутсорсеры
Это специализированные ИТ-компании, которые имеют штат разработчиков и выполняют проекты на заказ у разных клиентов. В первую очередь, они привлекают внимание новичков тем, что здесь вам не нужно самостоятельно искать заказы.
В идеале вы попадаете в комфортную рабочую атмосферу, где клиентов находят менеджеры, затем тимлидеры формулируют для вас четкие и понятные задания, а также рядом с вами есть более опытные коллеги, у которых можно спросить совета, или которые будут проверять ваш код. Это все еще может дополняться корпоративными бонусами в виде бесплатного кофе и обедов, тимбилдингов и корпоративов.
Но у такой работы есть и свои подводные камни. Во-первых, вы не выбираете задачи и проекты, над которыми будете работать. Во-вторых, некоторые компании намеренно заваливают новичков однотипными задачами, чтобы те не получали полноценного развития и не начинали требовать больше денег или искать более привлекательную вакансию. Будьте внимательны к этому нюансу и не позволяйте тормозить себя.
Фриланс
Противоположный вектор в карьере разработчика, при котором вы отправляетесь в свободное плавание поиска заказов. Чаще всего их ищут на специализированных биржах, таких как Upwork, Weblancer, Kwork, FL.
Главный недостаток этого формата работы – у вас нет гарантированной стабильности. На старте карьеры, когда вы еще на наработали себе репутацию и портфолио, конкурировать на биржах сложно, иногда приходится соглашаться на заказы с низкой оплатой, а иногда и такие не удается ухватить. Если вы хотите работать на фрилансе, очень важно иметь хорошие коммуникативные навыки, поскольку вам предстоит напрямую общаться с заказчиком, нужно упорно формировать свою репутацию.
Если все сработает, со временем перед вам откроются все бонусы такой работы – возможность выбирать интересные проекты, быстрее повышать стоимость своих услуг и работать с иностранными заказчиками, и, конечно, самое сладкое – вы сможете работать сколько хотите, когда хотите и откуда угодно. Но этот вариант действительно подходит не всем, нужно быть очень дисциплинированным, пробивным, дружить с тайм-менеджментом, уметь договариваться.
Небольшие компании и стартапы
Работа в небольшой компании или стартапе может стать отличным вариантом для новичков, поскольку здесь гораздо ниже требования к соискателям. Велика вероятность, что вы будете единственным специалистом в своем направлении на весь штат, а это значит – больше возможностей для развития, но и больше ответственности.
Главный недостаток таких компаний – это нестабильность и заниженная зарплата. Стартап может в любой момент прогореть, а маленькая компания – не выдержать конкуренции.
Банки и крупный бизнес
Специфика таких компаний в том, что они, чаще всего, хотят брать в свой штат уже опытных программистов, поскольку ИТ-отдел – это лишь маленькая и непрофильная часть в их структуре, никому не интересно тратить дополнительные ресурсы на обучение новичка.
Бизнес хочет получить сотрудника, который придет с багажом знаний, опыта и со старта сможет решать проблемы этого бизнеса. Обычно в этой сфере хорошие зарплаты даже по меркам программистов.
Минусы тоже есть. Первый – в штате компании большинство людей вообще ничего не понимают в программировании, но вы можете столкнуться с ними по рабочим вопросам, а может и будете выполнять их задания. Второй – большая ответственность, в том числе финансовая.
Продуктовые компании
Работа в ИТ-компании, которая работает не на аутсорс, а занимается созданием и развитием своего продукта – это очень хороший опыт для каждого программиста. Обычно в таких компаниях больше внимания уделяется качеству и эффективности решений, а не скорости их выполнения и экономии бюджета. Также вы сможете видеть свой реальный вклад в развитие общего дела всей команды.
Но не факт, что вы сможете устроиться сюда на старте карьеры, поскольку требования к специалистам несколько выше, чем не том же аутсорсе.
Как получить свою первую работу?
Поиск первой работы по новой специальности всегда самый сложный. Еще никому не удавалось пройти этот через это, не потеряв годовой запас нервных клеток. Особенно, если вы самоучка и не можете показать работодателю даже бумажный сертификат.
Что говорить на собеседовании?
Рекрутеры говорят, что самыми вескими аргументами для новичка будут следующие:
- Хорошее знание теории. Покажите, что вы идеально знаете теоретическую базу, и сможете применить ее на практике.
- Английский язык. Это станет большим плюсом, поскольку вы сможете напрямую общаться с иностранными клиентами или сотрудниками и быстрее осваивать новые навыки.
- Мотивация. Если компания увидит, что вы действительно заинтересованы в этой работе учиться, это может сыграть вам на руку.
- Свой опыт в другой работе. Неважно, чем вы занимались до этого, если вы сможете доказать на собеседовании, что вы зарекомендовали себя ответственным и ценным сотрудником – это большой плюс. Адекватность ценят на любой работе.
Что писать в резюме?
Как бы смешно это не звучало, но многие кандидаты отсеиваются уже на первой строчке своего резюме, потому что пишут там совсем не то, что нужно. В названии вашего резюме должны быть четко указаны ваши ФИО, а также должность, которую вы хотите получить.
Если вы претендуете на вакансию веб-разработчика, уместно сделать резюме в формате сайта-визитки, чтобы сразу показать свой уровень. В других ситуация – это может быть файл Doc или PDF.
Чек-листы информации в резюме:
- Ваше фото и контакты.
- Места, где вы учились, получали дополнительные знания.
- Не советуем копировать текст из раздела требований к соискателю и вставлять его в раздел «Мои знания и навыки». Лучше пишите то, что вы действительно знаете и умеете, это все-равно проверят.
- Если у вас нет опыта работы, вместо него напишите, сколько времени вы практикуетесь с тем или иным языком программирования или технологии. Например: «Полгода практики в JS, 1 год верстаю на HTML/CSS».
Как общаться с рекрутером?
Если вы хорошо составили резюме и вас пригласили на собеседование, не спешите расслабляться. Самое сложное только начинается. На этом этапе важно постараться подготовиться к вопросам HR, в том числе каверзным, а также – подготовить свои собственные вопросы.
Какие вопросы обычно задают на собеседовании новичкам:
- Понимая ваш начальный уровень, больше внимания будет уделяться теории, а не практике.
- Большинство рекрутеров спрашивают, почему вы решили искать работу в этой компании, поэтому советуем изучить информацию о ней перед собеседованием.
- Часто соискателя предлагают решить логические задачи. Не стоит чрезмерно переживать насчет правильности ответа – их главная цель посмотреть, каким будет ход ваших мыслей, как вы сможете объяснить свои умозаключения.
- Из практических задач нередко проверяют знание алгоритмов поиска, сортировки, умение работать со строками и списками, оптимизировать готовые решения. Часто спрашивают о принципах ООП, командах Git, базовых SQL-запросах. И, конечно, будут вопросы по языкам программирования, которые требуются для работы.
Хотим акцентировать внимание на том, что собеседование – это не только проверка на ваше соответствие требованиям компании, это работает и в обратную сторону. Не стесняйтесь задавать вопросы рекрутеру, озвучивать свои желания, чтобы не оказаться заложником своей скромности и не страдать потом на работе, которую вы так хотели получить.
Где искать работу?
Помимо общих сервисов с вакансиями, таких как HeadHunter, RussiaTrud, разработчики могут искать вакансии на профессиональных ресурсах:
- Хабр Карьера;
- Vc.ru;
- Proglib;
- DOU.
Теперь у вас есть достаточно информации не только для размышлений, но и для принятия взвешенного решения о своей будущей профессии. Самое главное – не отступать от своей цели, иметь запас терпения и не останавливаться на достигнутом! Так что, выберите для себя оптимальный способ научиться скиллам разработчика и не ленитесь.
Вам предстоит прочитать десятки книг, гуглить туториалы, решать несложные и сложные задания, посещать митапы, перечитывать учебник бессонными ночами, разбираться в технической документации.
Потребуется немало усилий, чтобы найти клиентов, придется потратить уйму времени чтобы наработать портфолио, но результат того стоит – вы станете профессионалом в самом востребованном и высокооплачиваемом карьерном направлении, получите работу, о которой мечтали!
Главное, вкладываться в ваше обучение, в первую очередь, своим интересом и любознательностью, ведь 21-й век открывает невероятные возможности для смелых и настойчивых – сегодня можно стать топовым экспертом в своей отрасли не только без диплома Гарварда, но и высшего образования в принципе.
Надеюсь, статья поможет разобраться с основами и выстроить правильную стратегию к обучению.
Решился рассказать, как я прошел нелегкий путь к профессии программиста из диаметрально противоположных областей. Кто-то с детства тяготел к компьютерам и узнав, что есть возможность что-то написать некой загадочной последовательностью слов, символов и машина-программа-компьютер будет выполнять пусть и простые, но задуманные тобой действия, был сражен окончательно и выбор жизненного пути был определен. Наверное, это большое счастье и удача, пожалуй для любой профессии, без поправки на нашу сферу. У меня было совсем иначе — я до последнего момента не знал, кем хочу быть. Нет, это вовсе не значит, что я ленивый или ограниченный, скорее наоборот — я с огромным интересом погружался во все науки, мне было комфортно и в точных, и в гуманитарных дисциплинах, занимался всеми доступными мне видами спорта и был во всем этом в каком-то смысле успешен.
Но как и бывает, выбор профессии (точнее сказать, места учебы) остался на последний момент. Обычно в таких ситуациях дети идут по стопам родителей, в ту область, где есть шанс удержаться на плаву в водовороте жизни, либо, денежно-рейтинговую сферу, в мое время это были юристы-экономисты. Проживая, в провинциальном сибирском городке я решил идти на робототехнические системы. Было это, что тогда, что сейчас каким-то безумием, вызывавшим при этом парадоксальным образом всеобщее одобрение и слова поддержки. Конечно там были прекрасные заблудившиеся простые честные ребята, но даже несмотря на успешную учебу и отличный коллектив пришлось все это бросить, меня как и многих в то время накрыла предпринимательская деятельность и я перевелся на другой факультет, где мог больше заниматься работой. Это принесло мне в целом возможность вести достойную жизнь, приобрести машину-квартиру, помочь родственникам.
Но меня не оставляла ни на секунду мысль, что все это ничтожно и должно быть стыдно посвящать этому трудовую деятельность. Позже я уже закончил другую специальность – экономическую, тоже с отличием, поступил в аспирантуру в надежде получить новый вызов, быть полезным обществу, иметь возможность заниматься уже экономикой своего региона. Но и здесь ждало разочарование и ощущение пустоты и полной ненужности своих трудов. В итоге было решено с моей супругой отправиться в Москву, сменить обстановку, получить новый опыт. Тут в целом пошло достаточно ровно, мы обосновались в отличном районе в центре города, оба устроились, помогали родным и строили планы на будущее.
Но потом наступила черная полоса, начался кризисный период да еще и я к сожалению заболел. А так как никогда в жизни, за исключением студенческих подработок, не имел даже 100 рублей гарантированного дохода, то пришлось особенно непросто. Я уже начал шерстить рынок вакансий менеджеров по продажам, банковских служащих, мелких госслужащих, но понимал, что это жуткий тупик для меня, при всем уважение к огромному количеству достойных людей в этих профессиях. Нужно было решиться на перемены, я боялся пополнить армию ворчунов, ели сводящих концы с концами и ненавидящих свою работу, власть, систему и винящих в этом всех кроме себя.
И тогда я решил прислушаться к себе, что мне сейчас будет по душе, что я хочу делать в данный момент жизни? Я устал заниматься по большей части юридической деятельностью и мне по душе была именно техническая работа, я всегда к этому был ближе всего и находил гармонию. Не то, что я необщительный, но именно кропотливо сидеть над чем-то, произвести кучу расчетов и вычислений, прикинуть все варианты, принять решение, ошибиться, найти, где ты совершил ошибку и исправить и сделать все правильно — это моя стихия. Находиться в достаточно четких границах и системах координат и не зависеть от изменчивого экономического курса страны. Это была моя цель. А профессию я уже решил подогнать под это.
После длительных размышлений по этому поводу, стало ясно — лучше всего на данный момент программирование: стабильность, активный рост вакансий даже в кризис, мои предпочтения по течению рабочего процесса. Никаких золотых гор по сравнению со многими другими отраслями как-то не ощущалось, искренне не понимал, не понимаю тех, кто пошел в эту сферу ради шестизначных цифр. Осталось самое легкое — научиться программировать! Меня с юности как-то отпугивали ребята, кто выбрал путь этой профессии: какие-то странные, со своими тараканами, немного запуганные и неряшливые) может мой образ несколько собирателен, но в большинстве это было именно так! Были и хорошие черты — это живой ум и отличное чувство юмора. Почему такой внимание я уделил всем этим внешним атрибутам? Работать придется с людьми прежде всего, и важно быть с ними близкими в чем-то…
Встал вопрос, а как мне выучиться программировать и что нужно для билета в этот чудный новый мир. Побеседовал с HR-ом, связанным именно с этой предметной областью, рассказал, что конечно в институте, школе программировал, но это было в качестве учебной программы (хотя я ходил на курсы в школе и даже писал что-то для себя, но это все было между делом без фанатизма). Ответ мне был такой, выучи SQL и иди работать тестировщиком, туда берут почти. Меня это воодушевило! Я открыл какие-то курсы на ютьюбе, стал по вечерам создавать схемы, таблицы, делать запросы. Решил заодно попрактиковаться в изученном в институте C++, все уроки брал там же.
Потом начал втягиваться, решил почитать истории успеха, как, кто и куда устроился. И все ссылки стали выпадать с рекламой каких-то курсов, с обещаниями трудоустройства и прекрасными перспективами. И самое главное: тут так легко, обучиться может любой, особо думать не надо. Меня это уже начало смущать, ну не может быть так просто и я решил начать курс для интереса. В бесконечном потоке комментариев на разных сайтах и соцсетях пару раз наткнулся на упоминание о странном название ресурса Хекслет, и все писали о них что-то адекватное и уважительное, не в духе «Никогда программированием не занимался, а учиться к ХХХХ пойду, обучение для народа». Зашел я к ним на сайт, посмотрел один вебинар, другой и понял: во-первых, судя по авторам и как все сделано, тут ребята явно не миллионеры и особо за деньгами не бегут, во-вторых никаких липовых гарантий и фальшивых лозунгов (было что-то про стажировку, но потом сделали даже лучше), в-третьих это то, что привлекло больше всего — главное фундаментальная подготовка и никаких синьоров-помидоров за один месяц две недели и двое выходных. Ну и цена в 700, что ли, рублей купила меня с потрохами. В итоге я прикинул, что тут и начнется большая игра, и поставил свои 14$ на эту лошадку. Здесь уже можно брать отсчет моему обучению.
Вся учеба прошла на каком-то древнем ноутбуке, который я брал почти 10 лет назад. Он тормозил иногда безумно даже от пары вкладок в хроме! Забегу вперед, что помогло — так это знание английского, без него я бы сошел с ума, особенно учитывая, что на первом этапе на тебя сваливается сотни неизвестных терминов и выражений, большинство из которых просто заимствование иностранных слов и их использование повсеместно даже при наличии привычных русскоязычных синонимов. К этому вообще надо привыкнуть, любая специализация полна профессионализмами, здесь же это принимает поистине космический масштаб. Также математическая база сильно меня выручала, здесь она не настолько сложна и многогранна, как во многих инженерных, все же там высшая математика намного серьезнее, как минимум сложных дифференциальных/интегральных вычислений, математического, векторного анализа здесь нет и в помине. Может есть специфические области, где это и нужно, но такого объема, как для любого среднего инженера и экономиста тут точно нет, пусть программисты не лукавят, хотя это мое личное впечатление и может в будущем меня ждет какое-то откровение — пожалуйста.
Первые шаги давались легко, благо был удобный онлайн редактор кода с тестовыми проверками, все очень наглядно и удобно! Сложности пошли с настройки среды, в это я включаю переход на линукс, с ним никогда не имел дело. Пришлось потратить время на его освоение и понимание необходимости. Работа с терминалом, Bash сразу ставилась, как одно из самых важных в последующей работе. Пришлось пройти по нему дополнительные курсы на другом ресурсе и привить себе привычку совершать все манипуляции на компьютере с помощью командной строки. Честно говоря всегда раньше казалось какими-то заклинаниями и магией те наборы букв и символов, которые совершают необходимые действия их автору, хотя так кажется и до сих пор. Очень много мне дал суперполезный чат, сообщество учащихся, где обсуждаются многие непонятные для новичка вопросы. Хотя такая характеристика скорее не отражает всей полноты того, чем эта площадка в итоге стала для меня и думаю организаторов. Один из авторов курса очень верно подметил важнейшую часть учебы — это постоянное взаимодействие с другими учениками. Не с преподавателями, а такими же студентами. Это очень помогает, ведь другие делятся способами усвоения материала, пытаются помочь объяснить сложные моменты своими словами, параллельно через это объяснение сами усваивая материал, делятся своими историями преодоления лени, неверия в свои силы и результат.. Тут вскипали споры на кучу разных тем, которые помогали разобрать авторы и эти дискуссии открывали чакры лучше перечитывания кучи спеков и документаций.
Радует, что многие из этих бесед доступны для прочтения и можно вернуться к ним снова. Очень понравилось то, с каким рвением авторы курса отстаивают и доказывают важность чтения фундаментальной и популярной литературы не сколько по самому программированию, а по важным околокомпьютерным вещам, которые дают понимание того, каким должен быть профессиональный программист, на чем требуется делать акцент в своей работе, к каким идеалам нужно стремиться. Плюс декларирование важности функционального, автоматного программирования, рекурсивных вычислений, важности разработки через тесты, понимание которых сформировало мое, как я надеюсь, правильное мышление в этой области. Благодаря этому мой интерес к профессии рос вместе с количеством изученного материала.
Были моменты, когда казалось, что моё обучение будет длиться вечно, а мои друзья и близкие до самого конца были в полной уверенности, что это просто пустая трата времени. Они говорили примерно следующее: как такой сложной профессии можно обучиться удаленно, ни разу не видя авторов лично, тем более у непонятной конторы да ещё и за такой короткий срок (хотя у меня вышло примерно полтора года). Мне признаться честно тоже было страшно и я в какой-то момент тоже был на грани того, чтобы бросить все это. Особенно нелегко мне пришлось, когда мы с женой узнали, что ждем ребенка. В этот момент мне было важно сделать окончательный выбор — продолжать учебу или искать что-то стабильное и с гарантированной зарплатой. Учитывая, что полагаться нам не на кого, это было непросто, но я уже так отчетливо видел себя в этой профессии, что решил идти до конца (хотя потом были моменты когда я внимательно вчитывался в объявления в метро о наборе машинистов, думал сесть за руль такси, находил плюсы в работе курьером и говорил себе, что и там можно зарабатывать) В этот момент были анонсированы так называемые проекты в дополнение к пройденным курсам — это полностью реальный программный продукт небольшого объема сделанный по всем основным актуальным требованиям. Это было то, что нужно! К тому моменту я уже почти закончил проходить курсы по PHP, но ради этого сразу перешел на изучение JS, проекты были только в по нему.
В итоге за 9 месяцев я прошел путь по всем курсам и проектам и закончил все ровно в тот день, когда стал отцом! Но это было началом другого сложного этапа — устройства на работу. Хоть мне очень помогли с составлением резюме и дали много дельных советов по поиску компаний, было непросто найти кого-то кто бы пригласил меня. Тут, наверное, все мои страхи вылезли наружу! Мне казалось, что я приду на собеседование и мне скажут: «Да кто тебя этому научил? Ха-ха, ты же не знаешь простейших вещей!» Ведь я все еще ни разу ни с кем не говорил о программирование и все крутилось в моей голове и на экране компьютера. Может это и глупо, но у меня все еще было опасение, что это некий мираж! Хотя в октябре я успел поучаствовать в открытой акции от гитхаба, где требовалось сделать несколько пулреквестов в открытые проекты, это дало возможность немного поучаствовать в пусть и небольших, но реальных проектах. Все же я жутко боялся!
Один раз я поговорил по скайпу с каким-то HR-ом, потом мне позвонили с другой компании и пригласили на собеседование, их привлекло, что я больше был ориентирован на бэкенд. Я пришел на встречу минут на 40 раньше, походил вокруг здания немного, переживания были ровно до того момента, как мне предоставили лист с тестовыми вопросами. С этого момента всё было хорошо, я решил почти все задания! Правда в конце разговора я сказал, что готов работать хоть за какие деньги)) В итоге мне сказали, что со мной свяжутся по телефону. Эти дни были полны надежд, я уже видел себя в этой конторе… В итоге спустя неделю мне позвонил незнакомый номер, через 5 минут я закончил разговор и обнял жену и сына. С понедельника я вышел на работу.
Было волнение, когда пришел на работу в первый день, но коллектив оказался замечательным, меня отлично приняли и дали возможность втянуться в рабочий процесс. Конечно, были трудности, работа с чужим кодом всегда несет в себе много сюрпризов, но это были скорее трудовые будни и все сложности оказались решаемыми. Не было ничего, с чем я не сталкивался за период обучения.
Испытательный срок уже подошел к концу. Я принят в штат. Но каждое утро я с огромным удовольствием иду на работу, мне дорог каждый день на рабочем месте, всё это благодаря одному — я занимаюсь любимым делом, которым стало для меня программирование за последние 2 года! И мне все также хочется учиться и узнавать новое, благо в этой сфере неисчерпаем путь для собственного образования и совершенствования.
Познакомились с молодыми девушками, которые тесно связаны с IT-сферой. Они рассказали о том, как прийти в tech из другой сферы и подготовиться к отбору в топовые компании.
Адина Тилек, город — Чикаго, блогер, @adinana__
О себе
В Штатах я живу с 2011 года. Сооснователь @devxschool. Строю и развиваю IT Вoot Сamp с мужем и Dream Team.
Обожаю путешествовать. Постоянно прохожу курсы, учусь чему-то новому.
Как начать путь в IT
Первым делом стоит определиться с направлением. Направлений и языков программирования много. Советую сделать Research, посмотреть видео на Youtube про профессии. Понять, что изучают люди, что для этого нужно, где, какие зарплаты и много ли открытых вакансий по этой профессии.
Далее определиться со способом учебы. Есть три варианта: пойти в университет, обучиться самому или пойти на курсы или Вootcamp, как @devxschool. Нужно выбрать то, что подходит вам. Читайте отзывы, проходите пробные уроки, следите за страницами школ и курсов.
Не сомневайтесь, не слушайте никого, будьте упертыми
Чтобы накачать мышцы, нужно тренироваться каждый день. Тоже самое в программировании. Вы не научитесь, пока не будете программировать. Главное — не сдаваться. Будет сложно, вы будете ошибаться, задачки не будут решаться. Но все решаемо и возможно. С практикой приходит навык, раскачивается мозг.
Также постарайтесь найти себе ментора, окружение. Уверена, у каждого есть знакомые программисты. А если нет — найдите. Используйте социальные сети, ходите на встречи, вступите в клубы. Instagram и LinkedIn — отличные площадки для нетворкинга. Найдите тех, у кого уже есть нужный вам результат, и постарайтесь с ними подружиться, построить отношения, ну или просто спросить совета. Возможно, потом ваша новая знакомая может стать ментором или порекомендовать вас в компанию.
Самое важное — верить в себя! Не сомневайтесь, не слушайте никого, будьте упертыми. Для того чтобы обучиться и стать программистом, не нужен особенный склад ума или талант. Упорный труд и вера помогут достичь цели.
Санира, город — Бишкек, блогер, @sanira.neobis
О себе
Я программист. Окончила АУЦА, полгода училась по программе обмена UGRAD в США, три года работала iOS разработчиком. Еще я сооснователь клуба программирования @neobis.kg и курсов @neolabs_kg.
Помимо разработки, занималась управлением проектами, проектированием, координированием, ментором. Неосознанно пришла к предпринимательству и окончила магистратуру в АУЦА по управлению бизнесом.
Как подготовиться к отбору в компании FAANG
Я поставила себе цель: получить оффер от FAANG компаний и переехать с семьей за рубеж, в 2022 году.
Чтобы попасть в FAANG компанию, необходимо пройти несколько этапов: телефонное интервью с рекрутером, одно-два технических интервью, интервью по дизайну систем и поведенческое интервью.
Моя подготовка выглядит так: каждый день уделяю два-три часа на решение задач по программированию на платформе Leetcode.com, параллельно изучая структуры данных и алгоритмы. Важно выработать систему и заниматься в определенное время. У меня этот период, например, с 21:30 до 00:30.
Решение задач я закрепляю прохождением пробных интервью один раз в неделю. Outtalent дает классную возможность проходить пробные технические интервью с другими участниками, менторами и с текущими FAANG разработчиками. После интервью мне дают обратную связь. Есть определенные техники и подсказки, как лучше пройти собеседование.
Для поведенческого интервью я заранее отвечаю и прописываю ответы на вопросы, которые чаще всего задают кандидатам. Это довольно просто. Необходимо вслух повторять ответы и практиковаться, чтобы оставить хорошее впечатление. Для интервью по дизайну систем я смотрю видео, читаю книгу Grokking the System Design Interview и System Design Primer.
Важно правильно составить резюме и заполнить профиль на LinkedIn
Помимо подготовки, важно правильно составить резюме и заполнить профиль на LinkedIn. На сайте docs.outtalent.com есть раздел по составлению резюме, думаю, это поможет вам.