Как стать автором
Обновить

Pet-проект: «Граф Компетенций»

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.6K

Граф компетенций – это инструмент для генерации матрицы компетенций ИТ специалистов и тестового материала под каждый уникальный случай.
Целевая аудитория – это непосредственно собеседующий и собеседуемый. Собеседующий готовит темы и вопросы, а кандидат учит теорию.

Сокращения

ГК(CG) – граф компетенций, МК – матрица компетенций, ТУ – тематический узел

Мотивация

Многие из нас проходили не одно собеседование в ИТ индустрии, а может, даже и проводили. Вам повезло, если вы не встречались с глупыми вопросами или ужасной обратной связью. Я побывал в этом процессе с двух сторон баррикады, как кандидат, так и как опрашивающее лицо. Случались курьёзные ситуации с обеих сторон. Например, я не отвечал на такой элементарный вопрос, как «что такое git?». Правда, произносили это как «джит» и я думал, что просят рассказать про «Just In Time» компиляцию.
С другой стороны, эта надоедливая обратная связь, которую нужно обязательно оставить и ,конечно, же борьба с недобросовестными кандидатами.

Ребус на тему собеседований

На картинке ниже ребус.
На ней изображено 4 способа, как дойти до собеседования и пройти его.
Жду разгадки в комментариях.

Абстрактный недобросовестный кандидат
Абстрактный недобросовестный кандидат

Правильный ответ найдёте в репе проекта.

Вторым побуждающим фактором начать проект стал рост интереса к матрицам компетенций внутри компании где я работаю и вне. Минцифра продвигает активности связанные со сбором, анализом и тестированием компетенций технических специалистов. Проведём ретроспективу, как это происходило:

Произвольный график плотности новостей об оценке ИТ компетенций
Произвольный график плотности новостей об оценке ИТ компетенций

На графике выше по временной оси отмечено появление новостей об аттестации ИТ специалистов, и ниже краткая сводка:

  • [1] rb.ru: «Минцифры и hh.ru» – начинают договариваться;

  • [2] skillbox: «Минцифры и hh.ru + АПКИТ» – + контроль от АПКИТ;

  • [3,4] digital.gov&sky.pro: Минцифры запускает эксперимент;

  • [5-6] digital.gov&habr: Пройдите тест бесплатно!

Мем - реакция ИТ специалистов
Реакция ИТ специалистов
Реакция ИТ специалистов

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

С мотивацией мы разобрались, теперь перейдём к целям и задачам.

Цели и задачи

Подход к решению этих вызовов был выбран оптимистичный, и цели поставлены масштабные.

Цели:

  • Автоматизировать и унифицировать оценку знаний программистов;

  • Масштабировать и адаптировать оценку под цели различных команд;

  • Автоматизировать генерацию обратной связи;

  • Генерация карты изучения компетенций;

  • Создать открытое, саморазвивающееся сообщество систематизирующее знания и их оценку.

Оптимистичный подход заключается в том, что сообщество будет заинтересовано в наполнении этой строго структурированной базы знаний. Мотивацией для сообщества будет являться:

  1. Набор автоматизированных инструментов извлекающих пользу из базы;
    p.s. Они будут разрабатываться с учетом Free-to-play (F2P) монетизации.

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

  3. Спонсорская помощь будет перенаправляться на денежную мотивацию участников исходя из их рейтинга помощи проекту. (рейтинговая система в проработке)

Пример статистики по базе знаний
Количество узлов по ролям в разрезе ЯП
Количество узлов по ролям в разрезе ЯП
Количество узлов по ролям в разрезе командной роли
Количество узлов по ролям в разрезе командной роли

Предположительный набор функциональности можно представить смотря на карту развития проекта и раздел «Видение использования ГК» в Readme.md

Карта развития проекта
Карта развития проекта

Попробую перечислить функционал:

  • Генерация матрицы компетенций;

  • Генерация шаблона для собеседований;

  • Генерация обратной связи по итогу собеседования;

  • Визуализация/сбор профиля компетенций команды;

  • Возможность указывать стек технологий в вакансии (ссылка на CG).

Чтобы подробнее рассказать о функционале генерации матрицы компетенций, погрузимся немного в теорию проекта.

Структура Графа Компетенций

Вся база знаний состоит из MarkDown документов. Они связаны друг с другом ссылками. Каждый документ – это узел графа. Каждый узел имеет одну из 4-х ролей:

  • Тематический узел (Topic node) - Перечень тем для изучения;

  • Информационный узел (Learning node) - Теоретические знания;

  • Оценивающий узел (Estimating node) - Тесты, вопросы, задания;

  • Системный узел (System node) - Описывают, как работает ГК.

Схематично это выглядит следующим образом:

Послойная структура Графа Компетенций
Послойная структура Графа Компетенций
Послойная структура Графа Компетенций

Все MD имеют схожую структуру, которая валидируется тестами на PR. Рассмотрим только структуру тематического узла. Они нам понадобятся для генерации МК.

Структура тематического узла
Структура тематического узла
Структура тематического узла

