Два программиста обсуждают задачи, которые они закрывали из багтрекера.
— В прошлом месяце у меня было 6 задач и я успешно закрыл 5 из них, — говорит Егор.
— Ты круче: на мне висело в прошлом месяце 10 задач, а я закрыл только 8, — отвечает Вася.
— Ну да, всё правильно, 5/6 > 8/10, я красавчик, — улыбается Егор.
— А я зато в этом месяце закрыл 4 задачи из 10! — не унимается Вася.
— И что? Я всё равно работаю лучше тебя, потому что закрыл уже 6 из 14 задач на этот месяц, а 6/14 > 4/10, — снова улыбается Егор в ответ.
— Да что ж такое! За эти два месяца у каждого из нас было по 20 задач, и я сделал 12, а ты только 11! Но в каждом месяце я тебе проигрываю по процентам выполнения. Как это вообще возможно?! — злится Вася.
— Вот поэтому я уже мидл, а ты всё ещё джуниор, — отвечает Егор и уезжает в закат на своей «Феррари».
Объясните, как такое возможно: сделать больше задач за весь период, но проигрывать каждый месяц?
Всё противоречие здесь происходит от того, что Вася складывает задачи в одно целое и не учитывает разную степень нагрузки по ним.
Вместо этого Васе нужно было сложить не отдельно общие задачи каждого и количество выполненных из них, а сложить дроби, которые он сам и получил.
Если бы каждый из них выполнял норму в каждом месяце, то процент выполнения за 2 месяца был бы 200% — 100% за прошлый месяц и 100% за этот. Запомним это.
За прошлый месяц Вася выполнил норму по задачам из трекера на 8/10, а за этот — на 4/10. Теоретически он должен был сделать 20 задач, но сделал меньше. Получается, что всего за два месяца Вася выполнил норму на:
8/10 + 4/10 = 12/10 = 1,2
Умножим это на 100%, чтобы получить процент выполнения за 2 месяца у Васи: 1,2 × 100% = 120% из 200%
.
Теперь посчитаем, как поработал Егор. Для этого приведём дроби к общему знаменателю перед сложением:
5/6 + 6/14 = 70/84 + 36/84 = 106/84 = 1,26 из 2.
Умножим это на 100%, чтобы получить процент выполнения за 2 месяца у Егора: 1,2 × 100% = 126% из 200%
, а это больше, чем тот же показатель у Васи.
Вася складывал задачи напрямую, а Егор — пропорционально нагрузке, поэтому на самом деле парадокса тут нет. Поэтому Егор и стал мидлом — умеет правильно считать и распределять нагрузку по рабочим задачам.