Programmeringseksamen: gamle sure mænd vs nutidens unge: fight!

Jeg har den fornøjelse at undervise på vores nystartede software engineering uddannelse ved Syddansk Universitet. Uddannelsen har fokus på arkitektur og processer, inkluderer projektstyring og interaktion med andre kulturer, og er krydret med lidt kunstig intelligens og andet godt til robust og levedygtig software. Noget helt andet end min egen datalogiuddannelse, hvilket jeg mener er meget godt: vi uddanner de unge til at lave anvendelig software, der kan bruges af rigtige mennesker. (Jeg ved ikke med andres datalogiuddannelser, men det var i hvert fald ikke det min egen uddannelse handlede om.)

Jeg har netop undervist kurset i operativsystemer og netværk på 3. semester, men hvad skal en software engineer vide om den slags? De skal jo ikke umiddelbart hacke C for at få en device driver til at virke (det ville jeg jo gerne undervise dem i også, men vi kan ikke nå alt). Jeg gik efter generel dannelse om operativsystemsbegreber, kombineret med distribueret og multitrådet programmering i Java. Så der er blevet læst om generelle begreber og kodet i Java for at få praktisk erfaring med hvert af de overordnede emner (vi nåede også forbi read/write locks og weak references i Java, vigtige emner når man inde fra Java skal forstå hvordan en computer virker).

Men så blev det tid til eksamen, det kører elektronisk på SDU, i mit kursus ved en kombination af forskellige prøvetyper, blandt andet simple tekst-felter i hvilken de studerende uden hjælpemidler eller adgang til nettet skulle skrive små Java programmer (eller rettere: copy-paste noget eksisterende kode og rette det til, f.eks. for at trådsikre et program). Det var her konflikten startede, at jeg blev den gamle sure mand, og mine studerende blev nutidens unge, som jo per definition er håbløse set fra de ældre generationer.

Vores studerende (nutidens unge) har arbejdet i et IDE (eclipse) lige siden de startede med at programmere, de har haft store software udviklingsprojekter hvert eneste semester, men har altid nettet til rådighed når de programmerer (stackoverflow.com lærer de hurtigt at kende). Derfor er tanken om at programmere uden hjælpemidler nærmest latterlig for dem, vel ligesom hvis jeg bad dem om at lave store divisioner uden lommeregner. (De har selvfølgelig også haft eksaminer i programmering før, men det ændrer ikke ved deres holdning.)

Men jeg er jo den gamle sure mand i denne her sammenhæng, så jeg mener, at hvis jeg vækker dem kl 3 om natten og hiver dem hen foran en kridt-tavle, så skal de kunne skrive nogenlunde forståeligt kode. Jeg er i den sammenhæng ligeglad med syntaks og typefejl (det klarer IDE’en), men jeg kræver at de skal kunne lave en nogenlunde forståelig implementation af et distribueret program uden at konsultere stackoverflow.com – eller hvad? Er det en alt for kunstig situation at sætte dem i, som slet ikke svarer til hvad man skal kunne? Måske er det en fejl hovedkuls at kaste sig ud i at implementere løsningen uden først at checke på nettet om der var noget smart man blot kunne copy-paste i stedet for at skrive det selv? Jeg er i tvivl, og har noget at tænke over, indtil jeg skal undervise kurset igen – om et halvt år, så lad mig høre hvis du har en holdning til hvem der har ret: den gamle sure mand eller nutidens unge?

