Det var länge sedan jag skrev något nu, så jag tänkte att det är dags 🙂
Skolverket har i samband med representanter från flera lärosäten arbetat fram ramkursplaner för introduktionskurser i visuell respektive textbaserad programmering. I dessa ramkursplaner finns följande formulering med under rubriken ”Generellt innehåll”:
Etiska perspektiv på programmering
Eftersom jag själv tycker att det här med etiska aspekter på datavetenskap, IT och programmering är jätteintressant så var min första tanke ”Ja!”. Sen kom min andra tanke: ”Men, vad menar de egentligen?”
Jag ämnar försöka fördjupa mig i vad de egentligen menar, men det blir antagligen i ett annat inlägg. Här tänkte jag istället resonera kring vad etiska perspektiv på programmering skulle kunna vara och hur etiska ställningstaganden är högst relevanta i en programmeringskontext.
Vad var programmering nu igen?
Låt mig först rekapitulera min beskrivning av vad programmering är: en problemlösningsprocess där man går från problem till en lösning på problemet som inbegriper en programmerbar enhet, exempelvis en dator. Vägen från problem till lösning inbegriper bland annat problemformulering, formalisering, en lösningsstrategi, att formulera strategin som en algoritm, att koda algoritmen samt att testa och utvärdera sin lösning.
Med denna definition av programmering, som en process snarare än enbart kodningsdelen av hela problemlösningsprocessen, är det många val, ställningstaganden och förutsättningar som görs längs vägen. En del av dem är explicita, men många av dem är också implicita.
Och här är ”grejen”, själva huvudbudskapet i detta inlägg:
De konsekvenser som ett system får för de som använder systemet är summan av de val och antaganden som har gjorts under designprocessen.
Vad menar jag då med detta?
Jo, att för alla tekniska system som har konstruerats av någon har det funnits en problemlösningsprocess där man i varje steg gör val och antaganden som påverkar hur det slutliga systemet kommer att fungera (och i många fall, inte fungera under vissa omständigheter).
I en tid då man i allt större utsträckning använder sig av algoritmer för att styra och kontrollera är det viktigt att algoritmerna faktiskt fungerar, gör sitt jobb som de ska och framför allt inte påverkar tredje part negativt. Det finns många exempel på att detta inte alltid fungerar så bra alla gånger och där det ibland kan få förödande konsekvenser för enskilda individer, familjer, samhällsgrupper med mera.
Exempel 1: En app för att hålla reda på menstruationscykler som påstods vara lika tillförlitlig som ett fysiskt preventivmedel. Gissa vad? Det var den inte. Vilket ledde till ett antal oönskade graviditeter som i sin tur behövde hanteras på något sätt. Eftersom detta hände i USA resulterade det givetvis även i att företaget bakom appen stämdes.
Exempel 2: ”Leendedetektor” i kamera som känner av när en person i sökaren ler och tar en bild i rätt ögonblick. Problemet här var att algoritmen inte fungerade för alla hudfärger och etniciteter; specifikt hade asiatiska personer svårt att få den att fungera.
Exempel 3: Automatisk tvåldispenser som inte fungerar på mörkhyade personer. Om någon med för mörk hudfärg vill ha tvål måste de vifta med ett vitt papper under sensorn för att få ut tvål ur dispensern.
Det är bara några exempel. Det finns många andra exempel på system där man inte har tänkt på allt som kan inträffa, eller på alla de egenskaper som olika användare av det färdiga systemet kan ha. Inom de branscher som utvecklar olika typer av tekniska system och mjukvara finns det metoder för att förebygga dessa typer av problem, men det är inte alltid de används fullt ut av olika anledningar.
De exempel jag har nämnt ovan handlar huvudsakligen om misstag som har gjorts i designprocessen; det som jag tidigare benämnde som implicita val och antaganden. Utöver dessa finns det också explicita antaganden som görs. Dessa kan baseras på ett företags policy, personliga uppfattningar hos personer i designteamet, ideologiska ställningstaganden m.m.
Ett sunt förhållningssätt till ett tekniskt system kan vara att reflektera över vilka intressenter som finns för systemet. Detta gäller särskilt om systemet är gratis; det är väldigt ont om altruistiska personer som bara vill väl – är det gratis så finns det någon vars behov uppfylls av att du använder systemet. Frågan är då vad det behovet är och om du vill ställa upp på att det uppfylls?
Ett klassiskt exempel på det sistnämnda är Google som erbjuder ett antal väldigt användbara tjänster helt gratis. Priset du betalar är att de samlar in data om dina beteenden som sedan kan analyserar och säljas vidare till de som är intresserade av vem du är, kanske i syfte att erbjuda riktad reklam eller avgöra om du är mottaglig för en viss typ av propaganda.
Låter det orimligt? Har du hört talas om Cambridge Analytica? I korthet såldes stora mängder insamlad personlig information till företaget som sedan använde det för att rikta politisk reklam till personer som bedömdes vara mottagliga för att rösta på en viss kandidat.
Insamlad data som analyseras, gratisappar med en inte alltid tydlig agenda, system som innebär negativa konsekvenser för vissa användare – de är alla olika konsekvenser av samma faktum:
De konsekvenser som ett system får för de som använder systemet är summan av de val och antaganden som har gjorts under designprocessen.
Hur kan man då medvetandegöra nybörjare på programmering om detta? Det finns flera sätt.
Ett sätt kan vara att helt enkelt studera ett befintligt system och ställa kritiska frågor. Vem tillhandahåller systemet? Vad har denne för egenintresse i att systemet finns? Vad händer om systemet inte längre fungerar? Vad finns det för alternativa lösningar? Kan detta system användas av alla? Om inte, vilka är exkluderade? Är det rimligt att dessa är exkluderade? Ett system som är ganska tacksamt att studera på detta sätt är Bank-ID med hänvisning till det genomslag det har fått.
Ett annat sätt kan vara att dela ut en designuppgift där man ska skissa på ett system som löser ett givet problem och reflektera över vilka antaganden man behöver göra för att få ihop en design, samt vad konsekvenserna av dessa antaganden är. Om jag förutsätter att användaren har tillgång till en pekskärm, vad är konsekvenserna av det? Om jag förutsätter att användaren alltid är uppkopplad, vad får det för effekter? Och så vidare.
Etiska perspektiv på programmering
Vad har då allt detta att göra med etiska perspektiv på programmering?
Allt.
Kom ihåg:
De konsekvenser som ett system får för de som använder systemet är summan av de val och antaganden som har gjorts under designprocessen.
Den eller de personer som gör dessa val och antaganden skapar konsekvenser som kan drabba tredje part. Vem är det egentligen som har ansvaret? Vad är det rimligt att man som programmerare förutse och var går gränsen mellan något som borde ha kunnat förutses av programmeraren, beställaren, användaren?
I ett samtida samhälle där IT finns överallt och vi i allt större utsträckning använder algoritmer som beslutsunderlag gäller det att som programmerare ha en tydlig moralisk kompass, vara medveten om potentiella konsekvenser av sina val och antaganden och ha ett rimligt förhållningssätt till ansvarsfördelningen.
Ett avslutande exempel
Jag avslutar med ett illustrerande exempel från min hemkommun, Uppsala. I det fria skolvalet fördelas barn mellan olika skolor baserat på begreppet relativ närhet som implementeras av en algoritm. Denna algoritm samkör familjernas önskemål med kartdata och försöker jämka fram något som blir så bra som möjligt för så många som möjligt. Vid närmare granskning har det visat sig att systemet som används har en del tveksamheter.
En tveksamhet är att vägen till skolan beräknas med en algoritm som tycker det är rimligt att 10-åriga barn skall cykla genom en hårt trafikerad rondell istället för att använda den cykeltunnel som finns precis bredvid. En annan tveksamhet är att avståndet mellan hem och skola mäts på meternivå, vilket innebär att ett barn kan förlora den mest realistiska skolplaceringen därför att det bor 3 meter för långt bort från skolan. Ytterligare en tveksamhet är att avståndet mellan hem och skola mäts från tomtgräns till tomtgräns.
Dessa tveksamheter sammantaget ger att algoritmen inte fungerar bra för alla. En del drabbas hårt. Och i detta fall var det endast de som var medvetna om teknikens roll i det hela som protesterade och så småningom fick rätt.
Vem bär ansvaret för att det blev fel? Företaget som använde kartdata på ett tveksamt sätt i sitt system? Kommunen som inte verifierade rimligheten i de bedömningar som algoritmen gjorde innan systemet driftsattes? Skolkontoret som kategoriskt hänvisade till att det är rättvist eftersom samma icke-perfekta algoritm används för alla bedömningar? Vem ska ställas till svars för att hela familjer drabbas av ett system som inte är helt perfekt?
En sak är i alla fall säker:
Etiska perspektiv på programmering är ett brett ämne som kan angripas från många intressanta vinklar. Jag ska försöka bena ut vad Skolverket egentligen har tänkt sig i ett senare inlägg.



