feat(okr): guardrail som KR-designmoenster i skriv og kvalitet
This commit is contained in:
parent
3f7ba74afa
commit
3ebb333381
3 changed files with 66 additions and 0 deletions
|
|
@ -56,6 +56,25 @@ Anker → 0-10-skala er definert i rubrikkfila («Bruk»-avsnittet): anker 1 →
|
|||
anker 2 → 3-4, anker 3 → 5-6, anker 4 → 7-8, anker 5 → 9-10. Det er rubrikkfila som
|
||||
eier skalaen; ikke dupliser den her.
|
||||
|
||||
## Guardrail-sjekkpunkt
|
||||
|
||||
Sjekk om KR-settet har **minst én guardrail** — en metrikk som ikke skal forbedres,
|
||||
men som avslører om et annet KR forbedres på bekostning av noe. Mangler den, er
|
||||
settet blindt for skadevirkninger: det kan nå 1.0 mens noe utenfor målebildet
|
||||
forvitrer.
|
||||
|
||||
Sjekkpunktet henger sammen med dimensjonen **Leading/lagging-balanse** i rubrikken:
|
||||
guardrailen er ofte stedet lagging-halvdelen av paret hører hjemme, fordi den måler
|
||||
tilstanden som skal *bevares* mens leading-indikatoren beveger seg. Scor
|
||||
dimensjonen i rubrikken; bruk dette punktet til å si om guardrailen finnes i det
|
||||
hele tatt.
|
||||
|
||||
Flagg særskilt **rangerings-KR-er** mot andre virksomheter (typisk KOSTRA-plassering).
|
||||
SSB advarer selv om at forskjeller i utgifter per person i målgruppen «ikke
|
||||
utelukkende kan tolkes som et resultat av prioriteringer på lokalt nivå» — en
|
||||
rangering er derfor ikke et holdbart KR. Foreslå en guardrail på egen tjenestekvalitet
|
||||
i stedet.
|
||||
|
||||
## Vanlige antipatterns å sjekke
|
||||
|
||||
1. **Aktivitets-OKR** — måler hva vi gjør, ikke hva vi oppnår
|
||||
|
|
|
|||
|
|
@ -86,6 +86,33 @@ Generer målbare Key Results for et gitt Objective.
|
|||
- **2-5 stk per Objective** — typisk 3
|
||||
- **Balanserte** — minst én per dimensjon (kvantitet, kvalitet, hastighet)
|
||||
- **Har datakilde** — vet hvor tallene kommer fra
|
||||
- **Minst én guardrail** — en metrikk som ikke skal forbedres (se under)
|
||||
|
||||
### Guardrail — metrikken som ikke skal forbedres
|
||||
|
||||
Et KR-sett trenger **minst én guardrail**: en metrikk som ikke er et forbedringsmål,
|
||||
men som avslører om et annet KR forbedres på bekostning av noe. Guardrailen har et
|
||||
gulv eller tak («skal ikke falle under», «skal ikke overstige»), ikke en
|
||||
baseline → target-bane. Uten den kan settet nå 1.0 mens noe utenfor målebildet
|
||||
forvitrer.
|
||||
|
||||
Formuler den som en grense:
|
||||
|
||||
```
|
||||
KR3 (guardrail): Brukertilfredshet skal ikke falle under 4,1 av 5 mens
|
||||
saksbehandlingstiden reduseres
|
||||
```
|
||||
|
||||
**Hvorfor dette ikke er byråkrati:** en rangerings-KR mot andre kommuner («komme
|
||||
blant de 10 beste i KOSTRA») er metodisk uholdbar — SSB advarer selv om at
|
||||
forskjeller i utgifter per person i målgruppen «ikke utelukkende kan tolkes som et
|
||||
resultat av prioriteringer på lokalt nivå». Å erstatte rangeringen med en guardrail
|
||||
på egen tjenestekvalitet er guardrail-tenkning i praksis: du måler det du faktisk
|
||||
rår over, og verner det du ikke vil miste.
|
||||
|
||||
Guardrailen er ofte det naturlige stedet å plassere lagging-halvdelen av
|
||||
leading/lagging-paret — se dimensjonen **Leading/lagging-balanse** i
|
||||
`references/okr-quality-rubrics.md`.
|
||||
|
||||
### Typer Key Results
|
||||
|
||||
|
|
|
|||
|
|
@ -470,6 +470,26 @@ test('(g3) dimensjonstall i kvalitet + kvalitetssjekker == faktisk antall i rubr
|
|||
assert.deepEqual(drift, [], `dimensjonstall-drift (rubrikkfila = ${obj}+${kr}=${total}):\n${drift.join('\n')}`);
|
||||
});
|
||||
|
||||
// --- (g4) guardrail som KR-designmoenster (D7 steg 16) ---
|
||||
//
|
||||
// Baseline foer steget: 0 treff paa "guardrail" i commands/, 2 i okr-antipatterns.md
|
||||
// (:197 og :220). Begrepet fantes altsaa i kunnskapslaget, men naadde aldri malene
|
||||
// pluginen faktisk emitterer -- samme uwirede-ledd-form som D6 steg 14 lukket.
|
||||
// kvalitet.md skal dessuten KOBLE guardrail til leading/lagging-dimensjonen fra
|
||||
// steg 15; uten koblingen blir sjekkpunktet et loest ord.
|
||||
test('(g4) guardrail er wiret som KR-designmoenster i skriv + kvalitet', () => {
|
||||
const mangler = [];
|
||||
for (const f of ['commands/skriv.md', 'commands/kvalitet.md']) {
|
||||
if (!/guardrail/i.test(readDoc(f))) mangler.push(`${f}: mangler guardrail-omtale`);
|
||||
}
|
||||
const kval = readDoc('commands/kvalitet.md');
|
||||
const koblet = kval
|
||||
.split('\n')
|
||||
.some((l) => /guardrail/i.test(l) && /leading\/lagging|lagging/i.test(l));
|
||||
if (!koblet) mangler.push('commands/kvalitet.md: guardrail ikke koblet til leading/lagging-dimensjonen');
|
||||
assert.deepEqual(mangler, [], `guardrail-designmoenster (anker: okr-antipatterns.md:197,220):\n${mangler.join('\n')}`);
|
||||
});
|
||||
|
||||
// (h) F-a fjerning. RED til Step 7. Score->modenhet-avledning borte; sandbagging-trendsignal til stede.
|
||||
test('(h) F-a: ingen score->modenhet-avledning; sandbagging-trendsignal til stede', () => {
|
||||
const problems = [];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue