Обновить

Комментарии 17

Так, ребята, из этого нужно делать проект, который будет выдавать плашки, которые можно вешать на github и в других системах. Я серьезно. Типа - уровень проекта, такие-то метрики.

Мне кажется это прям полезно.

Как и для любой нейронной сети, данное исследование верно для одного языка - c#. Для остальных - надо тестировать и уточнять)

ваш подход показался интересным, чем вызвано ограничение ? GraphCodeBERT с тренировочным датасетом ?

Ограничение вызвано тем, что данная статья - часть исследования, которое оценивает как рыночные ожидания, так и код. Попытаться объединить результаты анализов для одного языка, который ты знаешь и которым пользуешься с учетом различных архитектурных и синтаксических особенностей и выявить какие-то закономерности проще, чем для массива языков)

ясно, немного смутило что GraphCodeBERT не обучался на c# коде и если вы не дообучали модели, результаты могут быть зашумлены. второе, проекты которые вы собирали, должны быть типичными и семантически "равными" что ли. иначе это также может шуметь. например, небольшой проект с простым доменом, никогда не дотянет по уровню наследования к проекту со сложной доменной моделью.

Изначально модель тестировалась на проектах из репозитория Майкрософта разной степени сложности. Дообучить модель на данный момент у меня нет технической возможности, но на как раз "семантически равных" проектах показала себя неплохо

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

Одна репа - один человек, чтобы отвечать теме исследования. Да и корпоративные проекты чаще всего закрыты и лежат на гитлаб.

Я думала о подобной задаче и есть ряд статей, как по репозиторию подбирали наилучшую команду разработки. Только если там анализировали историю репозитория, у меня были мысли выделения "почерков", как было описано в одной из статей по ИБ. Пока максимум из того, что я могу предположить, что даже в условиях ограничений, код разных людей может отличаться, что можно попытаться определить синтаксически и нейронкой. Хорошей выборкой в таком случае могут стать мерж реквесты от людей, как сейчас принято, для выделения блоков написанного ими кода

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

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

да, спасибо за ваш труд. будем на связи)

Определенно оживит рынок найма в айти!

Сдам в аренду эксклюзивный репозиторий хандмейд гавнокода трехлетней выдержки.
Также предлагаю высококвалифицированные услуги МОК-измерения черепа.

Я увидел такой результат вашего исследования - чем больше кода, тем сложнее он организован (т.е. менее сложен цикломатически), тем меньше в нем "шаблонных решений" (относительно общего объема кода). Другими словами, статистически, чем больше кода написал разработчик, тем ближе он к "Истинному Сеньору". Итого грейд = стаж. Или нет?

Нет. Сейчас вы говорите о таких метриках как объем кода, наследование и цикломатическая сложность. По результатам кластеризации, если мы смотрим именно на метрики, у сеньора большее количество кода с более сложной структурой с меньшим значением цикломатической сложности. Т е код более чистый и понятный, несмотря на свою сложную структуру, без излишек ветвления. Тут как раз можно увидеть, что синьор не применяет бездумно паттерны и синтаксические конструкции, а использует абстракции и пишет код осознанно, что показывает другой уровень мышления. Здесь нельзя сказать что чем старше, тем опытнее. Тут скорее чем выше его грейд, тем выше осознанность его кода и применяемых в нем решений.

если мы смотрим именно на метрики, у сеньора 1) большее количество кода с 2) более сложной структурой с 3) меньшим значением цикломатической сложности.

Именно это я и написал. Или что имеется ввиду под ответом "нет"? Что мы вначале определяем "истинного сеньора", а уже потом его "отличительные признаки", и в обратном направлении это не работает?

Грейд — это не стаж, а качество архитектурного мышления. Человек может иметь 10 лет опыта, но технически оставаться на уровне Middle. В рамках этого исследования (т е двух статей) анализ шел от требований рынка к синьорам, что позволило собрать репозитории, возможно ими написанные, к характеристикам, описывающим код этих синьоров. Здесь используется синтез используемых признаков для большей объективности

Глубина наследования - это скорее негативный параметр. Какие-то метрики вы можете собрать, но итоговый вердикт, хороший код или плохой, вам автоматически вывести не получится.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации