← alle skriv

"Contracts must be written for people to read"

“Programs must be written for people to read, and only incidentally for machines to execute” – SICP

Sitatet fra Structure and Interpretation of Computer Programs lar seg omskrive til kontraktsarbeid med enkle grep:

Contracts must be written for people to read, and only incidentally for lawyers to interpret

Kontrakter skal altså ikke bare skrives eller skrives ut, men først og fremst leses. Av mennesker. Derfor må kontraktene bygges logisk, i menneskelig språk, uten det unødvendige, slik at vanlige folk forstår og kan følge kontraktens anvisninger.

Det er klare likheter mellom kode og kontrakt: begge skal styre aktører, tilstander og prosesser, og reagere på hendelser. Det som er forskjellig, er blant annet språk, tolknings- og kjøretidsmiljø og evne til å håndtere unntak. I koden fanges unntak eksplisitt, i kontrakter kan man ende opp med improvisasjon.

Varig, nyttig, vakker

Arkitekter tegner bygninger, IT-arkitekter tegner systemer, kontraktsarkitekter tegner kontrakter. Eller, nei, vent – det finnes jo ikke kontraktsarkitekter!

Vitruvius mente at gode bygg er varige, nyttige og vakre. Utviklere vil helt sikkert omtale god programvare med samme adjektiver. Men hva med kontrakter?

Advokater som lager kontrakter, er ingen arkitekter. Advokatene tenker på situasjonen når noe kan gå galt og kontrakten plutselig ikke gir svar på hvordan en hendelse skal håndteres. Da må mange tenkelige situasjoner generaliseres. Så forsøker de å formulere seg slik at det ikke går galt, altså at ikke en situasjon faller mellom alle de oppsatte stolene. Da blir språket gjerne advokatsk, inkludert, men ikke begrenset til, definisjon av “og” og “eller”, definerte termer med Store Forbokstaver og Ord Som Ser Ut Som Termer, men som mangler en definisjon. Det er derfor ingenting lar seg lese.

Advokatene er opptatt av at kontrakten skal være varig, men tenker som oftest ikke på det vakre og det nyttige.

Jeg er opptatt av å skrive slik at teksten ikke skremmer leseren, IKKE SKRIKER og ikke bruker sjargong som gjør at leseren føler seg dum. Mitt mål er å fjerne mest mulig, og sørge for at det som ikke lar seg fjerne, er lesbart. Og det skader naturligvis ikke hvis dokumentet er pent.

Tech-triks

Når jeg jobber med kontrakter, bruker jeg gjerne teknologenes prinsipper og metoder. Noen er såpass sentrale at de har fått sine egne navn: KISS, DRY, YAGNI. Dessverre sliter advokatene med alle prinsippene.

Det første prinsippet – KISS – handler om å holde det enkelt og unngå unødvendig kompleksitet. Noen kaller det Rema 1000-prinsippet. Er behovet enkelt, så holder det med én side.

DRY – om at ting skal stå ett sted – er ofte vanskelig i praksis. Enkle avtaler har sjelden et problem med duplisering, men når KISS ikke strekker til, blir DRY hardt: hva gjør man når det er behov for å ha den samme informasjonen eller reguleringen flere steder? Den enkleste løsningen er å kopiere litt her, og litt der. Problemet er bare at med tiden vil klonene både se ut og oppføre seg forskjellig. For å unngå duplisering kreves kontroll på helheten, disiplin og tid.

YAGNI handler om å la være å bygge noe for behov som ikke finnes. I kontrakter kan man falle for fristelsen til å regulere alt. I tilfelle. Resultatet blir sider opp og sider ned med reguleringer for hendelser som ingen har vurdert som sannsynlige, og som ingen kommer til å finne når noe faktisk skjer. Advokaten som skriver for hvert tenkelige tilfelle, føler seg grundig. Kunden, som skal bruke avtalen, finner ikke frem, og slutter å bruke kontrakten som et verktøy.

Copy & paste er altså forbudt, og på samme måte som teknisk gjeld, må du passe deg for kontraktsgjeld, som er lett å ta opp og vanskelig å bli kvitt.

Ta kontakt hvis du ønsker deg varige, nyttige og vakre kontraktsdokumenter. Jeg hjelper deg også hvis du sliter med kontraktsgjeld.

– Kirill