├── README.md └── interview.md /README.md: -------------------------------------------------------------------------------- 1 | # Первая ruby-работа 2 | 3 | Ты хочешь стать ruby-разработчиком, но непонятно, что для этого нужно сделать. Этот документ описывает знания и навыки, которые необходимо получить. Каждый пункт сопровождается источником, где можно это узнать. 4 | 5 | ## Поворот не туда 6 | 7 | Прежде, чем начать свой путь, хорошо бы узнать, а нравится ли тебе ruby. Для этого потребуется 30 минут, в рамках которых можно поиграть с языком ruby в браузере без установки. Это поможет понять, насколько тебе приятен синтаксис, понятен ли он тебе, хочется ли идти дальше. 8 | 9 | 10 | 11 | ## Основы 12 | 13 | | Раздел | Материал | 14 | | ----------------------- | ---------------------------------------------- | 15 | | основы SQL и баз данных | https://postgrespro.ru/docs/postgresql/15/tutorial | 16 | | основы git | | 17 | | основы командной строки | | 18 | 19 | ## Ruby 20 | 21 | | Раздел | Материал | 22 | | -------------------------------------- | ------------------------------------- | 23 | | Простые типы данных в Ruby | https://ru.wikibooks.org/wiki/Ruby/Базовые_типы_данных | 24 | | Массивы | https://ru.wikibooks.org/wiki/Ruby/Подробнее_о_массивах | 25 | | Хэши | https://ru.wikibooks.org/wiki/Ruby/Подробнее_об_ассоциативных_массивах | 26 | | Управляющие конструкции | | 27 | | Основы объектно-ориентированного программирования | | 28 | | Методы класса | | 29 | | Модули и миксины | https://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Classes#Mixing_in_Modules | 30 | | Объектная модель Ruby | | 31 | | Исключения и их обработка | | 32 | | Блоки, Proc и lambda | | 33 | 34 | ## Ruby on Rails 35 | 36 | - [HTTP-протокол](https://practicum.yandex.ru/blog/chto-takoe-protokol-http/) 37 | - [MVC](https://dev.to/dumebii/model-view-controller-in-rails-a-deep-dive-into-the-mvc-architecture-4oi1) 38 | - [Роутинг](https://guides.rubyonrails.org/routing.html) 39 | - [Валидация данных](https://guides.rubyonrails.org/active_record_validations.html) 40 | - [Связи и ассоциации](https://guides.rubyonrails.org/association_basics.html) 41 | - [Контроллеры и виды](https://guides.rubyonrails.org/layouts_and_rendering.html) 42 | - [Active Record query language](https://guides.rubyonrails.org/active_record_basics.html) 43 | - Скоупы и коллбеки 44 | - Аутентификация пользователей 45 | - Twitter Bootstrap 46 | - Assets Pipeline 47 | - Локализация 48 | - Основы Javascript 49 | - Javascript в Rails-приложении 50 | - тестирование rails с RSpec. 51 | - Интеракторы для хранения логики 52 | - Фоновые задачи 53 | 54 | ## Практика 55 | 56 | | Раздел | Материал | 57 | | ----------------------- | ---------------------------------------------- | 58 | | ruby | | 59 | | основы git | [Создание Git-репозитория](https://git-scm.com/book/ru/v2/Основы-Git-Создание-Git-репозитория) | 60 | | Основы SQL | [Тренажёр от SQL Academy](https://sql-academy.org/ru/trainer) | 61 | 62 | 63 | 64 | ## Собеседование 65 | 66 | - структура резюме 67 | - самопрезентация 68 | - ответы на типовые вопросы: самые интересные задачи, что ждете от команды, почему меняете работу 69 | 70 | ## Материалы 71 | 72 | - 73 | - 74 | - 75 | - 76 | - 77 | - 78 | - 79 | - 80 | -------------------------------------------------------------------------------- /interview.md: -------------------------------------------------------------------------------- 1 | # До собеседований 2 | 3 | - Вместе с нанимающим менеджером уточняем и описываем, какие задачи вообще человеку надо будет решать. Убеждаемся, что нам точно нужен новый сотрудник. 4 | - Вообще проведение брифинг-сессии с нанимающим менеджером заслуживает отдельного гайда. Вот примеры вопросов, которые обычно там обсуждаются: 5 | 6 | |Область|Вопросы| 7 | |---|---| 8 | |Цели|- Какие ключевые цели или задачи вы хотели бы, чтобы новый сотрудник помог вам достичь? - Какие (не)формальные KPI? Как мы поймём, что работа выполнена хорошо?| 9 | |Компания и команда|- Можете ли вы кратко описать вашу компанию, включая её миссию, ценности и культуру? - Почему нам нужен новый сотрудник? - Какова структура команды? - Кто непосредственный руководитель этой роли? - С кем предстоит взаимодействовать?| 10 | |Профиль идеального кандидата|- Какие ключевые навыки, квалификации и опыт требуются для этой роли? Какие из них обязательны, а какие предпочтительны? - Какие желаемые софт-скиллы или личные качества нужны? Какие из них обязательны, а какие предпочтительны? - Какой уровень / грейд необходим для достижения целей этой роли? - Какие карьерные возможности доступны для этой роли?| 11 | |Условия|- В какой локации необходимо работать кандидату? Поддерживает ли компания релокацию? - Какой диапазон зарплаты? - Каковы другие бонусы? - Кто и как будет онбордить нового сотрудника? Есть ли бадди?| 12 | |Питч роли|- Что делает эту роль привлекательной? Почему это будет интересно для кандидатов?| 13 | - Можно попросить ChatGPT (или другую модель по вашему выбору) составить список вопросов к нанимающему менеджеру. Пример промпта: 14 | - Я рекрутер и планирую провести встречу с нанимающим менеджером. Мы открываем вакансию [Продакт-менеджера]. Помоги, пожалуйста, сформулировать вопросы, которые стоит задать моему нанимающему менеджеру, чтобы лучше определить и сформулировать роль и требования к кандидатам. 15 | - Чётко описываем, какими компетенциями / ценностями / качествами должен обладать человек, чтобы он мог успешно решать эти задачи у нас в компании. (Если у вас в компании есть матрица компетенций для роли — она как раз это и описывает.) 16 | - Это упраженение стоит тоже делать вместе с нанимающим менеджером. 17 | - Тут может возникнуть соблазн написать про 15 разных вещей, но нам кажется, что гораздо лучше выбрать 3–5 самых важных компетенций и сфокусироваться именно на них. 18 | 19 | ## Какие вопросы задавать-то? 20 | 21 | - Про каждую компетенцию / ценность / качество формулируем вопрос или несколько вопросов, которые должны будут дать нам сигнал о том, насколько человек ими обладает. Хорошо работают вопросы вида «расскажите про ситуацию, когда вы ...». 22 | - Это тоже можно сделать с ChatGPT или другой моделью по вашему выбору, загрузив туда контекст про компанию и вакансию. Пример промпта: 23 | 24 | ``` 25 | Я готовлюсь собеседовать кандидатов на роль [Продакт-менеджер] в [Название вашей компании]. В ходе разговора с нанимающим менеджером мы решили, что наиболее важными навыками и компетенциями являются следующие: 26 | - предыдущий опыт создания мобильных приложений 27 | - автономия, понимание свободы и ответственности 28 | - взаимодействие с разработчиками 29 | Пожалуйста, помогите сформулировать ситуационные вопросы для оценки этих компетенций на собеседовании. 30 | ``` 31 | 32 | - Ситуационные вопросы хороши тем, что кандидат не может нагенерить себе правильных ответов — это ведь вопросы про его конкретный опыт. 33 | 34 | - Для некоторых тем больше подходит формат проективных вопросов, то есть когда мы просим кандидата поразмышлять о ком-то другом, вместо себя самого. Говоря о другом человеке, кандидаты обычно чуть меньше склонны волноваться и больше показывают, что они на самом деле думают. Этот подход помогает раскрыть скрытые мнения и отношение кандидата к различным предметам. Кроме того, кандидаты редко готовят ответы на этот тип вопросов. 35 | 36 | - Например: Работали ли вы в таких командах, где был хотя бы один откровенно слабый профессионал? Опишите, что именно делало этого человека непрофессиональным? Как это влияло на всю команду? Как бы вы посоветовали поступить вашему менеджеру в отношении такого коллеги? 37 | - Гипотетические вопросы, такие как «представьте, что вам нужно сделать .... Как бы вы подошли к этому?» обычно менее эффективны. Полезнее спрашивать о реальном опыте кандидата и просить привести примеры из прошлого опыта. 38 | - В любой непонятной ситуации стараемся использовать открытые вопросы (те, на которые нельзя ответить просто «да» или «нет»). Открытые вопросы помогают получить больше важного контекста. 39 | - Каждый вопрос про ситуацию из прошлого опыта дополняем большим количеством уточняющих вопросов — их удобно формулировать с использованием метода STAR (Ситуация - Цель - Действие - Результат). 40 | 41 | Вот несколько примеров: 42 | 43 | | Что проверяем | Какими вопросами можно проверить | 44 | | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | 45 | | Опыт работы | - Расскажите про свою работу в компании Х. (И уточнения: На какую роль вас наняли? Что конкретно вы делали? К каким результатам это привело? Что бы вы делали по-другому, если бы стартовали в этой роли заново?) | 46 | | Навыки продакт-менеджмента или дизайна | - Расскажите и покажите какой-нибудь из недавних проектов. (И уточнения: Откуда взялась задача и как она была поставлена? Что конкретно вы делали? К какому результату это привело? Что бы вы сделали по-другому?) | 47 | | Мотивация | - Почему вы решили отклинуться на нашу вакансию? - Как выглядит идеальная для вас роль? - Расскажите, какие в принципе роли вам интереснее всего, куда бы вам хотелось двигаться в карьере? - Приведите пример интересной и неинтересной для вас задачи? В чём конкретно был интерес и демотивация? - Какие позиции вы ещё рассматриваете? (этот вопрос заодно даёт бесценную информацию о рынке + понимание того, насколько именно наша позиция кандидату интересна) | 48 | | Коммуникационные навыки | - С кем вы обычно взаимодействуете в работе и как это происходит? - Сталкивались ли вы с коллегами, с которыми было сложно сработаться? Что именно мешало вашему взаимодействию? - Приведите пример конфликтной ситуации. Что вы делали? - Приведите пример ситуации, когда вам нужно было отстоять свою точку зрения / кого-то переубедить? - Приведите пример ситуации, когда вас переубедили. // а можно и не спрашивать тут ничего, а просто посмотреть на свои ощущения — понятно ли, что человек говорит? Насколько явно от отвечает на вопросы? | 49 | | Предпринимательское мышление | - Расскажите про проект, который вы сделали, хотя вас об этом никто не просил. - Приведите пример ситуации, когда внедрили какое-то улучшение? А когда хотели внедрить, но не удалось? | 50 | | Сильные стороны | - Какие у вас сильные стороны по мнению вашей команды / вашего руководителя? Какой фидбек вы получали? - В чем, по мнению ваших коллег, вы лучший в команде? - Какие задачи нравится делать больше всего / какая предметная область интереснее / что не хотелось бы делать? | 51 | | Слабые стороны | - Какой критический фидбек вы получали? - Опишите точки роста, которые видите у себя. | 52 | | Зарплатные ожидания | - Какие у вас зарплатные ожидания? (Некорректно, а в некоторых странах и нелегально, спрашивать, сколько человек получает на текущем месте работы. Он может рассказать сам, но мы не спрашиваем про это явно) - Что ещё в плане компенсации для вас необходимо? | 53 | | Дополнительная информация | - Когда вы сможете приступить к новой работе? - В каком городе/стране вы сейчас находитесь? Где планируете находиться? - Как вы оцениваете свой уровень английского? - Если не секрет: какие ещё позиции рассматриваете сейчас? | 54 | | Готовность принять оффер | - Если завтра вам сделают оффер, вы его примете? - Что должно быть в оффере, чтобы вы его точно приняли? - Если оценить нашу вакансию по десятибальной шкале с точки зрения интереса, какую оценку поставите? Чего не хватает до 10? - Если у вас будет 3 оффера и они все плюс-минус будут соответствовать вашим ожиданиям, как будете выбирать? | 55 | | Готовность менять работу | [Four Forces](https://www.intercom.com/blog/four-forces-user-onboarding/): (тут надо спросить про все эти вещи, чтобы получить полную картину) 1. Что вас удерживает на текущем месте работы? 2. А что не нравится, что выталкивает с текущего места? 3. Что притягивает в новой роли / компании? 4. А что смущает в новой роли? Что вызывает сомнения? - Сообщали ли вы уже на текущем месте, что смотрите работу? | 56 | 57 | - Составляем свой итоговый список вопросов для каждого из этапов собеседований — его мы будем держать перед глазами во время всего интервью. Всем кандидатам по одной позиции основные вопросы задаём одни и те же и строго в одних и тех же формулировках, чтобы люди были в равных условиях. 58 | - Если питч роли / компании ещё не готов, составляем его тоже. Вне зависимости от итогов конкретного интервью, наша задача — заинтересовать кандидата и оставить у него позитивное впечатление о компании. 59 | - Эту часть часто забывают, но вообще-то мы хотим, чтобы каждый интервьюер мог запитчить компанию на хорошем уровне. 60 | - Тут тоже можно воспользоваться ChatGPT, но скорее в качестве критика — закинуть туда свой текущий питч и спросить, как можно было бы его усилить. 61 | - Отправляем кандидату напоминание о предстоящей встрече, приложив полезные материалы: ссылки на сайт / соцсети компании, на ваш профиль в LinkedIn, статьи о компании и др. Хороший тон — прописать в письме повестку / формат встречи, чтобы помочь кандидату лучше к ней подготовиться и быть увереннее. 62 | 63 | ## За 15 минут до начала интервью 64 | 65 | - Садимся, подключаемся и готовимся. В hirehire у нас гибкое отношение ко времени и можно немного опаздывать на все внутренние встречи. Но нельзя опаздывать на внешние. На собеседовании надо быть на звонке минута в минуту. 66 | - Всячески настраиваемся на волну кандидата и вспоминаем / изучаем всё, что про него известно: пересматриваем CV и портфолио, перечитываем cover letter и предыдущую переписку с кандидатом и/или заметки с предыдущих этапов интервью. Смотрим сайты компаний, где работал / работает. Смотрим посты в линкедине. Можно посмотреть соцсети, если есть ссылки на них. 67 | ## Во время интервью 68 | 69 | - Если кандидат опаздывает, спокойно ждём минимум 5 минут, потом уже можно вежливо пингануть. 70 | - Начинаем разговор всегда с того, что благодарим кандидата за его время, представляемся и даём пару слов о себе. Пару минут можно посвятить ни к чему не обязывающему small talk (а какое у вас время суток, а какая погода, ой какой красивый цветок у вас в кадре стоит и т. д.). [Классный пост про small talk в англоязычной культуре](https://www.facebook.com/100007981272450/posts/3249068982035779/) 71 | - Дальше рассказываем, как в целом пройдёт созвон и какая у него цель. 72 | - Из 45 минут в созвоне всегда закладываем минимум 15 минут на вопросы кандидата / питч роли. Некоторым нравится с этого начинать, другие предпочитают это делать в конце созвона. 73 | - В конце интервью у нас должны будут остаться подробные заметки с ответами кандидата на все основные вопросы — это важно, чтобы не спрашивать одно и то же несколько раз, ничего не перепутать, принять взвешенное решение и вспомнить кандидата спустя какое-то время. 74 | - Разговор удобно транскрибировать с помощью AI, например, [hirehire.ai](http://hirehire.ai/). 75 | - Перед транскрипцией или записью нужно явно попросить у кандидата разрешения. Можно объяснить это тем, что сложно писать заметки вручную, а мы хотим быть уверенными, что ничего не потеряется и ничего не перепутаем. Обычно люди соглашаются. 76 | - Кстати, может возникнуть иллюзия, что разговор с кандидатом — это приватный разговор. Но это не вполне так. Всегда помним, что кандидат может на своей стороне записать созвон на диктофон, совершенно нас об этом не спросив. А потом выложить запись в интернет. Поэтому всё, что мы говорим кандидату в нашей беседе 1:1, нужно говорить с ощущением, что вы говорите это в стриме на весь интернет. Если что-то вы не готовы сказать публично, этого нельзя говорить и кандидату. 77 | - Начиная обсуждать каждую ситуацию, задаём большое количество фоллоу-апов. Докидываем уточняющие вопросы в ответ на то, что кандидат говорит. Можно и нужно цепляться за разные детали и проверить глубину. 78 | - Лучше всего работают вопросы, начинающиеся на ЧТО и КАК. Если спрашивать ПОЧЕМУ, то это часто может восприниматься как нападение и человек закрывается или защищается, а нам этого не надо. 79 | - Можно и нужно прервать кандидата, если он говорит слишком долго или не совсем о том, о чём спрашивали, или слишком много льёт воды. 80 | - Можно в начале интервью сформировать ожидание: «Могу местами перебивать и задавать уточняющие вопросы, чтобы сложить полную картину.» 81 | - Можно даже завершить интервью досрочно, если становится понятно, что кандидат вообще совсем не подходит на роль из-за каких-то очевидных критериев — например, (не)готовности к переезду. Тут важно явно объяснить, почему продолжение интервью будет пустой тратой времени для обеих сторон. Естественно, важно поблагодарить кандидата, и можно попробовать предложить другие вакансии, если есть что-то подходящее. 82 | - Главная идея в том, чтобы получить как можно более точный сигнал о том, насколько сильна компетенция у человека в итоге — насколько он или она вообще понимает, что делает, и может ли это делать самостоятельно. 83 | - Опытный собеседующий — отчасти психолог. Наша задача — выявить, что на самом деле важно человеку и может повлиять на его решение менять работу. Например, на вопрос «почему уходили из прошлых компаний?» кандидат может отвечать: «Не было челленджа, скучно», но вероятно, что за этим стоит что-то ещё — например, 5 лет не повышали. 84 | - Хорошо в самом начале выяснять, что важно для кандитата, и использовать это в питче. Например, если человек говорит, что ему очень важно в работе постоянно проходить разные треннинги и учиться у старших коллег, тогда мы говорим «А в компании Х как раз предоставляют бюджет на Personal Development и несколько раз в год проводят внутренние конференции…» 85 | - Можно попросить человека рассказать, по каким критериям он или она сейчас выбираете новое место работы. Попросить расставить критерии от самого важного к наименее важному. И каждый критерий тут можно раскрывать. Например, если человек говорит «хорошая команда», сразу спрашивать: «А что вы имеете в виду? Есть ли пример из опыта хорошей команды? Чем конкретно она нравилась? Почему для вас это важно?» 86 | - В конце созвона, говоря про следующие шаги, можно рассказать в целом о том, как будет проходить процесс собеседований, какие ещё этапы стоит ожидать кандидату. Явно проговариваем сроки, в которые мы вернемся к кандидату с обратной связью. Если у вас могут возникнуть проблемы с предоставлением фидбека, то оставьте кандидату право пингануть вас после определенного дедлайна. 87 | - В самом конце стоит еще раз поблагодарить кандидата за встречу и дать ему возможность написать вам, если он вспомнит какие-то важные вопросы, которые не успел задать, или захочет дополнить информацию о себе. 88 | 89 | ## После интервью 90 | 91 | - Свои заметки и отчёт сохраняем в ATS (так обычно называют CRM для кандидатов). Хороший тон — перечислить явно в заметках, какие у вас могут быть bias’ы (предвзятости) по отношению к этому человеку. 92 | - Явно и однозначно формулируем свой вывод — стоит ли продолжать с этим кандидатом по этой позиции или нет. 93 | - КАК МОЖНО БЫСТРЕЕ Отправляем отчёт нанимающему менеджеру / следующему собеседующему. В идеале это нужно делать буквально сразу же «по горячим следам», пока воспоминания и ощущения от интервью сильнее всего. 94 | - Если у нас есть транскрипция собеседования, черновик отчёта тоже можно сгенерировать с помощью AI — например, с [hirehire.ai](http://hirehire.ai/). Такой черновик помогает сэкономить до получаса после собеседования. 95 | - Кандидату тоже обязательно нужно явно ответить и сориентировать по дальнейшим шагам — это лучше сделать на следующий день. Можно сразу после встречи создать себе напоминание, например, в календаре — чтобы точно не забыть. 96 | - Даем честную обратную связь кандидатам, которым отказали. Важно, чтобы фидбек звучал не как критика, а как зона развития, которая в будущем поможет кандидату успешно пройти собеседование на похожую роль. Тут важно быть юридически корркетным — в некоторых странах кандидат может с нашим емейлом пойти в суд и попытаться оспорить решение. 97 | - Вот тут мы бы не полагались на ChatGPT — емейлы всё-таки странноватые обычно получаются, чаще всего заметно, что их сгенерили. 98 | 99 | ## Отношение 100 | 101 | - Чем бы интервью ни закончилось, нам кажется важным искренне чувствовать благодарность человеку на другом конце созвона. Человек выделил 30-60-90 минут своей жизни на встречу, чтобы рассказать о себе и узнать о нас подробнее. 102 | - На собеседованиях мы _знакомимся_. Это не экзамен кандидата и не продажа роли, хотя может казаться, что есть элементы и того, и другого. Мы не выше и не ниже кандидата по статусу (вне зависимости от уровня человека, от джунов до топ-менеджеров), мы всегда говорим на равных, уважительно, доброжелательно, тепло, открыто. 103 | - Тем не менее у собеседников на интервью разные роли. Важно помнить, что вы, как интервьюер, отвечаете за тайминг и за структуру беседы. Ваша задача — обменяться с кандидатом как можно большим количеством информации за ограниченное время. Именно поэтому мы не рекомендуем начинать интервью с просьбы «расскажите о себе», ведь вы рискуете потерять контроль над разговором, не получить необходимых данных и просто потратить время зря. 104 | - Можно (и даже рекомендуется, если это комфортно) говорить с человеком на «ты». Лучше явно спросить на это разрешение. Но не стоит фамильярничать и слишком сближать дистанцию. 105 | - Может быть человек не подойдёт для этой конкретной роли, может быть подойдёт для другой, в том числе той, что появится в будущем. Мы хотим создать тёплые профессиональные отношения, и наш созвон — первый шаг к этому. 106 | - Мы не разделяем кандидатов на «плохих» и «хороших» ни в коммуникации, ни даже в собственных мыслях. Кандидаты бывают только «подходящими» или «не подходящими» на конкретную вакансию. 107 | 108 | Источник 109 | --------------------------------------------------------------------------------