Teknikmissbruket och den odemokratiska mjukvaran
Häromdagen skrev jag en lång rant på twitter om
mjukvaruutveckling, vilken till min glädje och förvåning fick oväntat
stor respons. Den korta versionen är att jag ser ett stort problem med
att vi har ett starkt kapitalistiskt drivet samhälle
i kombination med att det i princip sitter mjukvara i allt. Den längre
versionen följer här.
Det är lätt att glömma att mjukvarukonstruktion är
en relativt ny vetenskap. Vi, som i mänskligheten, har bara använd oss
av mjukvara i industriell mening i några decennier. Ibland hör man folk
säga
att programmering egentligen bara handlar
om ettor och nollor och på det sättet har vi såklart använt oss av
binära logiksystem mycket längre än så. Att operera en vävstol efter ett
mönster är att använda ett slags binärkod. Trampa – etta, trampa inte –
nolla osv. Man lastar in sin långa rad ettor
och nollor i programminnet på en dator och sen opererar processorn
efter det mönstret. Etta – visa nåt på skärmen, nolla– visa inte.
Kombinationen av ettor och nollor är oändlig varför alla program kan
skrivas, och en oändlig mängd kombinationer av ettor och
nollor kan resultera i samma program. Ungefär som när man lagar mat.
Man kan ha i grädden eller vinet först, men såsen kommer till slut bestå
av samma smaker.
Det finns en uppsjö olika typer av mjukvara. Grafik, inbyggda system, operativsystem, applikationer. I säkerhetskritiska system, som tex styr- och
bromssystemet i tåg, används A- och B-kod. I enkelhet
går det ut på att två olika grupper mjukvaruuvecklare får samma
kravspecifikation som de kodmässigt löser på olika sätt (eftersom de
inte får samarbeta), och både program A och B körs parallellt när tågen
är i drift. Under färden utvärderar programmen hela
tiden hur styrsystemet ska bete sig, och om program A och B kommer fram
till olika slutsatser drar man typ i nödbromsen eller vidtar annan
säkerhetsåtgärd. A- och B-kod existerar för att reducera det vi kallar
den mänskliga faktorn. Att utveckla system på det här sättet kräver dubbel arbetsstyrka och är således dyrt.
För
icke
säkerhetskritiska system löser man helt enkelt ofta ett mjukvaruproblem
med att, ni vet, starta om grunkan. Genom att kallstarta något (dvs
bryta strömmen och slå på den igen) försätter man devicen i sitt
startupläge och konfiguration och program får chansen att sättas upp
igen, förhoppningsvis i rätt ordning. Det som får tex en telefon att
hänga sig kan vara många saker, men säkert är att den hamnat i ett läge
(ett state) som konstruktören* inte felhanterat. Bra mjukvara gör
givetvis rätt, men den klarar också att hantera de lägen då det ändå
blivit fel och ta sig ur dem. Kanske genom att tvångsavsluta ett
program, men i alla fall inte hänga hela telefonen. För
säkerhetskritiska system är det absolut vitalt med felhantering, för
apparater som inte riskerar att döda någon är det såklart mindre
viktigt och man kan lätt skära i utvecklingskostnaden utan att det gör något.
Eller? Jag återkommer till det.
Om
man jämför mjukvarukonstruktion med vår samlade
kunskap om hur man bygger hus, broar och mekanisk apparatur blir det
tydligt att vi har mycket kvar att lära oss innan kunskapsnivån når
samma verkshöjd, eller hur man nu ska uttrycka det. Vi vet hur man
bygger en bro och har redan hunnit gå på nitarna, dvs vi vet vad vi ska
undvika för att bron inte ska rasa. Att bli lika bra på mjukvara kanske
kommer ta oss ännu längre tid eftersom mjukvara till sin natur, som jag
skrev ovan, öppnar upp för oändliga kombinationer. Bra kod är kort och
koncis och gör just bara det den ska, men den ska samtidigt vara
lättläslig och enkel att underhålla när man upptäcker fel. Alltför
kompakt kod blir ofta i efterhand obegriplig för någon annan än den som
skrev den, och i industrin jobbar ofta många personer med samma kodbas,
eller så tas en kod över när en konstruktör slutar och en annan börjar.
Observera att jag säger när och inte om man upptäcker fel, för man
upptäcker alltid fel. En bro eller ett hus byggs heller inte i en
hast. Det är projekt som fortfarande får ta tid (även om det verkar som
att uppförande av tex nya hus kan gå lite för snabbt och bli slarvigt ibland).
Mjukvara får väldigt sällan ta tid. Mjukvara som
sitter i tåg, flygplan, medicinsk utrustning och maskiner som
bokstavligen talat kan bli livsfarliga om de innehåller buggar går att
certifiera. Man utsätter då sin mjukvara för massa tester som den ska
kunna hantera, och testerna genomförs typiskt av tredje part enligt
vissa standardiserade modeller. Inga tester i världen kan dock garantera
buggfria system, men vi kan å andra sidan inte skydda oss mot allt i
vardagslivet heller. Koden i en pacemaker är garanterat mer vältestad
och robust än koden till en digitalbox, och så ska det kanske vara. Det
vore en tragedi om en person dog av att hens pacemaker la av, men att
digitalboxen krånglar orsakar på sin höjd en irritation vid
fredagsmyset.
Eller? Vänta, jag har inte glömt att jag
ska återkomma till vad som är viktigt men jag ska bara skriva lite till
om mjukvarukonstruktion i stort, nämligen utvecklingsprocessen.
Det
finns ingen. I akademin finns kanske ett slags konsensus kring hur man
bygger bra och robusta system men industrin står långt ifrån akademin. I
industrin styr kapitalet och kapitalet vill växa. För att växa, sägs
det, måste man vara konkurrenskraftig och snabb. Om ens konkurrent
utkommer med en ny snajsig modell måste man själv prångla ut en
likvärdig eller helst bättre snabbt som attan för att inte tappa de
eftertraktansvärda marknadsandelarna. Företag existerar enbart för att
någon eller några tror att de ska generera pengar, vilket är helt
logiskt i en värld där alla är beroende av pengar. Att få ut den nya
modellen x snabbt kommer därför trumfa att x ska fungera så nära
felfritt som möjligt. Tempot för nya pacemakers på marknaden är lite
krasst långsammare än för nya mobiltelefoner eftersom ett företag som
säljer livsuppehållande apparatur som har ihjäl folk inte kommer att
överleva. Den ekonomiska förlusten med en långsammare utvecklingscykel
vinner över risken för själva företagets död. Utvecklingscykeln för ny
hemelektronik däremot är rasande hetsig. Mjukvara är också
förhållandevis billig jämfört med elektronik och mekanik eftersom den är
modifierbar. Detta är i grunden helt fantastiskt eftersom det gör att
vi kan använda samma typ av hårdvaruplattformar till olika applikationer
genom att konfigurera dem med hjälp av olika mjukvara. Hårdvarans
design kan förfinas och mjukvara skrivas ny.
Men här ligger också
mjukvarans inneboende konflikt under ett kapitalistiskt system.
Kapitalets syn på mjukvara är just denna: den kan alltid göras om.
Mjukvara, i allt utom möjligtvis sådant som pacemakers, betraktas som
slit- och släng. Utvecklingsprocessen är därefter. Jag har hittills
aldrig under mina arbetsverksamma år fått tillräcklig tid på mig att
systemera, dvs att i god tid innan produktion klura ut hur mjukvaran
bäst kan struktureras upp och delas in i olika block så att den på sikt
blir stabil, lättbegriplig och enkel att underhålla. "Nu är det bara
mjukvara kvar" har jag hört många gånger. Man bortser alltså från att
mjukvarukonstruktion 1) är en ny vetenskap, 2) är ett hantverke som alla
utför lite på sitt eget sätt och 3) är det som produktifierar hårdvaran
och ofta avgör hur produkten kan användas. En kamera kan vara hur bra
som helst men med ett dåligt användargränssnitt tröttnar folk och köper
en ny.
Alltså. Som mjukvarudesigner har jag få regler att förhålla mig till eftersom ingen vet vilka reglerna bör vara, vilket i sin tur öppnar upp för att introducera buggar. Om jag inte kan fransk grammatik kan jag kanske skriva ett brev till en fransk vän, men sannolikheten att det innehåller fel är stort. Kontentan kanske går fram men detaljerna går förlorade. Väldigt ofta testar jag också min egen kod vilket är dåligt eftersom jag vet om dess brister och undermedvetet kan råka undvika att testa just det som kommer faila. Sällan kontrollerar dessutom någon annan hur min kod ser ut. Kodgranskning är tidskrävande och tidsbrist är alltid ett problem i mjukvaruprocesser. Mjukvara är väldigt ofta det sista man gör innan produkten ska ut, och tid kommer därför att skäras av där och inte tidigare i processen. Dokumentation och kunskapsspridning tar också tid från själva utvecklingen och hinns nästan aldrig med. Det är viktigare att modell x har en feature y än att vi dokumenterar hur modell x fungerar. Om ett år när x buggar ihop blir det alltså svinjobbigt och dyrt att laga den och konsumenten köper därför hellre en ny. Kapitalet är inte långsiktigt och kan man tjäna pengar nu är det i princip alltid bättre än att tjäna pengar sen.
Alltså. Som mjukvarudesigner har jag få regler att förhålla mig till eftersom ingen vet vilka reglerna bör vara, vilket i sin tur öppnar upp för att introducera buggar. Om jag inte kan fransk grammatik kan jag kanske skriva ett brev till en fransk vän, men sannolikheten att det innehåller fel är stort. Kontentan kanske går fram men detaljerna går förlorade. Väldigt ofta testar jag också min egen kod vilket är dåligt eftersom jag vet om dess brister och undermedvetet kan råka undvika att testa just det som kommer faila. Sällan kontrollerar dessutom någon annan hur min kod ser ut. Kodgranskning är tidskrävande och tidsbrist är alltid ett problem i mjukvaruprocesser. Mjukvara är väldigt ofta det sista man gör innan produkten ska ut, och tid kommer därför att skäras av där och inte tidigare i processen. Dokumentation och kunskapsspridning tar också tid från själva utvecklingen och hinns nästan aldrig med. Det är viktigare att modell x har en feature y än att vi dokumenterar hur modell x fungerar. Om ett år när x buggar ihop blir det alltså svinjobbigt och dyrt att laga den och konsumenten köper därför hellre en ny. Kapitalet är inte långsiktigt och kan man tjäna pengar nu är det i princip alltid bättre än att tjäna pengar sen.
Nu ska jag återkomma till det som är viktigt. Kapitalismen
skapar en sanslös mängd modeller för hemelektronik x, y och z, men
kvaliteten får stryka på foten. Jag har skrivit att i viktiga system som
har hand om liv är detta ett mindre problem, men även tåg, flyg och
bilar har kraschat som en direkt följd av dålig mjukvara. Det kanske
verkar oviktigt om våra mobiltelefoner och tv-apparater är kackiga, men
here's the thing: jorden svämmar över av miljöfarligt eleketronikskrot
och människor dör av det också. Många, fler än vad som ryms i ett flygplan. Och många fler kommer att dö. Det
direkt farliga är utvinningen av metaller, som dels i sig är giftiga
och påverkar miljön och människorna som jobbar med dem, och även det
faktum att utvinningen sker i fattiga områden under undermåliga
omständigheter där mänskliga rättigheter inte respekteras. Mer indirekt påverkar all vår överkonsumtion klimatet på jorden. Klimatförändringarna
orsakar torka, översvämningar och missväxt och skapar fattigdom och
fattigdom skapar krig. Krig dödar. Elektronikskrot är givetvis inte den
enda boven i dramat** men vi ska vara medvetna om att det i dag sitter
mjukvara i allt och att utvecklingen bara pekar uppåt. Det är
kortsiktigt billigt med snabbhackad mjukvara, men med kortare livslängd
som dold kostnad. Dålig mjukvara gör dyrbar och giftig hårdvara till skrot snabbare. Och som sagt, kapitalismens kortsiktighet är ett
problem generellt i samband med miljö- och etikfrågor, men mjukvara är
redan en storspelare inom industrin eftersom den är så lätt att stoppa
in i allt. Mjukvaran i sig kan tyckas vara ytterst miljövänlig
eftersom den inte tar någon fysisk plats, den "finns" inte, den kräver
inga giftiga ämnen (mer än metangasen vi joltcolasörplare pruttar ut
hehe) men den är navet i en storskalig produktion som spänner över alla
områden. Att misshandla utvecklingscykeln och systematiskt skära ner på
tiden som mjukvarukonstruktörer lägger på sin produkt skapar i det stora
perspektivet enorma problem. Det som är mjukvarans fantastiska och
revolutionerande egenskaper, lättheten! smidigheten! modifierbarheten!
möjligheterna!, blir under kapitalismen oerhört lätta att missbruka.
Jag
ser få vägar ut ur det här och jag är en själv en del av problematiken.
Jag jobbar med mjukvara varje dag och vet att jag många gånger inte lämnar ifrån mig optimal kod***. Men jag gillar inte hemelektronik och jag
finner ingen vidare glädje i att konsumera den, även om jag gör det ändå ibland
eftersom jag vill ha en tv, en telefon och en micro. Men även om det är ett jättejobb tror jag
att det finns ett sätt ut ur detta. För att omskapa synen på hur vi konstruerar våra
konsumtionsprylar måste vi öppna upp fältet för en bredare massa och
sätta teknik i relation till miljö och etik. Företag må prata om detta i dag men det är helt ärligt bara bullshit. Jag älskar teknik men
dagens tekniksyn är inte och kommer inte att bli vår räddning på miljö-
och fattigdomsproblem. Jag är övertygad om att teknik i sig kan göra
underverk för att tjäna mänskligheten, om vi inte missbrukar den.
Våra teknikkunskaper måste därför spridas och de måste spridas till människor med
värderingar som inte är kapitalets. Generaliserat underhålls kapitalet
av vita män i västvärlden och dessa män är inte bärare av de värderingar
som har potential att skapa ett samhälle där miljö, mänskliga
rättigheter, hållbarhet och inkludering utgör hörnstenar. Kapitalets män
skapar teknik för egen vinnings skull i en värld där vissa grupper kan
utnyttjas för att samma kapital skapar enorma ekonomiska klyftor. Jag
vet att det inte är så enkelt och utvecklingen av mobiltelefoner och
-nät har tex medfört stora förenklingar i områden där fast infrastruktur
saknas, men människor skadas fortfarande i processen. Vi skulle kunna
göra bättre. Vi skulle kunna utveckla hållbar teknik utan att ställa
grupper mot varandra och fokusera vår utveckling till teknik som direkt
bidrar till en bättre miljö. Vi skulle också kunna avstanna utveckling av mycket brukselektronik. Lycka är ett komplext begrepp och jag tror
verkligen att en ny blank pryl har förmågan att skapa lycka, men det är
inte lycka som inte skulle kunna gå att ersätta med en annan typ. Jag menar
alltså inte att fnysa åt och förringa de som älskar hemelektronik och jag
själv har ett liknande beteende kring kläder, men vi måste lyfta frågan
kring vad vi lär oss att associera med lycka. Det är inlärt och inte av
naturen givet att ett nytt ljudsystem ger oss en kick.
Det
finns så sjukt mycket mer att säga om hur ägandeskapet över teknik
måste skiftas, och att tex kvinnor och grupper med annan levd erfarenhet än vita västmän, och därmed större förståelse för vad som behövs i världen, måste ges tillträde till
tekniksfären för att demokratisera kunskapen, men jag lämnar det till
ett senare tillfälle och hänvisar helt fräckt till mig själv och en grej
jag skrev åt Framtidsstafetten 2012, som var en del av
Framtidskommissionens arbete.
http://cyborgmanifesto.blogspot.se/2012/03/mer-sjalvfortroende-for-alla.html.
* Det kan givetvis vara hårdvara som krånglar men här handlar det om mjukvara, och väldigt ofta är det mjukvarans uppgift att hantera hårdvaran så gränsen för vad som är hårdvaru- och mjukvarudesignerns fel kan vara svår att avgöra.
** Väst överkonsumerar också ohyggliga mängder kläder, mat, heminredning osv osv, men tex metaller är en ändlig resurs på ett mer direkt sätt än bomull till kläder och mat som kan ordlas.
*** Inte optimal som i felfri eftersom det knappt existerar, utan optimal som i väl genomarbetad.
6 kommentarer:
En aspekt som jag inte ser att du tar upp är också att i konsumentelektronik kan mjukvara användas för att tvinga konsumenter att byta upp sig.
Mjukvara görs inte bakåtkompatibel just för att företag ska kunna kränga nya saker under sken att de "förbättrar" sin produkt.
Några som jag tycker är speciellt bra på det är Apple (och i viss mån Microsoft) var uppgraderingar kan göra en annars helt välfunktionerande produkt obrukbar.
Det är givetvis inte omedvetet, de är inte ett gäng nördar ideologiskt drivna av att ständigt förbättra sig, de driver affär. Men det adderar till skrotberget.
Gud ja. Fick inte in allt i samma inlägg men det är ytterligare ett stort problem.
/Chris
Hej,
tack för inlägget i debatten.
har du engagerat dig i http://geekgirlmeetup.com/ eller i techeq.se ? Tänkte tipsa om dem annars.
ha det gott
Intressant inlägg, men jag tror ärligt talat inte att någon annan grupp än vita män i väst (har intersektionaliteten inte blivit väldigt reducerad på senare tid?) skulle bete sig så grundläggande annorlunda om de satt vid rodret.
Kapitalet underhålls inte av värderingar, utan av kapitalintresse. Värderingar och erfarenheter kan påverka arbetarnas agerande, självsyn, organisering etc. men kapitalägarna är mycket mer homogena eftersom deras intresse är så tydligt för dem själva. Så länge det är skadligt för tillväxten med hållbara prylar lär vi inte se större produktion av hållbara prylar. Det perspektivet tyckte jag att du tappade i slutdelen...
Aaah, det är alldeles för länge sen jag tittade in här sist!
Du har lyckats knyta ihop en massa företeelser jag inte ens tänkt på hänger ihop.
Det jag möjligen kan bidra med är en observation av konsumenternas beteende: Jag om någon borde ju känna till vikten av väl utformade gränssnitt och premiera dem som utför dem väl, men ändå när jag senast hade anledning att köpa en bergssprängare och kunde välja mellan en som hade ett rätt dåligt gränssnitt och ett som hade ett halvhyfsat men var dubbelt så dyr, så nog valde jag i min snålhet den billigare modellen.
Ris för egen rygg…
Hej Kai!
Iiiih vad kul att du läser! :)))
Ja absolut, så gör jag också. Jag brukar inte heller välja något extremt mycket dyrare framför en viss kvalité, men jag tycker nog inte att (allt) det ansvaret ska hamna på konsumenten heller. Du och jag har iaf möjlighet att förstå kvalitetsskillnader i sw, men det kan nog vara väldigt svårt för folk med andra yrken. Plus, har man inte så mycket pengar kanske man måste välja det billigaste alternativet.
/Chris
Skicka en kommentar
Prenumerera på Kommentarer till inlägget [Atom]
<< Startsida