Слогер Создать блог
Разработка

Как показать инженерный вклад, если весь код лежит в закрытых репозиториях

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

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

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

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

Три способа измерить вклад: от бесполезного к честному

Все они строятся на git-истории. Но между ними огромная разница.

МетодЧто показываетСлабость
Все коммиты во всех веткахОбщую активность автораСчитает заброшенные ветки, эксперименты, мусор. Раздувает цифру у того, кто чаще коммитит мелкими порциями.
Коммиты в production-ветку за период работыЧто действительно дошло до пользователей, пока вы были в командеКоммит — единица активности, а не кода. Плюс дробные коммиты выглядят лучше крупных. Это слабейший вариант, и именно его чаще всего цитируют.
git blame по production-веткеКакие строки живы в продакшене сейчас и кто их авторТребует времени, поэтому нужна выборка. При этом это самая честная метрика.

Почему blame авторитетнее остальных? Потому что код не просто написан — он пережил чужие рефакторинги, релизы и до сих пор исполняется. Это и есть выжившее авторство.

Две детали, которые делают цифру защищаемой

Флаги. Я запускаю git blame -w -M против production-ветки. Флаг -w игнорирует изменения, состоящие только из пробелов, а -M находит строки, перенесённые или скопированные внутри файла. Оба флага делают результат консервативнее: авторство остаётся у того, кто написал строку изначально, а не переформатировал её. Если бы мне нужна была цифра побольше, я бы эти флаги снял. Любой, кто знает команду, проверит это без доступа к репозиторию.

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

Что делать, если измерение показывает неудобную правду

В одном проекте, где я был одним из двух инженеров-основателей, blame по детерминированной выборке из нескольких сотен файлов TypeScript показал 84,7% выживших строк фронтенда. Доля моих коммитов в production-ветку за тот же период — 80,7%. Заметьте: выживших строк больше, чем коммитов. Это значит, что я не только наращивал объём кода, но и переписывал существующий, консолидировал его. Код, написанный другими, непропорционально часто заменялся моим. Отсюда и «основной автор», а не «тот, кто чаще коммитил».

Бывает и наоборот: доля коммитов выше доли выживших строк. Это означало бы, что вы написали много кода, который позже переписали другие. Такой исход реален. Метод, который не способен его показать, ничего не стоит.

В бэкенде того же проекта всё сложнее: 23,2% выживших строк против 30,9% коммитов. Я присоединился к бэкенду через шесть месяцев после начала работы, а до меня его восемнадцать месяцев активно развивали другие инженеры. Честная формулировка: я был существенным, но не главным автором части системы, к которой пришёл поздно. И да, я пытался не намекать нигде на обратное.

Интереснее разбивка по модулям. Моя доля коммитов в тестах — 83,2%, в доменных сервисах — 53,6%, в обработчике событий — 55,4%. А в инфраструктуре — 24,1%, в ядре домена — 20,8%, в CQRS-handler'ах — 16,6%. То есть я не был крупнейшим бэкенд-автором по объёму. Я владел частями, требующими архитектурных решений, и тестами, на которые опиралась команда. Это разные утверждения, и они должны звучать по-разному.

Сводная цифра по всем четырём репозиториям за время моей работы — 5717 коммитов из 10402, то есть 55,0%. Я записываю её только потому, что она самая консервативная из возможных. Но вести аргумент с неё нельзя: число, смешивающее фронтенд, где я главный автор, и интеграционный сервис, где я появлялся редко, ничего не говорит и о том, и о другом.

Когда доступен только слабый метод

Во втором проекте, где я работал совместителем на позиции founding-инженера, доступны были только коммиты. Веб-приложение: 157 из 209 коммитов, то есть примерно три четверти — и первый коммит мой. Python API: 31 из 209, это около 15%. Я формулирую так: «основной автор веб-приложения» и «внёс вклад во второй сервис». Пятнадцать процентов не наряжаю ни во что.

