Стоит получить свою первую работу и перед тобой откроются все двери. А пока ты на самом старте с нулевым опытом работы, откликаешься на сотни вакансии, получаешь тысячи просмотров, но не получаешь ни одного предложения даже пройти собеседование. Все хотят джуна с опытом, который уже написал не один проект. Но, чтобы получить опыт работы, нужно иметь опыт. Так, как же быть? Сейчас все расскажу!
Конечно опыт работы один из важнейших критериев при трудоустройстве. Однако не всегда возможно работать во время учебы. Более того, бывают ситуации, когда ты хочешь сменить профессию или направление, и совмещать работу по старой профессии с новой просто невозможно. Собеседуя людей долгое время, и глядя на то, как это делают мои коллеги, я выделили некоторые критерии и шаги, которые помогут трудоустроиться разработчиком совсем без опыта работы.
Итак, одни из главных преимуществ джуниора (а именно на эту позицию вы можете претендовать) - желание расти и интерес к тому что он делает. Соответственно, вам, как человеку без опыта, нужно показать эти качества своим потенциальным работодателям. На самом деле в этом нет ничего сложного. И дальше я подробно расскажу, какие шаги нужно предпринять.
Первые шаги
Делайте проекты и публикуйте их на github. Выберите проект, сайт или библиотеку, которые вам нравятся, и попытайтесь повторить его реализацию целиком или только наиболее интересную часть. Для начала, не думайте, как это сделать оптимально, хорошо и красиво, просто самостоятельно решите обозначенную вами задачу. Выберите язык, на котором вы хотите работать, а также инструменты (для начала можно в поиске найти наиболее подходящие инструменты для решения). Когда закончите, обязательно напишите документацию к проекту и научитесь писать тесты. Людей, любящих, а главное умеющих писать тесты не так много, но это очень полезное умение и будет вашим преимуществом на рынке.
Закончив проект, можно делать следующий. Либо почитать и подумать, как можно улучшить и усложнить предыдущий. После чего сделать вторую и третью версии. Поменять подходы, язык, фреймворки и библиотеки. В данный момент для вас главное - опыт и примеры кода, которые можно показать работодателю.
Изучите выбранный язык программирования
Дальше, выбрав язык, обязательно изучите его синтаксические конструкции, посмотрите примеры и прочитайте задания из интернета или книг, которых в большом избытке. Вы не всегда сразу сможете понять, как это работает в реальной жизни, или где это нужно применять, но знать общие механики языка нужно.
Изучите алгоритмы
Следующим шагом вам нужно разобраться, какие в вашем языке есть структуры данных и как они работают. В основном, я имею ввиду, какой алгоритм лежит в основе и его сложность (в худшем, среднем и лучшем случае). Ответы на этот вопрос легко ищутся либо в документации, либо в интернете. Ваша задача понять, что такое сложность алгоритма, уметь отвечать на вопрос какую структуру данных для конкретной задачи лучше выбрать и почему. Это поможет и на собеседовании и в работе. Конечно в каждой реализации языка могут быть тонкости, но на данном этапе мы это опускаем.
Так же я крайне рекомендую разобраться с деревьями (двоичными, поиска и так далее), а главное, со сбалансированными деревьями. Учиться писать эти алгоритмы на собеседовании это перебор для разработчиков без опыта, но понимать, в чем суть и как это применяется, вам поможет не только пройти собеседование, но и на практике для выбора инструментов решения задач. Алгоритмов великое множество, но этих для старта будет более чем достаточно.
Частые вопросы на собеседованиях
Затем, я бы советовал, разобраться с четырьмя вещами, которые выглядят избыточными, но, на самом деле, их не только часто спрашивают на собеседованиях, но они и очень полезны для более глубокого понимания, как ваши программы работают и в чем могут быть проблемы. Вот эти четыре вещи:
- что происходит, когда забиваешь адрес сайта в браузер;
- процессы;
- потоки;
- асинхронное программирование.
Опять же темы очень большие и глубокие, вам нужно лишь уловить основную суть передачи данных по сети, а также самые большие отличиях процессов от потоков и того зачем нам нужно асинхронное программирование.
Что делать дальше
Дальше идет океан возможностей, специфичных под язык или фреймворк. На пример, фронтенд разработчикам надо понимать азы верстки, бекенд разработчикам основы работы с базами данных и т.д.. В целом, процесс обучения будет идти непрерывно всю вашу карьеру, поэтому всего знать и уметь невозможно. Однако, набор знаний и шагов которые я привел, не только поможет устроиться разработчиком без опыта работы, но и даст неплохую базу для старта.
Еще стоит поискать списки вопросов для собеседований по конкретному языку программирования или технологии в интернете и готовиться по ним. Часто собеседующие берут свои вопросы именно оттуда. Когда почувствуете, что готовы пойти на собеседование, не бойтесь пробовать. Просто сходите - это ваша возможность проверить себя и узнать, чего вам не хватает. Компаний много, провалить одно собеседование совершенно никак вам не повредит (а еще вы рискуете пройти его с первого раза и получить работу). После собеседования обязательно сядьте и запишите все вопросы, на которые было сложно ответить. Найдите информацию по ним и изучите ее. Когда поймете, что во всем разобрались, идите на следующее собеседование. Постепенно вы поймете, какие вопросы вам задают и изучите все, на что не могли ответить вначале. Так вы не заметите, как пройдете свое первое собеседование и получите предложение. Дерзайте! Все в ваших руках!