на сайт
12 декабря 2018
10:24

Часть 2. «Царь горы» или как мы тестирование стажеров проводили.

Вы возможно пропустили, но мы собирали команду новичков под кодовым названием «Инкубатор». В общем, мы провели больше 10 мини-собеседований и отобрали в первый сезон четверых бравых парней! Подробности в прошлой статье, а в этот раз мы придумали задачу и несколько дополнительных проверок.

Ниже описан весь процесс тестирования, кому-то пригодится, а кто-то может быть возьмет на вооружение. Особая польза будет всем, кто работает с персоналом или молодежью — будь ты HR, начальник отдела или преподаватель университета.

Время прочтения - 10 минут. Поплыли.

Постановка задачи


Сперва стоит рассказать о том, каких ЦЕЛЕЙ мы как компания пытались добиться, затевая данное тестирование:

  1. Создать эффективную команду. Сформировать у ребят такие качества, как СПЛОЧЕНИЕ, ВЗАИМОДОПОЛНЯЕМОСТЬ и УМЕНИЕ СРАБОТАТЬСЯ — наша первоочередная задача.
  2. Дать попробовать новый СТЕК ТЕХНОЛОГИЙ, приближенный к нашему боевому. «Что из всего этого учить?» — этот вопрос приходит в голову каждому начинающему разработчику. Количество языков разработки и окружения слишком велико, поэтому мы дали ребятам конкретный список.. ну почти).
  3. Сбить спесь. Все программисты, особенно молодые, болеют одной распространенной болезнью умников -«я самый умный!». Но опыт подсказывает, что всегда есть кто-то умнее. Ох, если бы вашему покорному слуге дали такой урок в начале пути.. лучше обоcра%*ся на учебных задачах, чем в «продакшене»…
  4. Научить рассчитывать свои силы и анализировать задачу.

Наша небольшая, но дружная компания, занимается разработкой сложных Backend систем, зачастую основанных на микросервисах и связанных с блокчейном, шифрованием и безопасностью. Поэтому задачу мы соорудили простенькую, но тематическую.

Сделать нужно было следующее: установить Node.js, rabbitMQ, Golang и PostgreSQL. Всё это запустить и связать между собой, придерживаясь схемы ниже:

  1. В неком Frontend приложении есть отправка сообщения с полем ввода и кнопкой «Send». На чем писать этот модуль, в условиях не звучало, и это решение было дано на откуп исполнителям.
  2. Сообщение принимает микросервис на Golang. После чего складывает его в сервер очередей RabbitMQ.
  3. Из очереди его забирает Consumer написанный на NodeJS, шифрует и складывает в базу данных Postgres, где и хранится.
  4. Дальше по кнопке «Get Message» пользователь может получить своё сообщение обратно, в том же виде, в котором отправил.

Мы специально пропустили некоторые детали при постановке задачи, надеясь на разумный подход и интеллект. Задавать вопросы никто не запрещал, выяснять требования тоже. Основное условие звучало — сделать сегодня, выдать РЕЗУЛЬТАТ (мы конечно любим процесс своей работы, жаль за него не платят..)

Разделили наших парней на 2 команды, принцип распределения, как и позывные команд «X-mens» и «Принцессы» были сделаны нами не просто так (но это не точно)

Начало испытаний

Обе команды получили одинаковое задание, поделили зоны ответственности между собой и ринулись в бой! Без оглядки!

За разделение задач - каждому по плюсику.

(Принцессы: 1, X-men: 1)

Да, рвение мы приветствуем, но прежде, чем писать код, надо было подумать…

Первая и вторая «ловушки» были в том, на чем же писать этот Frontend и где же умышленно нами «пропущенный» модуль, расшифровывающий сообщение из базы данных!

Отгадка на поверхности — модуль в левой части ну слишком похож на модуль в правой. Присмотритесь — он тоже работает с базой данных, уже имеет модуль шифрования, а соответственно и доступ к ключам. Немного остановившись и пораскинув мозгами, вполне резонно написать его на том же языке.

Но справилась с этими умозаключениями лишь команда Принцесс, за что и получила свой первый плюсик в карму и уважение в глазах наставника.

(Принцессы: 2, X-men: 1)

Третья «ловушка» была в избыточности схемы в рамках поставленной задачи. Микросервис на golang и очереди были явно лишним усложнением проекта. Команда X-mens заявила о «лишних технологиях» в проекте, за что получила свой плюсик.

