Ziel: Vorhersagen, wie viel Zeit ein Bukkit-Entwickler braucht, um gRPC produktiv zu nutzen. Dazu trennen wir Feature-Aufwand (Produktivcode) und Anlern-Aufwand (Lernrampe), rechnen beides in Points und wandeln Points über Velocity in Personentage um.
Gesamtdauer besteht aus:
- Feature-Aufwand: der konkrete Code, den wir liefern.
- Anlern-Aufwand: die Lernrampe (gRPC/Tooling/Async/Shading), bis jemand stabil liefern kann.
Beides wird als Points bewertet.
Wir bewerten pro Dimension einen Wert von 1 bis 5 und gewichten ihn.
Dimensionen (1–5):
- C = Logik-Komplexität
- I = Integrationen/Externes (gRPC-Service, Auth, Netzwerk)
- B = Bukkit-/Plugin-Friction (Mainthread, Lifecycle, Scheduler)
- U = Unklarheit/Risiko
- Q = Qualitätsanspruch (Tests, Timeouts, Retries, Observability)
Formel: P_feat = 2C + 1.5I + 1B + 1.5U + 1*Q
Für relevante Skill-Themen schätzen wir Familiarity F im Bereich [0..1]:
- 0 = komplett neu
- 1 = sitzt sicher
Faktoren:
- F_grpc = gRPC/Protobuf Erfahrung
- F_async = Async/Concurrency Erfahrung
- F_build = Gradle/Maven Tooling & Codegen Erfahrung
- F_shade = Shading/Relocation/Plugin-Classloader Erfahrung
Formel: P_learn = 8*(1 - F_grpc) + 3*(1 - F_async) + 2*(1 - F_build) + 4*(1 - F_shade)
Wir nehmen:
- V = Velocity in Points pro Personentag (aus historischen Daten, sonst schätzen)
- M = Overhead-Faktor (Meetings, Reviews, CI, Support), typisch 1.15–1.40
Formel: T_days = ((P_feat + P_learn) / V) * M
Feature: Plugin lädt Spielerprofil per unary gRPC call, macht das async, bringt Ergebnis main-thread-sicher zurück, mit Timeouts/Logging und sauberem Packaging.
C=2 (wenig Logik) I=3 (externer Call, Channel, Fehlerfälle) B=3 (Bukkit-Threading/Lifecycle) U=2 (relativ klar) Q=3 (solide Robustheit)
Berechnung: P_feat = 22 + 1.53 + 13 + 1.52 + 1*3 = 4 + 4.5 + 3 + 3 + 3 = 17.5
F_grpc=0.1 (fast neu) F_async=0.6 (okay) F_build=0.7 (okay) F_shade=0.3 (unsicher)
Berechnung: P_learn = 8*(1-0.1) + 3*(1-0.6) + 2*(1-0.7) + 4*(1-0.3) = 80.9 + 30.4 + 20.3 + 40.7 = 7.2 + 1.2 + 0.6 + 2.8 = 11.8
P_total = P_feat + P_learn = 17.5 + 11.8 = 29.3
Annahmen: V = 5 Points/Tag M = 1.25
T_days = (29.3 / 5) * 1.25 = 5.86 * 1.25 = 7.325
Ergebnis: ca. 7.3 Personentage bis “produktiver gRPC-Client im Bukkit-Plugin” (unter diesen Annahmen).
Für eine konservativere Schätzung: T_P80 ≈ T_days * 1.4 bis 1.6
Grund: Bukkit + gRPC trifft gerne auf Threading-Fallen, Dependency-Konflikte, Shading/Relocation und Debugging.
Damit das Modell treffsicher wird, braucht ihr:
- historische Daten → Velocity V bestimmen
- 10–30 alte Tickets nachträglich scoren → Gewichte feinjustieren
Ohne Kalibrierung bleibt es eine Zahl, die sich wichtig fühlt.