Programadors, devops i els gats de Schrödinger

Programadors, devops i els gats de Schrödinger
La realitat d'un enginyer de xarxes (amb fideus i... sal?)

Recentment, mentre parlava de diversos incidents amb els enginyers, vaig notar un patró interessant.

En aquestes discussions, la qüestió de la "causa arrel" sorgeix invariablement. Els lectors fidels probablement saben que ho tinc alguns pensaments en aquesta sobre. En moltes organitzacions, l'anàlisi d'incidents es basa completament en aquest concepte. Utilitzen diferents tècniques per identificar les relacions causa-efecte, com ara "Cinc per què". Aquests mètodes assumeixen l'anomenada "linealitat dels esdeveniments" com un dogma indiscutible.

Quan desafieu aquesta idea i assenyaleu que la linealitat és tranquil·litzant enganyosa en sistemes complexos, neix una discussió fascinant. Els disputes insisteixen apassionadament que només el coneixement de la "causa arrel" ens permet entendre què està passant.

Vaig notar un patró interessant: els desenvolupadors i els desenvolupadors reaccionen de manera diferent a aquesta idea. Segons la meva experiència, és més probable que els desenvolupadors argumentin que la causa arrel és important i que les relacions causa-efecte sempre es poden establir en els esdeveniments. D'altra banda, DevOps està més sovint d'acord que un món complex no sempre obeeix a la linealitat.

Sempre m'he preguntat per què és això? Què fa programadors per criticar la idea "la causa principal és un mite" així? Com un sistema immunitari que reconeix un agent estrany. Per què reaccionen d'aquesta manera, mentre els devops més aviat inclinat considerar aquesta idea?

No n'estic del tot segur, però tinc algunes idees sobre això. Es relaciona amb els diferents contextos en què aquests professionals desenvolupen la seva tasca diària.

Els desenvolupadors sovint treballen amb eines deterministes. Per descomptat, els compiladors, els enllaços, els sistemes operatius són tots sistemes complexos, però estem acostumats al fet que donen un resultat determinista, i els imaginem com a deterministes: si proporcionem les mateixes dades d'entrada, normalment esperem la mateixa sortida. d'aquests sistemes. I si hi ha un problema amb la sortida ("error"), els desenvolupadors el resolen analitzant les dades d'entrada (ja sigui de l'usuari o d'un conjunt d'eines durant el procés de desenvolupament). Busquen un "error" i després canvien les dades d'entrada. Això corregeix el "error".

Programadors, devops i els gats de Schrödinger
Hipòtesi bàsica del desenvolupament de programari: les mateixes dades d'entrada de manera fiable i determinística produeixen la mateixa sortida.

De fet, un resultat no determinista es considera un error: si no es reprodueix la sortida inesperada o errònia, els desenvolupadors tendeixen a estendre la investigació a altres parts de la pila (sistema operatiu, xarxa, etc.) que també es comporten més. o de manera menys determinística, produint el mateix resultat amb les mateixes dades d'entrada... i si no ho és, llavors això encara es considera un error. Ara és un error del sistema operatiu o de la xarxa.

En qualsevol cas, el determinisme és un supòsit bàsic, gairebé donat per descomptat, per a bona part del treball que fan els programadors.

Però per a qualsevol tipus de devops que s'hagi passat el dia acumulant maquinari o descobrint una API al núvol, la idea d'un món completament determinista (sempre que sigui possible mapejar totes les entrades!) En el millor dels casos, és un concepte fugaç. Encara que ho deixeu de banda BOHF fa broma sobre les taques solars, enginyers experimentats han vist les coses més estranyes d'aquest món. Ells ho saben fins i tot un crit humà pot frenar el servidor, sense oblidar els milions d'altres factors del medi ambient.

Per tant, és més fàcil per als enginyers experimentats dubtar que tots els incidents tinguin una única causa arrel, i tècniques com els "Cinc perquès" conduiran correctament (i repetidament!) a aquesta causa arrel. De fet, això contradiu la seva pròpia experiència, on les peces del trencaclosques no encaixen tan bé a la pràctica. Per tant, accepten aquesta idea més fàcilment.

Per descomptat, no estic dient que els desenvolupadors siguin ingenus, estúpids o incapaços d'entendre com la linealitat pot ser enganyosa. Els programadors experimentats probablement també han vist molt de no determinisme en la seva època.

Però em sembla que una reacció habitual dels desenvolupadors en aquests debats sovint té a veure amb el fet que el concepte de determinisme els serveix bé en general en el treball quotidià. No es troben amb el no determinisme tan sovint com els enginyers han d'atrapar els gats de Schrödinger a la seva infraestructura.

Potser això no explica completament les reaccions observades dels desenvolupadors, però és un poderós recordatori que les nostres reaccions són una barreja complexa de molts factors.

És important recordar aquesta complexitat, tant si estem tractant amb un sol incident, col·laborant en una canalització de lliurament de programari o intentant donar sentit al món més ampli.

Font: www.habr.com

Afegeix comentari