Jag är systemutvecklare och pappa är mjölkbonde.
Jag jobbar med design av abstraktioner. Han jobbar med samklangen mellan djur och natur.
Han förstår inte vad jag gör på jobbet. Han frågar mig:
”Om ingen är där och ändrar, blir programmet sämre med tiden?”
Min första tanke till svar är att det var gulligt att tro att digitala skapelser rostar och förfaller likt en traktor på gården.
”Nej de Bytes som beskriver programmet ligger där på disken i perfekt skick som på dagen de kompilerades från sin källkod.”
Men min erfarenhet gjorde snabbt att jag ändrade mitt svar: Jo programmet blir sämre ”av sig självt”
- Det kan börja krångla mer
- Det kan börja bli långsammare
- Användarna kan glömma av vilka moment programmet kan utföra
Programmet existerar inte i isolation. Det är en symbios av människorna som använder det och systemen de integrerar med.
Alla beroenden programmet har på tredjeparts bibliotek som fortsätter utvecklas och ändras gör att versionerna och verktygen som fanns när du kompilerade programmet senast kanske inte längre finns tillgängliga nästa gång.
Skulle du kunna bygga källkod från 80-talet? 90-talet? Eller en 3 år gammal Node lösning?
Människorna som förstod varför en process gjordes på ett visst sätt en gång i tiden kanske gått i pension och de nya medarbetarna känner inte till kontexten som fanns på den tiden.
The death of a program happens when the programmer team possessing its theory is dissolved. A dead program may continue to be used for execution in a computer and to produce useful results. The actual state of death becomes visible when demands for modifications of the program cannot be intelligently answered. Revival of a program is the rebuilding of its theory by a new programmer team.
Peter Naur – Programming as Theory Building
Molnleverantören kanske ändrar sina serverless tjänster din mjukvara anropar.
Programmet kanske når en tidpunkt där det varit i drift längre än vad det någonsin tidigare varit igång där en vägg träffas av läckande minne eller någon tabell som växt till en kritisk punkt.
Dessa fel kanske tillfälligt kan avhjälpas av en omstart. Men de allra flesta fel har inte förutspåtts och därför ges inget vettigt felmeddelande.
Därför blir ett program aldrig färdigt och programmerare behövs med sina händer ständigt inne i maskinen så länge systemet används.
I teorin skulle inte detta behövas men det är långt kvar innan vi kan peka på ett icke-trivialt program och säga ”Det där är formellt bevisat att kunna rulla år in och år ut även om alla människor skulle försvinna”.
Det går att få program att bli lite bättre. Programmera defensivt och pressa inte varje utveckling ner till sin enda yttersta happy-path.