Przejdź do głównej zawartości

Kalorie, Przyrosty i Linie

Kalorie i Przyrosty to własne jednostki Q247 do mierzenia wysiłku programistycznego. Liczone są z treści i rozmiaru zarejestrowanych zmian.

Przyrost

Przyrost to jedna zarejestrowana zmiana, jednej z pięciu postaci, w zależności od źródła:

  • Git: commit, push, pull request.
  • Jira: ticket.
  • Confluence: strona.

To, co dokładnie liczy się jako przyrost w danym miejscu aplikacji, zależy od wybranego typu kalorii:

  • Łącznie: commity, pushe, pull requesty, tickety Jira i strony Confluence razem.
  • Kodowanie: tylko przyrosty z repozytorium.
  • Dokumentacja: tylko tickety Jira i strony Confluence.

Kalorie

Kalorie mierzą zaangażowanie włożone w zmianę. Składają się na nie dwa czynniki: rozmiar zmiany (czyli Linie) oraz zróżnicowanie jej treści. Im większa zmiana i im bardziej zróżnicowana treść, tym więcej Kalorii.

Zróżnicowanie treści mierzone jest entropią Shannona, miarą z teorii informacji mówiącą, ile bitów informacji niesie przeciętny znak tekstu. Tekst powtarzalny i przewidywalny ma entropię niską, zróżnicowany wysoką.

Entropia liczona jest z kilku fragmentów tekstu związanych ze zmianą (m.in. treść diffa, wiadomość commita, powiązany ticket) i łączona w jeden wynik. Prosty push bez różnic w treści (np. utworzenie tagu, brak diffa do zmierzenia) zawsze liczy się jako stała, niewielka wartość, niezależnie od Linii.

Ten sam wzór stosowany jest do każdej zmiany, niezależnie od języka programowania i typu pliku.

Wykluczanie plików z wyliczeń

Kalorie liczone są osobno dla każdego pliku w commicie, więc pliki zaburzające obraz pracy można wyłączyć z wyliczeń. Służą do tego Wykluczenia wzorców plików w Konfiguracji organizacji: lista wzorców glob (*, **, ?, bez rozróżniania wielkości liter), którą administrator prowadzi raz dla całej organizacji. Plik pasujący do któregokolwiek wzorca jest pomijany przy liczeniu Kalorii i Linii, a typowe wpisy na tej liście to pliki lockfile, katalogi zależności i kod wygenerowany automatycznie, na przykład **/package-lock.json albo **/node_modules/**.

Zmiana tej listy przelicza również dane historyczne, więc dopisanie wzorca obniża Kalorie także za okresy sprzed zmiany.

Wykluczenia commitów

Poza wzorcami plików działają trzy inne mechanizmy. Q247 automatycznie pomija commity będące cofnięciem innego commita (revert) albo powtórzeniem już policzonego (cherry-pick, rebase), co opisuje Wykluczanie commitów. Kierownik projektu albo menedżer zespołu może wykluczyć pojedynczy commit z widoku projektu, zespołu czy uczestnika. Administrator może dodatkowo ustawić próg Kalorii, powyżej którego pojedynczy przyrost chowa się z list szczegółowych, co przydaje się przy jednorazowym imporcie dużego repozytorium.

Podstawowa miara produktywności

Kalorie są najczęściej używaną miarą w Q247. Opierają się na nich dalsze wskaźniki, w tym Wysiłek z Indeksów dynamiki pracy oraz Ocena.

Kalorie nie są oceną jakości kodu ani trudności zadania. Wysoki wynik nie znaczy, że zmiana była dobra, a niski, że była zła.

Linie

Liczba zmienionych linii kodu, dodanych i usuniętych razem, w przyroście. To surowa miara rozmiaru zmiany, bez żadnej korekty.

Warianty i poziomy agregacji

Wszystkie trzy miary agregują się tak samo. Wartość uczestnika za okres to suma z jego przyrostów, a wartość projektu czy zespołu to suma wartości jego uczestników. Ten sam commit wchodzi więc jednocześnie do wyniku autora, jego zespołu i projektu, do którego należy repozytorium.

Każda z miar występuje w kilku wariantach, zależnie od poziomu i ujęcia czasowego:

WariantUczestnikProjekt / zespół
Suma za okresKalorie (łącznie), Przyrosty (łącznie), Linie (łącznie)te same trzy kolumny, zsumowane po uczestnikach
Średnia dziennaDzienne kalorie, Dzienne przyrosty, Dzienne linieDzienne kalorie / osoba, Dzienne przyrosty / osoba, Dzienne linie / osoba
Na jeden przyrostKalorie / przyrostKalorie / przyrost

Dzienna wartość dla uczestnika to suma podzielona przez liczbę dni kalendarzowych w okresie. Dla projektu czy zespołu dzienna wartość na osobę dodatkowo dzieli to przez Efektywną pojemność zespołu, która uwzględnia, że nie każdy pracował przez cały okres. Dzielenie przez samą liczbę uczestników zaniżałoby wynik zespołu, do którego ktoś dołączył w połowie okresu.

Wariant "na jeden przyrost" jest dostępny wyłącznie dla Kalorii, bo powstaje z podzielenia Kalorii przez Przyrosty. Pokazuje przeciętną wielkość jednej zmiany: wysoka wartość oznacza rzadkie, duże commity, niska częste i drobne.

Uczestnik a projekt/zespół

Wartość na poziomie projektu czy zespołu to suma tych samych, indywidualnych wartości uczestników, a w wariantach "na osobę" ta suma podzielona przez Efektywną pojemność zespołu. Patrząc na tabelę uczestników danego projektu, warto pamiętać, że kilka osób o bardzo różnym wkładzie może dać ten sam, "przeciętny" wynik zespołu, dlatego przy interpretacji wartości zespołowej dobrze jest zejść niżej, do tabeli uczestników tego zespołu czy projektu, i sprawdzić, czy wynik jest rozłożony równo, czy generowany głównie przez 1-2 osoby.

Zobacz też