Всем хорошего дня или вечера, Хабровцы! Это моя реальная история о том, как однажды в команде разработчиков .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 работает нормально, но только при временном нахождении в других странах. Чтобы всё работало через один плагин — такого я не видел. Но эта история будет в следующей главе.
Комментарии (45)

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), которое в русскоязычной типографике не применяется.

ermouth
25.07.2026 21:19Российская типографика явно не регламентирует какое тире использовать. Среднее тире визуально оправдано, потому что длинное по-хорошему надо отбивать не полными, а короткими пробелами, иначе дыра в тексте получается. Короткий пробел при наборе поставить – тот ещё квест даже с десктопа.
Среднее тире с обычными пробелами вокруг такого визуального эффекта не даёт. И с телефона – вот как здесь – запросто набирается.

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

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

vladkorotnev
25.07.2026 21:19И фару, главное фару на лоб ему!

dmalkr
25.07.2026 21:19Ну, учитывая, что сейчас почти повсеместно “рынок работодателя”, оснащённые фарами программисты не за горами.

vladkorotnev
25.07.2026 21:19Так уже, ещё и обсуждают в километровых тредах, чья фара лучше светит, и как заставить её светить дольше от одной батарейки, и у кого лампочки при этом дешевле.
Особо продвинутые оснащают фарами уже свои фары, чтобы лопата копала сама по себе на фотонной тяге — и если руки у изначального экспериментатора не совсем из жопы, то иногда это даже прокатывает!

dmalkr
25.07.2026 21:19Это моя винтовка. Таких винтовок много, но эта моя. Моя винтовка - мой лучший друг. Это - моя жизнь. Я должен уметь владеть оружием так же, как владею своей жизнью. Без меня моя винтовка бесполезна. Без моей винтовки бесполезен я.

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 часа был не онлайн. Пусть ему мой зелёный статус круглые сутки светится.
Под разные мессенджеры сделать, кустомизабельно

Satyricon
25.07.2026 21:19Нас однажды обязали утром в жире переносить карточку, что пришёл на работу. По карточке следили во сколько пришёл. Оказалось, что апи к жире был открыт, поэтому простой bat по расписанию решил вопрос. правда оказалось, что я и в выходные на работу приходил )) Забыл исключение сделать. Недолго, правда, эта практика прожила.

WhiteXopc
25.07.2026 21:19Иногда, чтобы решить какую-то сложную задачу - надо полежать, подумать, чтобы кровоток к мозгу увеличить))
К сожалению кружочки этого не учитывают.

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

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

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

JBFW
25.07.2026 21:19Если в коде встречается захардкоженная константа - комментарий к ней может оказаться очень полезным.
Даже если для человека "вне контекста" он выглядит как абырвалг, а для автора не нужен, как очевидный.

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