Матрица компетенций веб-программиста – 2020
- Стажер
- Junior
- Middle
- Senior
- Architect
- Управление развитием программиста
- Как устроена проверка уровня (аттестация) в ИНТЕРВОЛГЕ?
- Итого
В 2020 году мы собрали отзывы и пожелания по матрице и аттестациям, посмотрели как поменялся технологический стек. Разработчики и руководители потратили много времени на поиск истины.
Мы готовы опубликовать новую матрицу компетенций вместе с планом развития. Мы считаем что это и есть ответ на вопрос “как из новичка стать гуру веб-разработки”. Итак, поехали.
У каждого программиста в ИНТЕРВОЛГЕ есть файл “Матрица компетенций”. В ней отражен текущий статус и история развития по уровням.
Таблица разделена на грейды (стажер, junior, middle, senior). Каждый грейд содержит набор уникальных компетенций. Вопросы сгруппированы по областям знаний (PHP, SQL, Frontend, …). Есть столбец “Опционально” для специальных вопросов конкретного отдела. Компетенции из этого столбца учитываются в освоении грейда, но не входят в 100%. То есть, например, можно освоить стажера на 120%.
В статье показаны фрагменты матрицы и контрольных вопросов.
Полную версию матрицы компетенций вы можете скачать по ссылке.
Стажер
На старте стажер должен быть способен:- уверенно отличать куки от сессий;
- понимать на сервере или в браузере происходит конкретная операция;
- написать на PHP без серверных фреймворков несложную задачу управления данными. Например “ведение БД групп и студентов с редактированием, удалением, созданием и выводом”;
- прилично оформить результат своей работы.
Ошибки – нормальная часть обучения.
Какие знания PHP требуются на уровне стажера?
Какие вопросы задаются?Синтаксис языка PHP
- открывающие / закрывающие теги (+короткие +альтернативный синтаксис);
- объяснить поведение include-require + once.
"Типы данных", переменные
- перечислить все типы данных (7);
- инициализация массива (новый и старый синтаксис, ассоциативный и последовательный);
- правила именования переменных в php;
- как работают и зачем нужны ссылки на переменные (можно на примере preg_match).
Глобальные переменные
- какие существуют предопределенные (перечислить все, объяснить в какой что хранится).
Выражения и операторы
- что такое выражение (определение);
- что такое арность с примерами (унарный, бинарный, тернарный + с сокращенным синтаксисом);
- условные операторы и циклы;
- как работает $$.
Побитовые операторы
- объяснить как работает объединение флагов при вызове error_reporting (самому написать проверку наличия двух флагов в аргументе).
Функции
- синтаксис;
- ограничения типов аргументов, что будет если передать не тот тип;
- аргументы по умолчанию;
- анонимные функции: зачем нужны + пример.
Классы
- каким оператором можно проверить тип;
- что такое класс;
- что такое объект;
- что может быть членом класса;
- что такое инициализация.
Отображение ошибок
- где в php / apache / битриксе управлять отображением (конкретные параметры и функции) ошибок (с приоритетами);
- где искать логи ошибок на сервере.
Авторизация на сайте
- написать авторизацию на чистом php;
- три отличия хеш-функций от функций шифрования.
Junior
Junior способен решать задачи самостоятельно. Он часто советуется со старшими, но вопросы он задает совсем не стажерские.Что практически должен уметь Junior на старте
- переписать (а значить досконально понимать) авторизацию на сайте;
- уверенно править настройками и кодом фреймворка работу каталогов, ленты новостей, формы;
- собирать простые интерфейсы управления данными и целые сайты на фреймворке;
- писать простую интеграцию с внешним API.
Select со всеми конструкциями, включая Join
- синтаксис select-а (смысловой порядок);
- второй способ выбрать данные из нескольких таблиц кроме join и почему его не надо использовать;
- where-having;
- limit;
- вывести для каждого пользователя количество групп в которых он состоит.
Типы данных MySQL
- перечислить все типы;
- разница в хранении.
Типы join-ов
- продемонстрировать работу двух основных типов join-ов на таблицах (хуже на кружках);
- что такое "cross join".
Типы таблиц Mysql
- транзакции (где есть, зачем нужны, как запустить/завершить/отменить).
Применение Alter
- как переименовать таблицу;
- как задать значение по умолчанию для столбца.
Отношение многие ко многим
- как реализуется на физическом уровне.
Индексы, оптимизация
- проведите аналогию с реальным миром: бд = библиотека, что будет индексами?;
- на какие типы данных можно создавать;
- тебе нужно самому запрограммировать индексы: primary, unique, index какие переменные/структуры данных для этого нужны;
- почему в CIBlockElement::GetList нужно обязательно указывать IBLOCK_TYPE (см. cookbook по инфоблокам).
Работа с СУБД в консоли
- как выбрать бд при подключении и как сменить после;
- вывести список баз и список таблиц в базе;
- посмотреть список всех процессов бд (кто висит).
Middle
Middle – специалист, который способен решить сам любую типовую для отрасли задачу. Что практически должен уметь Middle на старте:- работать с внешней авторизацией (войти через внешний провайдер или сделать свой код провайдером авторизации);
- уверенно программировать интерфейсы интернет-магазинов или интранет-порталов (в зависимости от специфики);
- собирать сложные интерфейсы управления данными и разделы на фреймворке;
- писать сложные интеграции с внешним API, реализовывать веб-сервисы.
Вот что спрашивают наставники на уровне middle по Javascript
- ООП в JS;
- работа с JS фреймворком кроме JQuery (d3);
- работа с БЭМ;
- Front-end оптимизация;
- написание своего плагина для jQuery;
- NPM (зачем нужен; основные команды (установка/обновление/запуск скрипта); package.json: зачем нужен, какой параметр отвечает за точку входа, как описываются скрипты/команды);
- Современные фреймворки (опыт работы с react/vue; управление состоянием: объяснить 3 основных принципа redux).
Полную версию матрицы компетенций вы можете скачать по ссылке.
Senior
Senior знает “свой стек” досконально, с готовностью изучает и применяет новые технологии, и работает как наставник. Вот например, что сам Senior должен знать и уметь по блоку “Работа с серверами и Linux”.- сборка нетиповой системы выкатки изменений;
- работа с микросервисами;
- организация нагрузочного тестирования;
- настройка continuous integration;
- синхронизация файлов и репликация данных;
- сборка отказоустойчивого и высоконагруженного кластера на Bitrix Framework и без него;
- ELK / другие системы логирования и аналитики;
- серверы очередей Gearman / RabbitMQ и построение распределенных систем.
Architect
Архитектор – следующий уровень развития специалиста, когда он продумывает архитектуры крупных проектов и руководит их реализацией. Он не только технический, но и проектный руководитель.Такие специалисты играют ключевую роль в технически и организационно сложных проектах.
Качество архитектора определяет способность проекта выполняться в срок и развиваться много лет подряд.
Управление развитием программиста
Каждый месяц с каждым программистом индивидуально мы проводим «планерку по развитию» и разговор на другие темы о работе. Участвуют руководитель отдела, техлид и/или наставник.Во время таких встреч мы вместе определяем приоритеты развития — сдать лабораторную, экзамен 1С-Битрикс или устный экзамен по нашим компетенциям.
Как устроена проверка уровня (аттестация) в ИНТЕРВОЛГЕ?
Как мы проверяем знанияЧто такое «аттестация»?
Это процедура подтверждения квалификации программиста. Ее проходят все программисты компании. Аттестация включает лабораторные работы и устные экзамены.В результате аттестации в вашей матрице компетенций появляются “Да” напротив подтвержденных компетенций. От этого увеличивается ваш грейд, например, «Стажер-54%» → «Junior-27%».
Зачем нужна аттестация?
- Возможности компании зависят от вас. Мы хотим, чтобы вы приобретали навыки, которые приносят наибольшую пользу для наших клиентов.
- Ваша зарплата растет вместе с квалификацией. Мы измеряем квалификацию с помощью матрицы компетенций. Чтобы ЗП была повышена, нужно подтвердить квалификацию.
- Интересные задачи – это сложные задачи. Повышение уровня позволит работать самостоятельнее и решать сложные задачи.
Как проходит аттестация?
Аттестация включает теорию (устный экзамен) и практику (лабораторные работы). Цель – “закрыть” несколько компетенций в матрице, подтвердить уровень, получить новые задачи и повысить зарплату.Наши практические задания можно сделать правильно только если изучить и понять теорию. Списывать и хитрить у нас не принято, и наставник не пропустит халтуру.
Многие блоки матрицы компетенций закрываются практикой и теоретических вопросов по ним нет.
Теория. Устный экзамен
Компетенции, не покрытые лабораторными работами нужно подтвердить на устном экзамене.По каждой компетенции мы задаем около 5 вопросов. По-хорошему ответить надо на все или почти все. Длительность устного экзамена зависит от уровня, обычно это 1-2 ч.
Практика. Лабораторные работы
Лабораторная работа покрывает сразу несколько компетенций. После выполнения лабораторной работу эти компетенции засчитываются как подтвержденные и не попадают в устный экзамен.Лабораторная работа завершается отчетом. Отчет может включать демонстрацию чего-либо, код-ревью, устные вопросы. Набор проверок зависит от самой лабораторной.
Примерные формулировки заданий
Мы разработали около 20 заданий лабораторные работы. Несколько – опубликуем.Вот примеры простых заданий.
Задание 2а. Базовый web на PHP, CRUD. Компетенции:
Суть:
Проверка:
|
Развитие задания
Задание 2б. Базовый web на PHP, CRUD (часть 2). Компетенции:
Суть — продолжаем работу над сайтом из задания 2а:
Проверка:
|
Вот пример “средней сложности”
Задание 10. Парсинг сайтов Компетенции:
Суть:
Проверка:
|
Все “лабораторные работы” с методикой их выполнения и проверки доступны нашим сотрудникам.
Путь по “матрице” через лабораторные и экзамены гарантирует профессиональный рост! Подробный путь развития программиста мы описали ранее в статье.
Итого
Вы хотите стать профессиональным программистом? Мы готовы вам помочь. Подготовьтесь, пройдите собеседование и приходите к нам в команду. Сначала – стажером. Через несколько лет вы сильно вырастете.Полную версию матрицы компетенций вы можете скачать по ссылке.
Статьи по теме
- аренда команды (от 2 человек, не менее 3 месяцев);
- итерации с фиксированной ценой (1-3 месяца длительностью).
- регулярные онлайн-планерки с заказчиком;
- квалифицированных специалистов;
- организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
- полную прозрачность и регулярность отчетов о результатах.
- нагруженный интернет-магазин;
- личный кабинет;
- оптовые продажи — B2B-платформа;
- маркетплейс;
- технический аудит сайта;
- Битрикс24 — корпоративные HR-порталы;
- Битрикс24 — построение CRM-системы;
- Битрикс24 — личные кабинеты сотрудников;
- Битрикс24 — аудит портала;
- 1С — интеграция с другими системами;
- 1С — доработка системы;
- маркетинг — комплексное интернет-продвижение;
- маркетинг — продвижение для B2B.