fredag 3. november 2017

Programmering er en kreativ prosess

De fleste som betrakter programmering utenfra, altså uten å programmere selv, oppfatter det ofte som en slags øvelse i å skrive firkanta og uleselig tekst. Når det gjelder å skape nysgjerrighet og inspirere potensielle programmerere er det viktig å ta et slags oppgjør med slike holdninger. (nerdenes protest !).

Det er en generell og vanskelig diskusjon å vurdere innholdet i begrepet kreativitet. Et ganske vanskelig utgangspunkt er de som ensidig kopler begrepet til å komme opp med ideer uten å relatere det til verken handverkskompetanse eller gjennomføringsmuligheter. I og for seg en spennende aktivitet, men ikke nødvendigvis særlig produktiv. Det er min erfaring at en god del studenter som søker utdanning innen områder som digital design er hengt opp i et slikt holdningssett. De får ganske raskt sperrer når de innser at realisering av selv ganske enkle ideer krever både håndverk og systematisk planlegging. Det gjelder selvsagt ikke alle.

Det ligger en utfordring i å forsøke å få fram det kreative elementet i programmering, både for de som savner det og for de som ikke savner det. Etter min erfaring ligger de kreative utfordringene både i det du lager, produktet, og måten du konstruerer det på

Produktet

Mye av det vi som programmerere lager har et visuelt og ofte interaktivt grensesnitt mot brukeren. Vi skal presentere websider som helst skal fungere optimalt på ulike typer media, og vi skal lage konstrukjsoner som skal kunne vurderes og diskuteres ut fra utseende og funksjonalitet uten å kjenne alle detaljer i det som ligger bak. Det finnes naturlig nok metoder for å handtere prosesser for å finne gode løsninger som i stor grad følger aksepterte standarder, men det finnes også et stort rom for kreative, utradisjonelle løsninger

Spillprogrammering er på mange måter en historie for seg. Et spill skal formidle en setting, en metafor, og det skal implementere avansert interaksjon mellom spillere og mellom en spiller og de digitale omgivelsene.

Hvis vi setter dette inn i en opplæringssammenheng er det viktig å finne verktøy og oppgaver som utfordrer de kreative egenskapene. Det gjelder valg av programmeringsspråk og det gjelder valg av arbeisoppgaver. Vi må finne fram til oppgaver som hver for seg og i sammenheng gir en rask visuell respons på det som lages og som inviterer til å eksperimentere med løsninger.

For meg er det naturlig å se dette i sammenheng med de prinsippene som er nedfelt i Alan Kays referanse til Piaget når han bruker begrepet "Doing with Images Makes Symbols". Selv om Kays perspektiv i utgangspunktet ikke nødvendigvis er det kreative perspektivet, så er sammenhengen mellom konstruksjon og resultat et fundamentalt moment, på linje med det vi finner i tankegangen bak programmeringsspråket Logo. Vi må altså finne arbeidsoppgaver det det er kort vei fra programmeringen til den visuelle responsen. Jeg har skrevet mer om dette i innleggene "Piaget og programmering" og "En rimelig oppgave"

Det er også viktig å utvide perspektivet ut over "vanlige" skjermorientert programmer. Programmering av enheter av ymse slag som Lego, Arduino-enheter eller 3D-printing er en del av dette bildet.

Resonnementene mine over er direkte eller indirekte knyttet til en eller annen form for funksjonalitet. Vi vil finne kreative og gode løsninger for å vise fram noe eller gjøre det lett for brukeren av programmet å interagere med det vi lager. Det perspektivet som mangler er det som bruker digitale medier til å uttrykke noe. Det kan være et kunstverk, eller det kan være noe som skal promotere noe, en begivenhet, en sak eller et produkt, det vi kan kategorisere som reklame i vid forstand.

Mediene for dette er mange: Websider, TV, digitale plakater, projeksjoner på bygninger osv. For en programmerer som ser slikt materiale er det ikke vanskelig å se at det ligger ganske mye finurlig programmering bak for å få fram effekter av ulike slag, 3D-former, lyssetting, animasjon, relasjoner mellom objekter, for å nevne noen.

Et lite eksempel.

