Как бы я собеседовал себя два года назад
- 11 февраля 2020
Меня зовут Ринат. В этой статье расскажу о том, как проходили мои собеседования на фронтенд-разработчика, и какие бы я вопросы сам задал начинающему себе. Но начну издалека.
По образованию я связист, и я работал в службе при Роскомнадзоре, которая на уровне оборудования проверяет, соблюдают ли мобильные операторы правила блокировок сайтов. Большую часть времени я ездил по командировкам по Башкирии, мы лазили по сотовым вышкам и проводили измерения. Это физическая работа, и по две недели в месяц меня не было дома. В итоге я устал от этого и решил сменить специальность. В итоге мой путь с нуля до сеньора занял четыре года.
Всё началось в 2015 году
.Я нашёл сайт Академии и начал проходить тренажёры, которые давались очень легко. После этого я прошёл интенсив «PHP. Профессиональная веб-разработка» и защитился на 100 баллов. Это было настоящее испытание, и такого удовольствия после защиты я не испытывал давно.
Интенсив тогда сломал мое привычное мышление, может быть, в этом заслуга моего наставника Александра Бренчева. Наставник — это процентов семьдесят успешной сдачи интенсива. Важно не только его наличие, но и то, как он настроит процесс обучения со студентом, и насколько правильно он будет всё объяснять.
После защиты первого проекта я был горд собой, казалось, что сделал что-то нереальное. После этого я прошёл ещё три интенсива и защитил проекты на них.
В 2017 году я сделал первый свой сайт
.Как говорится, с нуля, «в блокноте». Это был сайт тортов на заказ для жены, она тогда занималась этим. Помню, как к нам домой пришёл покупатель за тортом. А у нас дома окна меняют рабочие, дети бегают, грязь везде и жена ему торт выносит, а он говорит: «Я думал, что это самая лучшая кондитерская в городе. У вас сайт такой. Не ожидал, что всё так плохо». Это наверное был самый лучший комплимент, который только мог быть.
В 2019 меня взяли в нефтяную компанию после двух собеседований
.И я до сих пор работаю на должности Senior frontend developer, под моим руководством два младших разработчика. Хотя для себя я понимаю, что до сеньора мне ещё далеко. Но самое главное, я никогда в жизни не был ещё так счастлив от того, что делаю.
Я часто собеседую фронтенд-разработчиков
.И каждый раз вспоминаю, что все вопросы, которые я задаю, упорно вбивали мне в голову на первом интенсиве по JavaScript. Как гвоздь в камень: долго, но верно. Самым сложным в освоении был метод массивов reduce
, и я старался решать задачи без его использования. Сейчас наоборот пытаюсь использовать его везде, где это имеет смысл.
Собеседования
Перед тем, как проводить собеседования и работать старшим разработчиком, я сам прошёл много собеседований. Например, первые два собеседования на роль джуна были ещё во время работы связистом. Само собой, я их успешно провалил.
В 2018 году мне позвонили из онлайн-университета и позвали преподавателем по вёрстке и JavaScript. Это был, наверное, единственный для меня вариант набраться опыта, ведь собеседования я продолжал успешно проваливать.
Однажды я сделал морской бой на JavaScript в качестве тестового задания
.Игра получилась классная, там даже компьютер имел подобие ИИ, обстреливая раненную палубу. Но всё-таки отсутствие опыта играло свою роль.
Одно из собеседований состояло процентов на восемьдесят из вопросов на понимание процессов, которые происходят в браузере при открытии страницы. Всё это было на интенсивах, всплывало в голове на собеседованиях и сыграло большую роль в поиске работы.
Как прошло собеседование в нефтяной компании
У них нет градаций, как в модных IT-компаниях, и с должностями всё проще — специалист, главный специалист. Но какая-то ассоциация есть:
- Junior — начинающий специалист.
- Middle — специалист отдела разработки.
- Senior — ведущий специалист.
Я пришёл на должность специалиста отдела разработки программного обеспечения. На собеседовании были простые вопросы по вёрстке, например, просили написать структуру HTML-документа. По JavaScript было интереснее — там было около 18 вопросов, например:
- Как получить с помощью JavaScript дату следующего вторника?
- В каком порядке выведется
console.log
, если какие-то функции обернуты вSetTimeout
, а какие-то нет? - Как поведёт себя
SetTimeout
на ноль секунд? - В чем заключаются характерные отличия стрелочных функций?
- Можно ли добавить свойство в объект, объявленный через
const
?
Как бы я собеседовал себя
Много раз после вопросов ловил себя на мысли, что знаю ответ, но не могу правильно объяснить. Со временем на практике какие-то вещи стали понятными — в личных проектах, во время преподавания вёрстки. В итоге всё встало на места, и кусочки головоломки сложились.
Я считаю, что младший разработчик должен знать несколько вещей:
- Всплытие событий. Это не самая важная тема в реальных процессах, но человек должен быть с этим знаком, и понимать, как это работает.
- Замыкания. Хотя бы своими словами, но нужно объяснить на каком-нибудь элементарном примере что это, и как их применять. И привести пример того, когда мы можем воспользоваться замыканием и извлечь из этого выгоду.
- Методы массивов. Я не знаю, есть ли проекты, где можно обойтись без использования методов массивов, поэтому я считаю, что человек должен знать и уметь работать с массивами и объектами.
- Глубокое копирование объекта> (или хотя бы неглубокое), и как избежать ссылочной зависимости при копировании.
Совет бывалого: учить ли фреймворки?
Учить, но не в самом начале. По крайней мере, до тех пор, пока не появится уверенность и силы написать что-то подобное морскому бою на чистом JavaScript. Это могут быть пятнашки или несложная карточная игра.
Конечно, маркетинг сильно влияет на людей, и громкоговорящая реклама «Изучите React.js или Vue.js за две недели и зарабатывайте 100 000+ рублей» заставляет людей, только косвенно знакомых с JavaScript, сразу изучать фреймворки. Но, по опыту, это почти гарантирует провал и часто убивает желание осваивать фронтенд дальше.
Как меняется мышление у разработчиков
Со школы мы знакомы с математикой, и в математике 0,1 + 0,2 = 0,3.
Конечно, там мы не сталкиваемся с тем, что 0,1 + 0,2 может быть не равно 0,3. В JavaScript подобные моменты постоянно возникают и когда ты пытаешься напрямую решить вопрос, это может оказаться заведомо неправильным. Тогда нужно подойти с другой стороны, и всё оказывается намного проще. Тогда же понимаешь, что у любой задачи есть несколько способов решения, и не всегда самый очевидный оказывается лучшим.