Lær at snyde?

En artikel i New York Times tager fat i det problem, at mange datalogistuderende i USA bliver taget i at snyde, når de skal programmere. Der er masser af kodeeksempler derude, som dukker op i diskussionsfora som f.eks. StackExchange, og dem er det oplagt at bruge, hvis man selv sidder fast.

Jeg gør det også selv; jeg programmerer ikke ret tit, men for nylig skulle jeg opdatere et shellscript til at håndtere en hel masse filer afleveret af studerende. Her opdagede jeg at jeg ikke længere kunne huske, hvordan man tester om der ligger filer med en bestemt endelse i et bestemt katalog [ja, så rusten er min viden]. Så jeg fandt svaret på StackExchange-stedet StackOverflow og nogle linjer bash-kode, jeg kunne tage udgangspunkt i.

Dette er en helt gængs fremgangsmåde i programmeringssammenhænge. Men hvorfor må studerende så ikke gøre dette? spørger nogle så. En af dem er Matthew Hughes, der er en engelsk journalist. Og han hævder, at man i softwareudvikling bare skal have arbejdet gjort og derfor ikke følger principperne fra den akademiske verden. Derfor, siger han, bør datalogiuddannelserne gøre denne praksis med at tage andres kode til normen.

Men problemet er ikke, at man bruger andre menneskers kodestumper eller at man står på skuldrene af andre. Og problemet er heller ikke at en “uheldig” akademisk tradition står i vejen for effektivitet. er den manglende ærlighed, der opstår, når man ikke indrømmer, at man bruger andres kode.  Det er den sædvanlige bekymring om plagiering, vi har med at gøre. I open source-projekter skal man netop eksplicit kreditere hinanden, og det er faktisk en praksis, der stammer fra den akademiske verden. Richard Stallman, der om nogen er ophavsmand til open source-ideen, tilbragte som bekendt selv en del år i den akademiske verden.

Men hvad er egentlig praksis for at bruge andres kode? I nogle tilfælde er de bidrag fra andre, som man bruger, måske bare en linje, der viser hvilke valgfrie argumenter, en kommando skal have for at virke korrekt (sådan var det i mit tilfælde), og da er det reelt umuligt at kreditere, for der er her kun tale om minimale eksempler. Men for længere stumper kode er det helt anderledes.

Hvis studerende i deres projektarbejde anvender kode som andre har lavet, men gør tydeligt opmærksom på hvor de har gjort det og hvorfor, kan vi nemt se, hvad de studerende kan og hvad de ikke kan og om de studerende selv opfylder læringsmålene. Og det er dét, datalogiuddannelserne skal lære de studerende – at de altid skal kreditere andre for det, de ikke har lavet selv.

Hvis man f.eks. skulle implementere en parser for at opfylde læringsmålene for et projekt, men snupper koden for en parser fra andre, er det ganske gemen plagiering, hvis man ikke krediterer det, og et tydeligt tegn på at man ikke har vist, at man kan implementere en parser, hvis man krediterer andre for koden!