Всем хорошего дня или вечера, Хабровцы! Это моя реальная история о том, как однажды в команде разработчиков .NET-стека появился лентяй, который «лутал» денежки, пока все остальные работали в поте лица.

Предыстория

Началось всё в прошлом году: мне поступило предложение создать сайт с личным кабинетом и приложение для телефона — приложение, которое по фото ищет совпадения (не суть важно, что за приложение).

Я, как разработчик .NET, изучил материал, оценил возможности, составил архитектуру проекта и принял решение о численности команды.

Архитектура продумана и понятна, план работы расписан, команда собрана — приступаем.

Первые два месяца работаешь с энтузиазмом и ничего не замечаешь, деньги платят нормально.

Тесты → созвоны → обсуждения → рассуждения → созвоны → тесты...

Хотя кому я объясняю? Вы и сами всё понимаете — будни разработчика.

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

Захотел я разобраться, кто и что делает, почему, вроде, ты работаешь, все работают, а прогресс медленный. Решил посмотреть на изменения в Git: у каждого своя ветка, иногда работаем в одной. Начал изучать ветки репозитория и понимаю, что их не 4 и не 10, а целых 17. Для тестов, для проверки фич, чтобы попробовать... Переключаясь по веткам, понимаю, что кто-то мог не слить ветки, и коммитов просто гора. А как посмотреть, кто что делал именно в ветке после пяти месяцев разработки в режиме ежедневных 3–4 коммитов? Это утомительно.

Обратился я к могучему Google. Может быть, есть инструменты, которые позволяют просматривать репозиторий? И оказалось, что инструментов практически нет. Есть просмотр DIFF, информация о количестве коммитов у разработчика, но нужны его доступы... Словом, я пошёл неверным путём.

У меня были сомнения, что один из наших Антигероев просто сидел и делал коммиты по типу:

var a = 1;

Следующий коммит :

var a = 1; //Поставил коммит

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

И вот спустя несколько проектов я задумался: я пишу программы и какие-то разработки под себя, а в Open Source я практически ничего полезного не написал. Опыт позволяет, время есть... Открыл я свои старые репозитории. Подумал: обновлю и выложу в открытый доступ. Кому надо — найдёт.

Старые репозитории из времён, когда опыта было мало — это настоящий ящик Пандоры.

Возврат к истокам

Не найдя для себя ничего полезного в старом коде, я решил создать плагин для Visual Studio, который решал бы проблему «нахлебников». А почему бы не сделать полноценное расширение?

Как и что происходило, я думаю, не стоит описывать подробно.

Создаёшь аккаунт на маркетплейсе Microsoft, создаёшь карточку продукта, заполняешь данные и выкладываешь.

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

Реализация заняла три полноценных дня или неделю в режиме расслабления — и плагин готов.

Конечно, на первых этапах выглядело ужасно:

Одна из первых итераций
Одна из первых итераций

Но немного поигравшись с XAML, привёл к более приличному виду:

Последняя итерация
Последняя итерация
Как будто тут и было.
Как будто тут и было.

Готово!

Плагин этот — Open Source и полностью бесплатен.

Это мой первый опубликованный плагин, и я очень горжусь тем, что он в магазинах и есть скачивания. Не знаю, насколько он актуален для вас, может быть, у вас уже есть свои инструменты. Но если интересно, как устроен плагин и какие библиотеки используются — пользуйтесь, модифицируйте. Наверняка уже есть сотни таких решений, и моё не уникально. Но это мой первый.

Возможно, ваше видение поможет в обновлении плагина.

Плагины доступны для Visual Studio и для Rider:

VISUAL STUDIO MARKETPLACE

JETBRAINS MARKETPLACE

P. S. Ссылка на исходник есть в магазине приложений.

P. P. S. В голове и в процессе реализации есть другой плагин для совместной работы, и он уже почти готов. Когда есть Visual Studio Live Share, а для Rider — Code With Me, Live Share часто тормозит. Rider работает нормально, но только при временном нахождении в других странах. Чтобы всё работало через один плагин — такого я не видел. Но эта история будет в следующей главе.

Комментарии (29)


  1. n0isy
    25.07.2026 21:19

    Количество линий / коммитов часто не коррелирует с вложением. Как-то я искал ошибку в драйвере диска: Изменение в 1 бит кода заняло 1 месяц.


    1. FlyingDutchman2
      25.07.2026 21:19

      Изменение в 1 бит кода заняло 1 месяц.

      Аналогично: в 1999 году я как-то раз две недели искал причину ошибки в системе планирования полетов авиакомпании KLM. Причем часто работал более 8 часов в день. Когда нашел, для исправления добавил три строки кода.


      1. Sirion
        25.07.2026 21:19

        Присоединяюсь. Неделю искал эзотерический баг с авторизацией, причина оказалась в том, что сессии express были криво прикручены к вебсокетам. Исправление одна строчка, описание механизма возникновение бага размером со статью на хабр


    1. MiiNiPaa
      25.07.2026 21:19

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


  1. vpert
    25.07.2026 21:19

    Что здесь делает тег C++? История очень интересная, виден почерк автоматической руки гпт.

    Забавно было увидеть вместо дефиса целый английский dash.

    режиме ежедневных 3–4 коммитов? Это утомительно.

    А чем закончилась история с "камнем в команде"? Типа автор спустя несколько лет помнит обиды на человека, настолько он бесит что захотелось навайбкодить расширение?

    Мотивация для установки расширения ещё более странная: дайте доступ кому-то к вашей системе, чтобы увидеть какие-то чиселки.

    Желаю автору познакомиться с функционалом github, gitlab, gitea или любым другим российским аналогом. Забустят разработку проектов на несколько порядков. Существует также код ревью, на котором будет прямо видно кто что пишет.


    1. alcanoid
      25.07.2026 21:19

      Забавно было увидеть вместо дефиса целый английский dash.

      Чем забавно? Для указания интервалов используется как раз тире, а дефис вместо него ставят обычно по незнанию или из-за отсутствия нужного знака на клавиатуре.


      1. withkittens
        25.07.2026 21:19

        Чем забавно? Для указания интервалов используется как раз тире,

        У автора использовано короткое тире (en dash), которое в русскоязычной типографике не применяется.


  1. qxovxp
    25.07.2026 21:19

    Судя по описанию, плана работы не было, писали что могли и как могли.

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

    Ну и ревью же не по отдельным коммитам делается.


    1. dmalkr
      25.07.2026 21:19

      Но ведь можно ж человека попросить сразу в редакторе код писать. И он тогда сразу и задач в два раза больше может делать, а? Потом попросить автодополнение включить/настроить, чтобы ещё быстрее писал. А потом попросить, чтобы через ИИ коммиты прогонял, чтобы багов меньше было. <<<15 management interventions skipped>>> И вот уже программист в 1050 раз больше задач за единицу времени закрывает! А всего-то надо было его попросить не в пайнте кодировать!


      1. vladkorotnev
        25.07.2026 21:19

        И фару, главное фару на лоб ему!


  1. Void-Cowboy
    25.07.2026 21:19

    что-то какая-то фигня

    гитхаб и прочее из коробки умеет аналитику по пользоватлям

    даже если у вас такое секретное что только гит по локальной сети да флешками - IDE умеют красиво все визуализировать и фильтровать

    и наконец-то - групповая робота это декомпозиция. Нельзя пилить кто во что горазд, а если у вас все по плану и в рамках оговоренного функционала то в чем проблема?

    на сегодня даже менеджеры уже не страдают "количеством строк" как это было лет 15 назад где-то "популярно"


    1. withkittens
      25.07.2026 21:19

      на сегодня даже менеджеры уже не страдают "количеством строк" как это было лет 15 назад где-то "популярно"

      Сегодня они страдают количеством потраченных ИИ-токенов. Не шутка.


      1. Void-Cowboy
        25.07.2026 21:19

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

        просто из интереса и исследования


        1. withkittens
          25.07.2026 21:19

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


          1. Void-Cowboy
            25.07.2026 21:19

            ну так классика с трусами и крестиком

            даже в рамках работы, запускать агента на бесконечный анализ проблем и тесты не проблема, если важно токены жечь

            но вообще за пет-проекты обидно))


  1. zapishiscom
    25.07.2026 21:19

    А я бы наоборот - сделал бы приложение, которое имитирует онлайн в рабочем мессенддере (у нас слек). А то тут оказалось, начальник анализирует цвет кружочка моего юзера в слеке. И потом мне выговаривает - 2 часа был не онлайн. Пусть ему мой зелёный статус круглые сутки светится.

    Под разные мессенджеры сделать, кустомизабельно


  1. Oeaoo
    25.07.2026 21:19

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


  1. HomoLuden
    25.07.2026 21:19

    Я, мыть божет, что-то не увидел по тексту.. но каким образом каммиты вида

    --- a = 100500;
    +++ a = 100500; // абырвалг

    прошли через ревьюеров?

    • Мы будем использовать гитхаб...

    • Для ревью кода, чтобы некачественные и бесполезные каммиты на попадали в мастер? Да?

    • ...

    • Ведь да?


    1. Goodzonchik
      25.07.2026 21:19

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

      Но если смотреть на сам бесполезный комментарий - то да, соглашусь полностью, если комментарий не нужный, он не нужный.