В начале файла всегда идёт yaml-front-matter с метаинформацией.
Раздел «Пороговые значения» содержит соответствие уровня владения компетенциями и процент правильных ответов на тесты.
Раздел «Информационные узлы» отправляет нас с тематического слоя на информационный слой.
Раздел «Подтемы» ссылается на другие зависимые тематические узлы с аналогичной структурой документа.

Функционал генерации Матрицы Компетенций

Формула матрицы компетенций
Формула матрицы компетенций

Просто добавь воды фильтр!

Пример фильтра с МК можно найти здесь. Давайте же рассмотрим структуру этого фильтра. Большинство опций опираются на метаинформацию документов.
Раздел «Выберите язык» предлагает нам отфильтровать тематические узлы по языковой локализации.

Фильтр - выбор языка
Фильтр - выбор языка

Раздел «Выберите список ролей» предлагает нам отфильтровать по релевантности тем для каких-либо ролей в команде.

Фильтр - выбор командной роли
Фильтр - выбор командной роли

Раздел «Выберите список ЯП» предлагает нам отфильтровать ТУ по языкам программирования.

Фильтр - выбор ЯП
Фильтр - выбор ЯП

Раздел «Включить список тем» предлагает нам дополнительно включить темы в МК, которые были отфильтрованы предыдущими условиями.
Раздел «Исключить из списка тем» предлагает нам исключить некоторые темы из МК, которые прошли предыдущую фильтрацию.

Фильтр - белый и чёрный список
Фильтр - белый и чёрный список

Раздел «Список необязательных тем» помогает промаркировать темы в МК звёздочкой. Раздел «Группы выборочных тем» позволяет объединить несколько тем в одну группу из которой необходимо прособеседовать только одну.

Фильтр - необязательные и выборочные темы
Фильтр - необязательные и выборочные темы

С разбором фильтра мы закончили. Теперь посмотрим, как выглядит пример результата генерации.

Матрица компетенций

Topic

INTERN

JUNIOR

MIDDLE

SENIOR

1 Build Tools

40%

50%

70%

80%

1.1 Ant*

40%

50%

70%

80%

1.2 Gradle (Any of group1)

40%

50%

70%

80%

1.3 Maven (Any of group1)

40%

50%

70%

80%

2 Developer Tools

40%

50%

70%

80%

2.1 Docker

40%

50%

70%

80%

2.2 Jenkins

40%

50%

70%

80%

3 Logging Frameworks

40%

50%

70%

80%

3.1 Log4j2

40%

50%

70%

80%

3.1.1 Logback

40%

50%

70%

80%

3.2 Slf4J

40%

50%

70%

80%

4 Web servers

40%

50%

70%

80%

4.1 Jetty (Any of group2)

40%

50%

70%

80%

4.2 Netty (Any of group2)

40%

50%

70%

80%

4.3 Tomcat (Any of group2)

40%

50%

70%

80%

5 OOP(ООП)

40%

50%

70%

80%

5.1 Abstraction (Абстракция)

40%

50%

70%

80%

5.2 Encapsulation (Инкапсуляция)

40%

50%

70%

80%

5.3 Inheritance (Наследование)

40%

50%

70%

80%

5.4 Polymorphism (Полиморфизм)

40%

50%

70%

80%

6 Парадигмы программирования

40%

50%

70%

80%

6.1 CRY

40%

50%

70%

80%

6.2 DRY

40%

50%

70%

80%

6.3 SOLID

40%

50%

70%

80%

7 Принципы программирования

40%

50%

70%

80%

7.1 Декларативный стиль

40%

50%

70%

80%

7.2 Императивный стиль

40%

50%

70%

80%

7.3 Функциональный стиль

40%

50%

70%

80%

Первая колонка (Topic) - это иерархический список тем в алфавитном порядке или по приоритету. Последующие колонки содержат порог в %, который нужно перешагнуть при тестировании, чтобы претендовать на определённый уровень.
Значения порогов, количество уровней и всё остальное, модерируются сообществом ГК.

Матрицу компетенций мало сгенерировать. С ней ещё нужно уметь работать. Для себя выделил следующий список инструментов для работы с MD документами:

  • Obsidian;

  • Logseq;

  • Gitverse+Gramax

  • Joplin;

  • IDEA,VStudioCode.

Разрабатывается проект с использованием следующего стека:

  • Kotlin;

  • Gradle;

  • Jgrapht;

  • Flexmark;

  • Markout.

    Стек технологий ГК
    Стек технологий ГК

Будущее проекта

В итоговом варианте проекта хотелось бы получить инструмент, который будет упрощать взаимодействие между командой, hr-ом и канидатом. И его можно было бы описать одной фразой:

Работает - AI, оцениваешь - Ты!

Диаграма взаимодействия агентов ГК
Диаграма взаимодействия агентов ГК

P.s. в комментариях предлагаю обсудить возможность описания soft и behavioral skills в иерархической структуре, как это уже получилось с hard skills.

Теги:
Хабы:
+3
Комментарии11

Публикации

Ближайшие события