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.
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.
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:
| Wariant | Uczestnik | Projekt / zespół |
|---|---|---|
| Suma za okres | Kalorie (łącznie), Przyrosty (łącznie), Linie (łącznie) | te same trzy kolumny, zsumowane po uczestnikach |
| Średnia dzienna | Dzienne kalorie, Dzienne przyrosty, Dzienne linie | Dzienne kalorie / osoba, Dzienne przyrosty / osoba, Dzienne linie / osoba |
| Na jeden przyrost | Kalorie / przyrost | Kalorie / 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.
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ż
- Typ kalorii: filtr Łącznie / Kodowanie / Dokumentacja, decydujący które przyrosty się liczą
- Pulpit, Projekt, Zespół, Uczestnik: widoki, na których te metryki występują