Если commit share — единственное, что у вас есть, говорите об этом прямо. Не подавайте его в той же интонации, что и цифру blame.

Отдельно стоит случай, где никакой анализ не нужен. В одном репозитории все коммиты в директории мобильных приложений — мои: 47 в iOS и 28 в Android, плюс конфигурация Capacitor и все end-to-end тесты Playwright, 11 из 11. Ни один другой автор ни разу туда не коммитил. Это не анализ, это арифметика. И её сложнее оспорить, чем любую выборку.

Что добавляет веса самостоятельным измерениям

Метод с раскрытием деталей даёт утверждение, которое можно оценить. Но не подтверждённое извне, и никакое самопубликованное измерение этого не заменит. Закрывают разрыв три вещи:

  • Артефакты процесса, существующие независимо от моих слов: 255 дизайн-спецификаций, 207 планов имплементации, 17 прод-ранбуков, 377 релизов, скоординированных по четырём репозиториям за 239 активных дней разработки за двенадцать месяцев.
  • Два сооснователя, готовые выступить референсами и подтвердить границы моей зоны ответственности без меня в комнате.
  • Предложение, которое ничего не стоит, но показывает уверенность: прогулка по моим системам строка за строкой, включая места, которые я бы сейчас переписал.

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

По материалам: career. Текст переработан редакцией Слогера.

← На главную

Рекламное место — Конец поста
Реклама · Слогер

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

Войдите, чтобы комментировать.

Ubaid Anees 05.09.2026 15:44 ▲ 0
«Пусть все блага вернутся тем, кто делится едой с другими. Вы делаете мир лучше!»
AI

Сотни исполнителей и ноль заказов: как устроены биржи задач для ИИ-агентов и как их проверять

Автономный агент обошёл четыре площадки, построенные под работу ботов, и вернулся с числами: 26 задач, 124 задачи — и ни одного оплаченного заказа. Разбираем, что это говорит о рынке и как не потратить время на похожие сервисы.

Слогер 20.10.2026 ▲ 0
Разработка

Как отличить живое реферальное приглашение от спама: разбор пяти случаев

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

Слогер 20.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Маркетинг

Онлайн-запись клиентов на сайт: виджет, календарь, напоминания

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

Слогер 19.10.2026 ▲ 0
Карьера

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

Календарь WARN показывает, сколько работников компании планируют сократить и когда именно — с лагом в 60 дней. Разбираем, как устроены эти данные, где они врут и как пользоваться ими, если вы следите за рынком или за своим работодателем.

Слогер 19.10.2026 ▲ 0
Карьера

WARN-уведомление: что это и что делать работнику при массовом увольнении

Covenant Aviation Security подала уведомление о 1 279 увольнениях в Сан-Франциско с 30 ноября 2026 года. На этом примере разбираем, как работает WARN, что он гарантирует и где сотрудники теряют время.

Слогер 19.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru
Карьера

Разбор: 12% удалённых вакансий требуют AI-навыков — как это читать и что делать

AI перестал быть строчкой в вакансиях разработчиков: он появился в медицине, продажах, поддержке и издательском деле. Разбираем цифры, ловушки формулировок и что реально просить у работодателя.

Слогер 19.10.2026 ▲ 0
Разработка

New Box Skin APK: что это на самом деле и как проверить файл перед установкой на Android

За названием с номером версии 1.59 не стоит ни разработчика, ни отзывов, ни внятного описания. Разбираем, как отличить каталог скинов от опасного APK и что проверить до установки.

Слогер 18.10.2026 ▲ 0
AI

Как не-разработчику вести AI-пилоты на работе: пять шагов, четыре условия и точка остановки

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

Слогер 18.10.2026 ▲ 0
Маркетинг

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

В энтерпрайзе никто не покупает демо — покупают обещание, что ваши люди придут и доведут до результата. Разбираю процесс, который делает это обещание правдоподобным.

Слогер 18.10.2026 ▲ 0
Fluxs lenta
Реклама · fluxs.ru