[IT-стандарты, Карьера в IT-индустрии, Интервью, IT-компании] «А ты точно senior?» — или ожидания продуктовых компаний

Автор Сообщение
news_bot ®

Стаж: 6 лет 4 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
07-Янв-2021 15:35

Привет, я тех/тим лид в одной из продуктовых web компаний - систематически занимаюсь собеседованиями. Для меня главная проблема понять кто перед тобой senior, или не особо. А если еще и нужно согласовать мнение со вторым интервьюером...
В общем если вы занимаетесь WEB разработкой хотите понять свой уровень, или стоите на страже компании и не до конца понимаете как понять уровень кандидата добро пожаловать под кат.
Важный момент к которому я пришел - понятие уровня очень субъективно и зависит от типа компании и задач которые она решает. В принципе на этом можно закончить статью, но давайте попробуем пойти дальше.
Для себя я выделил два основных направления - аутсорс и продуктовые компании.
Для аутсорс важнее широкий спектр технологий с которыми сталкивался кандидат.
В продуктовой будет важнее глубокое понимание технологий и принципы написания поддерживаемого кода.
Все дальнейшие рассуждения будут с позиции моего опыта и продуктовой разработки, что естественно не будет совпадать с вашим мнением - так что отнеситесь к этому как к возможности увидеть альтернативную позицию.Итак первое знакомство с кандидатом - резюмена его основании мы решаем стоит ли выделять время на общение.
Я люблю грамотно оформленные - правильный порядок блоков, описано чем занимался на каждом месте работы, перечень технологий и принципов которыми владеет кандидат - но это встретишь не часто, по этому оформление упускаем.На что обращаю внимание:
Как долго работает в одной компании, есть ли рост/смена позиций за время работы.
На чем акцент: технологии или подходы, задачи которые решал или технологии которыми пользовался.
Красным флагом могут быть:
частая смена проектов
большие количество проектов с CMS
пустое перечисление ключевых слов от CSS до IDE.
Если будет интересно к теме хорошего оформления резюме как-нибудь вернемся.самый простой ответ на вопрос: "как-же понять какой у меня уровень" - тот за который тебе согласны платить. Но вы ведь здесь тратите время не для этой демагогии, так что я попробовал формализовать этот ответ.И пока не забыл, обязательно подпишитесь на мой канал в телеграмм чтобы не пропустить новые публикации, так-же буду там делится короткими размышлениями по темам разработки, отписаться если что всегда успеешь :)
Итак наш герой дня, таблица навыков для web разработчика, учтите что таблица указывает на средний/верхний порог уровня, для нижнего можно на усмотрение убрать по пункту из тем:
Под таблицей есть спойлер с картинкой если на вашем экране таблица поползла)JuniorMiddleSeniorАрхитектура приложенийЕсть базовое понимание принципов ООП
Слышал про SOLID
Может придерживаться соглашений проекта и прослеживать аналогии
Знает пару паттерновХорошо понимает SOLID
Слышал про GRASP
Знает про модульную архитектуру
Знает какие есть паттерны, понимает когда нужно применятьЗнает основные подходы к проектированию приложения(CQRS,ES,Modular,SOA)
Хорошо понимает как предупредить каскадные изменения
Может рассуждать про метрики качества кода
Знает паттерны вне GOFКодЗнает базовые конструкции языка
С помощью гугла может решить основные задачиЗнает основные возможности языка, ряд популярных дополнений/библиотек
Может решить сложные задачи и направить Junior разработчикаМожет грамотно построить структуру проекта
Код понятен легко читаем без лишнего усложнения Структуры данных/алгоритмыЗнает какие есть структуры данных
Может подобрать подходящую для простых случаевМожет написать простой алгоритм, посчитать его сложность
Хорошо понимает структуры данных, в каком случае какую выбратьМожет выбирать, создавать сложные алгоритмы
При выборе алгоритма и структуры данных размышляет про эффективность выбора в разрезе RAM/CPUРеляционные базы данныхМожет строить простые запросы(выборки, простые джоины)
Понимает что такое индексы
Может построить отношения между таблицамиМожет строить сложные запросы(сложные джоины, подзапросы, агрегации)
Понимает как построить оптимальные индексы
Может профилировать запросы, знает explain
Может спроектировать простую структуру базы данных
Понимает как работать с большими таблицами
Знает про репликациюМожет построить сложную структуру базы данных(шардинг, денормализация)Знает ограничения и возможности популярных баз данных
Понимает ограничения CAP, PACELCБезопасностьСлышал основные уязвимостиЗнает основные OWASP уязвимости и как их предотвращатьЗнает ряд техник для мониторинга, предотвращения уязвимостей.
Понимает как действовать при атакеТестированиеЕсть базовое понимание для чего и как писать юнит тестыПонимает различия между разными видами тестов
Может эффективно их писать
Понимает как избегать хрупких тестовЗнает разные подходы к написанию тестов(TLD, TDD)
Может рассуждать о пирамиде тестирования
Знает что дает и как создать нагрузочное тестирование
Как плюс знает AB тестированияAPIЗнает базовые методы HTTP
Слышал про RPC,RESTХорошо понимает принципы проектирования API
Знает какие есть варианты авторизацийЗнает основные подходы стандартизации/версионирования API
Может выбрать тип авторизации для проектаОчереди/ Шина сообщенийПонимает зачем они и как работать на уровне интерфейса языка/библиотекПонимает разницу между очередью и шинной данных
Знает основные проблемы воркеров и как из предотвращать (утечки памяти, перезапуск, мониторинг)Знает основные решения по настройке, мониторингу очередей
Может выбрать подходящий брокер
Спроектировать подход к обработке данных (очередь, пайплайн, асинхронный ответ…)Многопоточность/ Асинхронность
Если поддерживает языкВладеет на уровне интерфейса языкаЗнает как работать с многопоточностью
(блокировки, синхронизация)
Знает как работать с асинхронностьюПонимает что такое итоговая согласованность
Когда и как лучше распараллелить процессКешированиеМожет работать на уровне интерфейса языка/библиотеки
Догадывается когда использоватьЗнает как организовать кеш, какие бывают проблемыХорошо знаком с проблемами нагруженного кеша(прогрев, волна запросов, конкурентный доступ)Инфраструктура/СетиЗнание базовых команд операционной системы
Знает какие этапы проходит запрос перед тем как попасть в приложение
Знаком с одним из средств виртуализацииПонимает какие вещи и как нужно настроить для продакшн среды
Понимает виртуализацию и контейнеризацию
Знает базовые сетевые протоколы TCP, UDP, HTTP, HTTPS
Понимает как устроена сеть DNS, NAT, OSPF, BGP, RIPЗнает как балансировать нагрузку(включая необходимость попадания данных на тот-же сервер)
Хорошо понимает принципы работы CDN и как решать базовые проблемы
Знает ограничения текущей платформы, как их обойтиМетрики/логиЗнает зачем логи, как их писатьЗнает варианты сбора логов
Понимает зачем проекту мониторинг, как им пользоваться
Может выбрать необходимые метрикиЗнаком с рядом вариантов сбора метрик/логов
Способен настроить алертинг, сбор необходимых метрик
Желательно знакомство с TSDBCVS/ Релиз процессПонимает зачем нужна CVS
Может выполнять базовые операции CVS
Может рассказать как сделать простой релиз через CVS и SSH рукамиХорошо знает команды CVS
Знает пару фреймворков построения процесса
Знает как работает CIМожет построить CI процесс, знает какие для этого есть инструменты
Хорошо знает подходы к ветвлению, может выбрать подходящий
PNG
С радостью выслушаю ваши замечания и мысли по этому поводу в комментариях, или реакцией в телеграмм
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_itstandarty (IT-стандарты), #_karera_v_itindustrii (Карьера в IT-индустрии), #_intervju (Интервью), #_itkompanii (IT-компании), #_recruitment, #_junior, #_senior, #_interview, #_career, #_middle, #_itstandarty (
IT-стандарты
)
, #_karera_v_itindustrii (
Карьера в IT-индустрии
)
, #_intervju (
Интервью
)
, #_itkompanii (
IT-компании
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 28-Июн 10:26
Часовой пояс: UTC + 5