Документация Engee
Notebook

Расчёт потребления пиццы и кофе в IT-отделе

Исследование корреляции между строками кода и количеством съеденной пиццы

Теоретическая база

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

где — коэффициент настроения разработчика, — фактор выходного дня.

Количество кофе (в чашках) определяется через производную продуктивности:

где — коэффициент усвоения кофеина.

In [ ]:
using Statistics, Random
gr()

# Параметры модели
α = 2.5    # коэффициент настроения (понедельник)
β = 1.5    # фактор выходного дня
γ = 0.7    # усвоение кофеина

# Данные: часы работы → строки кода
часы = 0:8
строки_кода = [0, 15, 45, 80, 95, 110, 115, 105, 100]

# Расчёт пиццы (обратная формула)
пицца_нужно = (строки_кода ./ α).^(1/β)

# Расчёт кофе (производная)
кофе_нужно = diff(строки_кода) ./ γ

println("Максимум строк кода: $(maximum(строки_кода)) в $(часы[argmax(строки_кода)]):00")
println("Пиццы нужно максимум: $(round(maximum(пицца_нужно), digits=1)) кусков")

Визуализация данных

На графике видно, как продуктивность зависит от времени суток:

In [ ]:
# График продуктивности
plot(часы, строки_кода, 
     marker=:circle, lw=2, 
     xlabel="Время (часы)", ylabel="Строки кода",
     label="Продуктивность", legend=:topleft,
     size=(600, 350))
vline!([2, 5], lw=1, ls=:dash, c=:gray, label="Кофе-брейки")
In [ ]:
# Тепловая карта: пицца × кофе по дням недели
дни = ["Пн", "Вт", "Ср", "Чт", "Пт"]
матрица_потребления = [
    2 3 3 4 5;   # завтрак
    1 2 2 3 4;   # обед
    1 1 2 2 3;   # ужин
    3 4 5 6 8;   # ночной дедлайн
]

heatmap(дни, ["Завтрак","Обед","Ужин","Дедлайн"], 
        матрица_потребления,
        c=:YlOrRd, size=(500, 300),
        xlabel="День недели", ylabel="Приём пищи",
        title="Тепловая карта: куски пиццы",
        legend=:right, colorbar_title="Куски")
In [ ]:
# 3D-поверхность продуктивности
x = range(0, 4, length=30)   # пицца
y = range(0, 6, length=30)   # кофе
продуктивность_3d = [α * p^β * exp(-c/γ/5) + randn()*5 
                     for p in x, c in y]

surface(x, y, продуктивность_3d',
        xlabel="Пицца (куски)", ylabel="Кофе (чашки)",
        zlabel="Строки кода",
        c=:plasma, size=(550, 350),
        title="3D-поверхность продуктивности")

Выводы

  1. Оптимальное соотношение: 3 куска пиццы + 4 чашки кофе
  2. В пятницу продуктивность падает на 30%
  3. Ночные дедлайны требуют удвоенной дозы пиццы

Рекомендации

  • Закупать пиццу из расчёта куска на разработчика
  • Кофе-машину располагать не далее метров от рабочих мест
  • В пятницу после обеда переходить на decaf

Формула счастья разработчика:

где — рабочий день в часах, — random seed.