Инженерный блог компании раскрывает проблемы и открыт для обмена передовым опытом. Аккаунт компании на GitHub демонстрирует стандарты качества.

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

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

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

Если вас больше всего мотивирует зарплата, то эти вопросы НЕ для вас. Но так ли это?

Я написал эти вопросы с точки зрения разработчика Ruby. В наши дни языки не играют такой большой роли, как YMMV. Операционные, административные, организационные и архитектурные вопросы по-прежнему актуальны для компаний, использующих другие платформы.

Эти вопросы сухие. Убедитесь, что вы понимаете, зачем задавать вопрос, плюсы и минусы возможных ответов.

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

Время вопросов интервьюируемого ограничено. Убедитесь, что интервьюер заранее знает, что у вас достаточно вопросов.

Спросите, что для вас важнее всего.

Вопросы дополняют и обновляют Тест Джоэла и Тест Джоэла на 2017 год.

Разминка

Как идея изменения продвигается к выпуску в производство?

У вас есть инженерный блог?

Вы предпочитаете «скучные» проверенные временем или передовые технологии?

С чего ты взял, что я подхожу?

Организация

Каков размер инженерного отдела?

Какие роли или должности имеет инженерный отдел?

Как взаимодействуют разные роли?

Каков размер команды?

Общение

Как вы общаетесь в коллективе?

Оперативно ли сотрудники реагируют на почту и мессенджер?

Какими еще услугами вы пользуетесь в команде?

Какие встречи обязательны для команды? Сколько они берут из рабочего времени?

Вы оцениваете эффективность и необходимость встречи?

Насколько дружелюбны и готовы помочь коллеги?

Инженерия

Каков уровень разработчиков в команде и других командах?

Каков уровень доверия к штатным инженерам с точки зрения надзора?

Есть ли у вас алгоритмические или математические задачи?

Бэкенд, интерфейс, автоматизация тестирования и код DevOps написаны одними и теми же людьми?

У вас есть инженерная обязанность? Как часто? Что он включает в себя?

Какой самый страшный несчастный случай на дежурстве вы можете вспомнить?

Каков цикл выпуска?

Насколько актуален набор инструментов?

Какие базы данных вы используете и планируете использовать и почему?

Знания

Как вы документируете лучшие практики и рекомендации?

Насколько детальна и однозначна техническая документация?

Как вы документируете продукт, над которым работаете?

Легко ли искать и изменять документацию?

Как узнать, кто лучше всех разбирается в теме?

Как вы относитесь к автобусному фактору?

Как новые сотрудники узнают, что им нужно знать, чтобы стать продуктивными участниками?

У вас есть новая книга по найму?

Вы практикуете наставничество? Наставничество только для новых сотрудников?

Архитектура

Как вы строите код интерфейса?

Как фронтенд взаимодействует с бэкендом?

Какие языки и фреймворки вы рассматриваете как вариант при запуске проекта с нуля?

Какой набор инструментов для DevOps?

Местное развитие

Есть ли у вас какие-либо специальные инструменты, для которых требуется определенное оборудование или операционная система?

Откуда берутся данные для местного развития? Это правда или подделка?

Просмотр кода

Проверяете ли вы каждое изменение кода и документации?

На что похожи код-ревью?

Сколько раундов проверки кода обычно требуется для больших изменений?

Сколько человек проводят проверку кода одного изменения?

Что произойдет, если один из рецензентов кода не доволен частью изменения?

Качество кода

Как вы справляетесь с ошибками?

Как вы справляетесь с техническим долгом? Кто отвечает за его ранжирование?

Тесты быстрые? Надежны ли они? Заслуживают ли они доверия?

Как вы документируете код?

Как вы справляетесь с плохо документированным, нечитаемым унаследованным кодом?

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

Какие проверки разработчики выполняют локально, а какие на CI?

Открытый код

Вы только потребитель, или вы каким-то образом платите за открытый исходный код?

Каково видение компании открытого исходного кода?