Dette eksempelet er ikke for å antyde at jeg er kunstner eller kunstekspert. Hensikten er bare å peke på at en digital innfalsvinkel kan gjøre noe med perspektivet

Den belgiske kunstneren Renè Magritte malte (første gang) i 1926 et bilde av en pipe som har tiltrukket seg en del oppmerksomhet. Som du ser på bildet under har han malt på bildet en tekst "Ceci n'est pas une pipe", eller på norsk "dette er ikke en pipe". Når Magritte ble spurt om hvordan han kunne mene dette svarte han: "Forsøk å stappe tobakk i den".

Det han forsøker å gjøre er altså å fokusere på forskjellen på en gjenstand og framstillingen av den. Det ligger langt utenfor min kompetanse å forsøke og forklare på en kort og konsistent måte surrealismens vesen og surrealistenes argumentasjon. Slik jeg oppfatter det, anser de en naturalistisk framstilling som lite interessant, og de forsøker å legge det "usynlige" inn i bildene. Magrittes naturalistiske bilde, med den gitte teksten, er slik forstått å understreke avstanden mellom bilde og "natur". De fleste av Magrittes bilder er ikke av denne naturtro typen. Tvert imot bruker han og andre surrealister argumentet til å endre den naturen han framstiller.

Hvis jeg nå, fra mitt teknologiske ståsted, vil ta dette et skritt videre kan jeg kanskje påstå om konstruksjonen nedenfor at "dette er ikke et bilde av en pipe" (Ceci n'est pas une image d'une pipe).

Med dette forstår jeg da at det finnes ikke noe fysisk bilde av noe som ser slik ut som det du ser på skjermen. Bildet skapes og gjenskapes hver gang vi ønsker å se det, i en eller annen synsvinkel.

Så kan man jo spørre seg hva surrealistene midt i forrige århundre ville ha laget dersom de kunne programmere interaktive framstillinger. I vår tid er det ikke akkurat mangel på manipulerte bilder med et visst "surrealistisk" preg.

Man kunne jo tenke seg at kommunikasjonsflaten mellom kunstner og publikum ville tjene på en dialog. Eller kanskje surrealismen ikke ville oppstått i den formen den fikk, dersom teknologien og mediebildet hadde vært som idag ?

For de som husker den første bølgen av digital kunst på 80-tallet har det skjedd mye med forutsetningen, men kanskje ikke like mye med aktiviteten ? Den gangen var det mitt inntrykk at det som ble vist fram var mislykkede eller manipulerte sirkelalgoritmer.

Konstruksjonen

Det som er vanskeligst å kommunisere til ferske programmerere er den kreative utfordringen og potensielle tilfredsstillelsen som ligger selve programmeringen.

Vi har i prinsipp nærmest ubegrensede muligheter når vi skal velge hvordan vi dekomponerer et problem og hvordan vi formulerer algoritmer.

Den metaforen som dukker opp i hodet mitt når jeg sliter med å finne "gode" løsninger er et slags landskap, med noen faste fjellformasjoner jeg kjenner igjen og noen uoversiktlige steinrøyser. For meg er det en kreativ utfordring å få orden på steinrøysene og stable stein i solide murer. En stein ligger ikke støtt hvis ikke underlaget er til å stole på. Når jeg står der med en stein i hånda har jeg mange muligheter og utfordringen er å finne en løsning som kan bringe meg videre.

Nå er det selvfølgelig slik at løsninger av den typen vi har vært innom ovefor i varierende grad er lagarbeid. Alle er ikke programmerere. Jeg tror imidlertid at det er slik at en viss insikt i prorammering er en forutsetning for å delta i et slikt lagarbeid på en konstruktiv måte.

Formidling av dette er etter min erfaring ganske vanskelig. For nye programmerere er ikke føleksen av handlefrihet så stor som den er hos de som har prøvd og feilet mange ganger. Igjen så dukker behovet for å kunne visualisere løsningen og å finne oppgaver som har kort vei fra kode til respons opp.

Linker

Piaget og programmering
En rimelig oppgave
Logo

Ingen kommentarer :

Legg inn en kommentar

Skrv din kommentar ....