(Принцессы: 2, X-men: 2)


Были и другие сложности и подковырки, решение которых мы оценивали, например правильность интеграции одних технологий с другими и пр.

Работа кипела, ребята яростно штудировали гугл на предмет «How this shit works!?»

Мы намеренно не вмешивались, стараясь предоставить им максимум самостоятельности. Но, как мы помним, вопросы задавать не запрещалось — ради результата все способы хороши. Даже если бы команды объединились, это было бы нами принято как данность. Но вечер все близился, появлялось ощущение, что все не так круто, как всем казалось в начале.

Команда Принцесс благополучно близилась к финалу и говорила «всё вот- вот будет готово», и, можно сказать, успела вовремя. Начинаем проверять!

Иииии барабанная дробь… со стороны пользователя всё работает! Заказчик видит результат! Круто, успели похвалить… Начинаем задавать вопросы, “А как??”, “А тут вот что?” - и выясняется презабавнейшая вещь..

Ради «результата» и «уложиться в сроки», Принцессы просто заменили Golang, с которым не успели разобраться, на ещё один микросервис на NodeJS.

Тут даже ваш покорный слуга обомлел.. вот это подход! Показали рабочий вариант, а потом тихой сапой хотели во внеурочное время переписать на нужном языке и подсунуть) Такое придумать и провернуть могут только неординарные ребята, выходящие за рамки очерченной границы задачи. Очень неплохо. Плюсуем два балла за «в срок» и «неординарный подход».

(Принцессы: 4, X-men: 2)

Приходит пора сдавать проект команде X-men.. ждем еще немного.. ещё…

Наконец они понимают, что не уложились, и приходят сами сдаваться заказчику на переговоры (так сдаваться или на переговоры?) и пытаться перенести сроки.

«Нууу, мы обещали попробовать..» — начал было заявленный ПМ проекта.

Эту фразу не хочет слышать ни один наставник и, тем более, ни один заказчик. Особенно такой настроенный на результат как автор данной статьи… так себе начало беседы.

Тут, смекнув что разговор не клеится, самопровозглашенный Teamlead команды и начал торговаться за перенос сроков) Ну что ж.. это уже хоть какой-то разумный подход.

Мы намекнули, что надо дать заказчику что-то сверх обговоренного, дабы настроить его на нужное решение. Эдакую «вишенку на торте». И парни придумали добавить уведомление в телеграмм при отправке любого сообщения.

Функционал конечно бесполезный, но мы придумали кейс, где это может понадобиться, и решили, что этого достаточно, дабы согласиться на перенос сроков без штрафных санкций.

Тут команда допустила большую ошибку. Делать эту вишенку пришлось порядка 3 часов, и непосредственно тимлиду, часы которого нужно было потратить на доработку основного функционала.

Как опытные парни мы сразу это смекнули, но не стали останавливать, дабы преподать урок молодому поколению. Ибо правильное распределение ресурсов — это один из самых ценных уроков, который хотелось преподать на практическом примере.

День второй

— Уровень собственной крутости: пониженный

— Уровень знаний: увеличен на максимум

— Уровень навыков: на прежнем уровне

Парни хорошенько отдохнули и с раннего утра второго дня начали доделывать обещанное к заявленному сроку: 13:00 AM.

Снова много стараний, попытка перераспределить ответственность, усердие… В целом делали всё верно, но снова не рассчитали силы и не выдержали сроки.

На помощь был отправлен боевой опытный наставник, который указал на ошибки, и помог собрать рабочее решение. Ну наконец-то!)

Результат

Команда принцесс:

Хоть и с небольшим «читерством» и благодаря личным качествам одного из участников — справилась с поставленной задачей и показала неплохое взаимодействие.

Команда X-men:

Путем набивания шишек, ползания на пузе при боевом крещении и непомерного стремления и желания доказать способности — приобрела бесценный опыт и тоже справилась с задачей.

Конец

Обе команды попробовали новые для себя технологии, научились взаимодействовать друг с другом, договариваться и получать рабочее решение в рамках поставленной задачи. А значит - мы сделали всё как планировали и добились желаемого.

Сейчас одна из команд делает боевой проект, а вторая - придуманный в рамках инкубатора стартап! Какая именно и что делает - читайте в следующих статьях, а значит подписка и репост обязательны!


Плюсануть
Поделиться
Отправить

Читайте также

И комментируйте