10 comments for “Programmeringseksamen: gamle sure mænd vs nutidens unge: fight!

  1. Godt indlæg 🙂 Og rigtig godt spørgsmål – Jeg ved med mig selv, at det at kode med kæmpe store basis biblioteker uden google kræver stor erfaring – noget jeg gætter på at det ikke er alle dine elever der har.

    Hvis det er problemer der skal kunne løses i en tekstboks, skal de nok mere være af den type problemer der ikke kræver det store kendskab til basisbiblioteket.

    Eksempelvis kunne opgaven være at sortere en liste der er større end den tilgængelige hukkommelse, det kræver både noget kreativitet og noget sprogforståelse.

    • Tak – Det er selvfølgelig klart at al API information skal være tilgængeligt, enten direkte eller implicit, ellers bliver det en huskekonkurrence. De studerende skulle f.eks. bruge Java RMI, og i opgaveteksten stod der (hvis man kunne finde ud af at huske at læse det), at proxy objekter skal nedarve fra UnicastRemoteObject, at deres interface skal nedarve fra Remote osv. Så alle navne er tilgængelige, man skal så vide hvordan man skal sætte dem sammen (og hvad et proxy objekt er og hvad et serialiserbart objekt er osv). Desuden starter de med et ikke-distribueret program de kan copy-paste fra, så al logik og klassestrukturer er der, det er blot distributionen som skal introduceres.

      (Java RMI er selvfølgelig totalt old school, men mere avancerede teknologier kommer først senere på 5. semester, og man lærer efter min mening nogle gode ting ved at bygge distribuerede applikationer med RMI.)

      mvh Ulrik

        • Ikke så meget, men mere end jeg troede 🙂 Det skal siges at denne test kun er en mindre del af eksamen, vores undervisningsmodel er projektorienteret, så karakteren er en helhedsbedømmelse af testen i mit kursus samt eksamen i kurserne i cross-cultural management og software engineering, og endelig deres semesterprojekt (som indeholder fagligheder fra alle 3 kurser). Sidstnævnte vægter tungt, og det er selvfølgelig i semesterprojektet at deres kreativitet gerne skal udspille sig. Min eksamen handler mest om at teste viden og konkrete færdigheder (kompetencerne tester vi i projektet).
          mvh Ulrik

  2. Man kunne næsten skrive det samme blogindlæg under overskriften “Jobinterview: gamle sure mænd vs. nutidens unge: fight”.

    Jeg havde på et tidspunkt den fornøjelse at sidde i et ansættelsesudvalg hvor vi havde behov for at gøre tingene ordentligt. Som en del af interviewet fik kandidaterne en opgave-beskrivelse der var repræsentativ for virksomheden og så fik de mindst en time, hvorefter de under interviewet skulle give et bud på estimater, teknologi-valg, mulige problemer og så videre.

    Vi søgte godt nok ikke efter nyuddanede, men så en temmelig tilsvarende tendens: Der var nogle der googlede og fandt et relevant spørgsmål på stackoverflow og andre der rent faktisk tænkte opgaven igennem selv. Første gruppe kunne måske give et mere konkret teknologi-valg, men de var mindre sikre i deres fremstilling og kunne slet ikke klare når jeg pludselig ændrede på forudsætningerne under interviewet. Anden gruppe var efter min opfattelse mere sikre i deres fremstilling og mere realistiske i deres estimater og mulige problemer.

    Nu havde vi selvfølgelig også en variable der hed erfaring, men jeg tror stadigvæk at tilgangen til et problem betød en hel del.

    På den anden side har jeg også set kompetente folk spilde lang tid fordi det enten slet ikke faldt dem ind at andre kunne have diskuteret problemet på internettet eller også bare ikke havde google-fu nok til at finde det. Det er vigtigt at kunen bruge internettets resurser som foreksempel StackOverflow, men det er mindst lige så vigtigt at kunne tilføje værdi ved at skrive de nye og originale svar – jeg håber at produktet fra vores uddannelsesinstitutioner kan begge dele.

    • Jeg har det sådan at jeg ikke rigtigt stoler på softwareudviklere som ikke har styr på deres håndværk, også selvom de mest bare skal lede og fordele udviklingsopgaver. Mine studerende tager heldigvis positivt imod det, og er i det store hele motiverede for at få styr på teknologierne.

      Desuden er vi jo stadig så heldige at have specialet som kronen på værket i studiet, det er for mig overgangsritualet hvor den studerende skal stå sin prøve: det skal både være originalt og der skal kæmpes for at gennemføre projektet. Når de er nået godt igennem et speciale, har jeg det godt med at sende dem videre ud i arbejdslivet (medmindre de har klart det alt for godt, så vil jeg helst beholde dem selv til PhD studerende…).

      mvh Ulrik

  3. Formålet med en eksamen er vel at man skal demonstrer i hvor høj grad man forstår problemet og hvor god man er til at løse problemet. Det at lave copy/paste viser jo ikke om man er god tll sit fag, eller om man er god til google. Et andet aspekt er at hvis man ikke har styr på tingene, kan de løsninger man vælger at copy/paste’er være dårlige, og dermed får man en dårlig kvalitet.

    Så det giver rigtigt god mening at man har opgaver der ikke kan/må løses med hjælp fra nettet, blot de er konstrueret så de giver den studenrende adgang til at vise hvad de kan.

    • For lige at argumentere lidt for nutidens unge et øjeblik: Copy/paste løsninger er jo typisk at man har et eller andet specifikt problem, finder en løsning på et lignende problem ved at søge på google, og så retter denne løsning til så den kommer til at passe på det specifikke problem. Det illustrerer jo en eller anden grad af forståelse, måske kun på et overfladisk pattern-matching niveau, men der en eller anden form for cognitiv process indblandet.

      Hvis det i dette kursus handler om at uddanne folk til hurtigst muligt at kunne løse specifikke problemer indenfor et domæne, og de som bruger google, copy/paste og tilretning er dem som gør det hurtigst (og antager vi korrekt), er det så ikke fint nok? Som sagt, jeg er i tvivl 🙂

      mvh Ulrik

  4. Når man er til mundtlig eksamen i Danmark er det normalt tilladt at man ser på sine noter, men det giver ekstra points, hvis man ikke gør det. Burde det være sådan også med at slå op på Internettet?

    Der er behov for folk der kan implementere ting på den måde som har vist sig at være bedst. De kan måske ikke gøre noget der aldrig er gjort før, men de kan gøre noget for dig (som abejdsgiver) som du har brug for.

    Men så er der også behov for folk der kan gøre noget der aldrig er gjort før, eller som kan gøre noget bedre end det nogensinde er gjort før. Hvis det skal kunne ses på deres karakterer at de er den slags, så skal der gives bonus for at kunne ting der ikke står på nettet. (Og jeg ved at karakterer ikke kun er til at signalere til fremtidige arbejdsgivere, men det er vel en af de ting de er til).

    Det er vel også sådan at jo mere veletableret en branche er, desto mere behov er der for at kunne regne ting ud selv. Lige nu bliver vindmøllerne større hvert år, og der er problemer der skal løses i den forbindelse som aldrig er løst før. Men om nogle år er det måske meget veletableret hvad der skal til for at bygge møller, og det der kræves til den tid er folk der kan følge den veletablerede opskrift på hvordan man bygger møller og ikke spilder tid og energi på at prøve at opfinde dem selv.

    — Erik (en endnu ældre, og derfor surere gammel mand).

    • Studieadministrationen på SDU syntes nogle gange at jeg er lidt for kreativ, når jeg udtænker evalueringsformer. De har sikkert ret, og det er nok fint for de studerende at de hjælper mig med at holde lidt igen – men hvis jeg nu glemmer dem et øjeblik, så kunne man jo være fristet til at tilbyde at de studerende til eksamen kan købe internet-adgang mod et reduceret antal mulige points (og dermed en reduceret maksimal karakter). Men ud over at studieadministrationen sikkert ikke ville bryde sig om det, så ville det også være svært at styre – hvad nu hvis en af de studerende laver en posting på stackoverflow.com med et eksamensspørgsmål, som så kan blive besvaret af udenforstående, og ydermere vil være synlig for de andre studerende med internetadgang?

      Som alternativ havde jeg overvejet, at lave en udskrift af internettet som de kunne få udleveret 🙂 I praksis kunne der være et par udvalgte stackoverflow.com artikler, som måske indeholder både godt og skidt, som de ville kunne kigge i hvis de har lyst.

      Det er dog til sådan en skriftlig eksamen svært at komme til at observere “noget der aldrig er gjort før” – men heldigvis har de studerende deres semesterprojekt, hvor de har mulighed for at demonstrere netop det. I dette semester har de arbejdet med sociale medier til sukkersyge, jeg tænker der har været gode muligheder for at komme med noget nyt og spændende som aldrig er set før. Eksamen i projektet er mundtlig, så alle muligheder er åbne. Jeg tror at vi til den skriftlige eksamen i et eller andet omfang skal holde os til, at nøjes med at checke deres evner for at komme med rimeligt standardiserede løsninger, og så lade det mere åbne ligge i projektet.

      Så spørgsmålet bliver derfor mere specifikt: når jeg checker deres evne til at lave standardiserede softwareløsninger, giver det så mening uden IDE og information fra nettet (f.eks. i form af et ekstrakt af relevant information de kunne have googlet sig frem til).

      mvh Ulrik (med passende respekt for alderdommen)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *