Всем хорошего дня или вечера, Хабровцы! Это моя реальная история о том, как однажды в команде разработчиков .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:
P. S. Ссылка на исходник есть в магазине приложений.
P. P. S. В голове и в процессе реализации есть другой плагин для совместной работы, и он уже почти готов. Когда есть Visual Studio Live Share, а для Rider — Code With Me, Live Share часто тормозит. Rider работает нормально, но только при временном нахождении в других странах. Чтобы всё работало через один плагин — такого я не видел. Но эта история будет в следующей главе.
Комментарии (29)

vpert
25.07.2026 21:19Что здесь делает тег C++? История очень интересная, виден почерк автоматической руки гпт.
Забавно было увидеть вместо дефиса целый английский dash.
режиме ежедневных 3–4 коммитов? Это утомительно.
А чем закончилась история с "камнем в команде"? Типа автор спустя несколько лет помнит обиды на человека, настолько он бесит что захотелось навайбкодить расширение?
Мотивация для установки расширения ещё более странная: дайте доступ кому-то к вашей системе, чтобы увидеть какие-то чиселки.
Желаю автору познакомиться с функционалом github, gitlab, gitea или любым другим российским аналогом. Забустят разработку проектов на несколько порядков. Существует также код ревью, на котором будет прямо видно кто что пишет.

alcanoid
25.07.2026 21:19Забавно было увидеть вместо дефиса целый английский dash.
Чем забавно? Для указания интервалов используется как раз тире, а дефис вместо него ставят обычно по незнанию или из-за отсутствия нужного знака на клавиатуре.

withkittens
25.07.2026 21:19Чем забавно? Для указания интервалов используется как раз тире,
У автора использовано короткое тире (en dash), которое в русскоязычной типографике не применяется.

qxovxp
25.07.2026 21:19Судя по описанию, плана работы не было, писали что могли и как могли.
По мне - пусть хоть в пеинте код рисует и потом распознает, если задачи закрываются вовремя и с должным качеством.
Ну и ревью же не по отдельным коммитам делается.

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

Void-Cowboy
25.07.2026 21:19что-то какая-то фигня
гитхаб и прочее из коробки умеет аналитику по пользоватлям
даже если у вас такое секретное что только гит по локальной сети да флешками - IDE умеют красиво все визуализировать и фильтровать
и наконец-то - групповая робота это декомпозиция. Нельзя пилить кто во что горазд, а если у вас все по плану и в рамках оговоренного функционала то в чем проблема?
на сегодня даже менеджеры уже не страдают "количеством строк" как это было лет 15 назад где-то "популярно"

withkittens
25.07.2026 21:19на сегодня даже менеджеры уже не страдают "количеством строк" как это было лет 15 назад где-то "популярно"
Сегодня они страдают количеством потраченных ИИ-токенов. Не шутка.

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

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

Void-Cowboy
25.07.2026 21:19ну так классика с трусами и крестиком
даже в рамках работы, запускать агента на бесконечный анализ проблем и тесты не проблема, если важно токены жечь
но вообще за пет-проекты обидно))

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

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

HomoLuden
25.07.2026 21:19Я, мыть божет, что-то не увидел по тексту.. но каким образом каммиты вида
--- a = 100500; +++ a = 100500; // абырвалгпрошли через ревьюеров?
Мы будем использовать гитхаб...
Для ревью кода, чтобы некачественные и бесполезные каммиты на попадали в мастер? Да?
...
Ведь да?

Goodzonchik
25.07.2026 21:19А если это в одном мерж-реквесте, тогда нет разницы в каком коммите это добавили, потому что вряд ли при ревью будут смотреть коммиты отдельно, и пройти будет легче. А если ещё сделать таких правок кучу, чтобы сложнее было ревью делать.
Но если смотреть на сам бесполезный комментарий - то да, соглашусь полностью, если комментарий не нужный, он не нужный.
n0isy
Количество линий / коммитов часто не коррелирует с вложением. Как-то я искал ошибку в драйвере диска: Изменение в 1 бит кода заняло 1 месяц.
FlyingDutchman2
Аналогично: в 1999 году я как-то раз две недели искал причину ошибки в системе планирования полетов авиакомпании KLM. Причем часто работал более 8 часов в день. Когда нашел, для исправления добавил три строки кода.
Sirion
Присоединяюсь. Неделю искал эзотерический баг с авторизацией, причина оказалась в том, что сессии express были криво прикручены к вебсокетам. Исправление одна строчка, описание механизма возникновение бага размером со статью на хабр
MiiNiPaa
У нас по такой метрике выходит, что джун, которого посадили приводить унаследованный код к корпоративному стилю продуктивней всех остальных вместе взятых.