Привет, я тех/тим лид в одной из продуктовых web компаний - систематически занимаюсь собеседованиями. Для меня главная проблема понять кто перед тобой senior, или не особо. А если еще и нужно согласовать мнение со вторым интервьюером...
В общем если вы занимаетесь WEB разработкой хотите понять свой уровень, или стоите на страже компании и не до конца понимаете как понять уровень кандидата добро пожаловать под кат.
Важный момент к которому я пришел - понятие уровня очень субъективно и зависит от типа компании и задач которые она решает. В принципе на этом можно закончить статью, но давайте попробуем пойти дальше.
Для себя я выделил два основных направления - аутсорс и продуктовые компании.
Для аутсорс важнее широкий спектр технологий с которыми сталкивался кандидат.
В продуктовой будет важнее глубокое понимание технологий и принципы написания поддерживаемого кода.
Все дальнейшие рассуждения будут с позиции моего опыта и продуктовой разработки, что естественно не будет совпадать с вашим мнением - так что отнеситесь к этому как к возможности увидеть альтернативную позицию.
Итак первое знакомство с кандидатом - резюме
на его основании мы решаем стоит ли выделять время на общение.
Я люблю грамотно оформленные - правильный порядок блоков, описано чем занимался на каждом месте работы, перечень технологий и принципов которыми владеет кандидат - но это встретишь не часто, по этому оформление упускаем.
На что обращаю внимание:
Как долго работает в одной компании, есть ли рост/смена позиций за время работы.
На чем акцент: технологии или подходы, задачи которые решал или технологии которыми пользовался.
Красным флагом могут быть:
частая смена проектов
большие количество проектов с CMS
пустое перечисление ключевых слов от CSS до IDE.
Если будет интересно к теме хорошего оформления резюме как-нибудь вернемся.
самый простой ответ на вопрос: "как-же понять какой у меня уровень" - тот за который тебе согласны платить. Но вы ведь здесь тратите время не для этой демагогии, так что я попробовал формализовать этот ответ.
И пока не забыл, обязательно подпишитесь на мой канал в телеграмм чтобы не пропустить новые публикации, так-же буду там делится короткими размышлениями по темам разработки, отписаться если что всегда успеешь :)
Итак наш герой дня, таблица навыков для web разработчика, учтите что таблица указывает на средний/верхний порог уровня, для нижнего можно на усмотрение убрать по пункту из тем:
Под таблицей есть спойлер с картинкой если на вашем экране таблица поползла)
Junior | Middle | Senior | |
Архитектура приложений | Есть базовое понимание принципов ООП | Хорошо понимает SOLID | Знает основные подходы к проектированию приложения(CQRS,ES,Modular,SOA) |
Код | Знает базовые конструкции языка | Знает основные возможности языка, ряд популярных дополнений/библиотек | Может грамотно построить структуру проекта |
Структуры данных/алгоритмы | Знает какие есть структуры данных | Может написать простой алгоритм, посчитать его сложность | Может выбирать, создавать сложные алгоритмы |
Реляционные базы данных | Может строить простые запросы(выборки, простые джоины) | Может строить сложные запросы(сложные джоины, подзапросы, агрегации) | Может построить сложную структуру базы данных(шардинг, денормализация) Знает ограничения и возможности популярных баз данных |
Безопасность | Слышал основные уязвимости | Знает основные OWASP уязвимости и как их предотвращать | Знает ряд техник для мониторинга, предотвращения уязвимостей. |
Тестирование | Есть базовое понимание для чего и как писать юнит тесты | Понимает различия между разными видами тестов | Знает разные подходы к написанию тестов(TLD, TDD) |
API | Знает базовые методы HTTP | Хорошо понимает принципы проектирования API | Знает основные подходы стандартизации/версионирования API |
Очереди/ Шина сообщений | Понимает зачем они и как работать на уровне интерфейса языка/библиотек | Понимает разницу между очередью и шинной данных | Знает основные решения по настройке, мониторингу очередей |
Многопоточность/ Асинхронность | Владеет на уровне интерфейса языка | Знает как работать с многопоточностью | Понимает что такое итоговая согласованность |
Кеширование | Может работать на уровне интерфейса языка/библиотеки Догадывается когда использовать | Знает как организовать кеш, какие бывают проблемы | Хорошо знаком с проблемами нагруженного кеша(прогрев, волна запросов, конкурентный доступ) |
Инфраструктура/Сети | Знание базовых команд операционной системы | Понимает какие вещи и как нужно настроить для продакшн среды | Знает как балансировать нагрузку(включая необходимость попадания данных на тот-же сервер) |
Метрики/логи | Знает зачем логи, как их писать | Знает варианты сбора логов | Знаком с рядом вариантов сбора метрик/логов |
CVS/ Релиз процесс | Понимает зачем нужна CVS | Хорошо знает команды CVS | Может построить CI процесс, знает какие для этого есть инструменты |
PNG
С радостью выслушаю ваши замечания и мысли по этому поводу в комментариях, или реакцией в телеграмм
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Интересна ли вам тема найма со стороны интервьюера
-
85,7%Да6
-
14,3%Нет1
-
0,0%Нейтрален0