Можно ли работать над открытым исходным кодом в рабочее время?

Разрешено ли работать над удаленно связанными проектами с открытым исходным кодом?

Как вы мотивируете сотрудников работать над открытым исходным кодом в рабочее время?

Процесс разработки

Как выглядит требование к продукту, когда оно достигает разработчика?

В какой степени разработчик может повлиять на это требование?

Каков формальный процесс разработки? Почему вы выбрали его?

Насколько хорошо вы задокументировали этот процесс разработки?

В какой степени команда может вносить изменения в процесс разработки, чтобы соответствовать своим потребностям и улучшать свой конвейер?

Насколько сильно давление продукта?

Развитие карьеры

Насколько прозрачны обзоры производительности и правила, лежащие в их основе?

Как оценки эффективности влияют на заработную плату?

Как подняться по ролям и обязанностям?

Как вы справляетесь с оборотом?

Как оборот по сравнению с другими компаниями?

Есть ли у вас процентильный график продолжительности взаимодействия сотрудников с компанией в инженерном отделе?

Как быстро вы растете?

Как уволиться или уволиться из компании?

(макрос) — Службы

Как вы локально запускаете зависимые службы?

Как вы синхронизируете релизы?

Как вы определяете границы этих услуг?

Совместно ли используется база данных между службами? Есть ли у сервисов выделенные базы данных?

Что вы используете для имитации межсервисного взаимодействия? Как документируются межсервисные протоколы? Как проверяются межсервисные связи?

Микросервисы

Итак, вы используете микросервисы или разбираете монолитное приложение.

Какие проблемы вы решили решить с помощью микросервисов?

Рассматривали ли вы альтернативные подходы к этим проблемам?

Как вы справляетесь с проблемами:

  • последовательность
  • доступность
  • Излучатель M*N для связи с потребителем (примечание: «автобус» не является ответом)
  • сохранение журнала сообщений
  • версия схемы сообщения
  • потоковый и табличный дуализм
  • сохранение фактического измерения данных
  • разделение хранилища данных
  • межсервисные запросы на соединение
  • синхронизация развертывания
  • транзакционные атомарные обновления данных, распределенные по нескольким службам

Тестирование

Проводите ли вы ручное тестирование?

Есть ли в вашей команде выделенный QA-инженер?

Насколько тщательным является ручное тестирование?

Когда проводится ручное тестирование?

Что вы покрываете автоматизированными приемочными тестами?

Выполняете ли вы автоматизированное нагрузочное тестирование?

Вы проводите тестирование на проникновение?

DevOps

Есть ли у обычных разработчиков доступ к производственным журналам и консоли?

Кто отвечает за развертывание?

Как вы автоматизируете развертывание?

Сколько времени занимает развертывание?

Можете ли вы выполнить быстрый откат без потерь?

Можешь сделать хотфикс?

Вы практикуете развертывание с нулевым временем простоя?

Используете ли вы атомарную и быструю миграцию схем?

Как вы справляетесь с переносом данных?

Как вы выполняете миграцию данных, чередующуюся с миграцией схемы при развертывании?

Управление инцидентами

Кто получает сообщения об ошибках производства и подготовки?

Как они реагируют на эти сообщения?

Культура

Какова культура компании?

Есть ли у инженерного отдела своя культура?

В какой степени культура применима ко всему, что компания делает в действительности?

Каковы исключения?

Вы выращивали культуру?

Или это недосягаемый идеал, к которому вы стремитесь?

Как вы объясняете сотрудникам, почему корпоративная культура — это хорошо?

Учите ли вы сотрудников делать это по-корпоративному?

Как вы поступаете с теми, кто совершает непреднамеренную ошибку, которая стоит компании прибыли или увеличивает затраты на техническое обслуживание?

При каких обстоятельствах можно работать над некоммерческими или коммерческими проектами в свободное время?

Пожалуйста, не стесняйтесь комментировать ваши предложения. С удовольствием дополню этот список, так как сам собираюсь им пользоваться в будущем.