Hvor mange af jer har startet eller deltaget i et nyt softwareprojekt, hvor udviklernes tekniske kompetencer ikke matchede teknologien bag det endelige system? Kæmpede dit projekt med at levere den aftalte funktionalitet med den aftalte kvalitet ved de definerede milepæle eller nåede I det simpelthen ikke? Hvis problemerne helt eller delvist kunne forklares med manglende tekniske kompetencer eller overblik, så kunne en del af løsningen givetvis have været at øge udviklernes tekniske niveau.

Hæv produktivitet og tekniske kompetencer i projektet - ansæt en mentor.

CSC Danmark stod i 2008 overfor en sådan udfordring med udviklingen af den næste generation af CPR systemet. Systemets forretningslogik skulle migreres fra NATURAL udvikling på en mainframe platform til en Java EE arkitektur. Organisationen havde ikke ledige, kompetente Javaudviklere, stående i kø til at bistå projektet. I stedet tog CSC en professionel, men også modig beslutning og tilknyttede en ekstern teknisk mentor til projektet på fuld tid, til at forestå teknisk uddannelse af den pågældende afdelings udviklere.

Hvad kan en mentor, som vi ikke kan klare selv?

Spørgsmålet er, om det giver mening at hyre en mentor og instruktør til at forestå udviklernes tekniske uddannelse? Er det ikke bedre at lade udviklerne lære teknologierne gennem udviklingsarbejdet i projektet?

Effektiv læring er oftest betinget af de omstændigheder, læringen foregår under. I den pædagogiske teori snakker man om, at den lærende for overhovedet at kunne lære skal bringes ind i sin nærmeste udviklingszone. Set i relation til tekniske kompetencer kan den nærmeste udviklingszone defineres dels ved afstanden mellem den lærendes aktuelle kompetencer og de (fremtidige) kompetencer, som er nødvendige for opgaveløsningen, dels ved tilstedeværelsen af et andet individ, der kan facilitere opgaveløsningen og derved læringsprocessen. Udviklingszonen nås typisk, når den lærende kan spejle sig i en rollemodel (dvs opnå anerkendelse og samhørighed) men samtidigt stile mod at opnå rollemodellens (tekniske) kompetenceniveau.

Inden for pædagogik samt mentoring opererer man derudover med, at effektiv læring opnås gennem praktiske foranstaltninger/handlinger. Der kan eksempelvis sættes læringsmål, så det synliggøres hvad der præcist skal læres. Disse kan evt. følges op af status evalueringer og feedback sessioner, så der reflekteres over om læringsmålene er opfyldt. Herved vil ikke bare mentor, men også mentee, forholde sig reflektivt til sin egen læring.
Har projektet allerede teknisk erfarne udviklere med en empatisk personlighed og viljen til at indgå i et mentor - mentee ordning, er der god mulighed for at de knap så erfarne udviklere kan læres op inden for projektet. Det kræver en tidsmæssig investering i mentor - mentee ordningen og sandsynligvis også lidt mentoruddannelse til den erfarne udvikler. En anden fordel er, at den erfarne udviklere kender best practices inden for teknikken og derved er i stand til hele tiden at lede mentee på rette spor. Projektet vil i givet fald godt kunne oplære de mindre erfarne udviklere på egen hånd.

Har projektet ingen udviklere med høj teknisk erfaring er udviklingernes læring mere ilde stedt. Det bliver umiddelbart svært at bringe udviklerne ind i deres nærmeste udviklingszone. Uden en mere erfaren udvikler ved siden, bliver det desuden svært at sætte læringsmål op og prioritere dem. Selvlæringen vil ofte være karakteriseret ved læsning og søgning på må og få og et fuldt overblik af teknologien kommer måske til at mangle. Et meget sandsynligt scenarie er, at udviklerne ender med at benytte den nye teknologi mindre optimalt, hvilket kan koste både projekttid og ringere kvalitet i det leverede produkt. Der er altså en risiko for, at man mister den forventede gevinst ved at opgradere teknologien. Man kan vel heraf konkludere, at det må betegnes som en absolut risikofyldt beslutning at starte et udviklingsprojekt uden tilstedeværende tekniske kompetencer.

Undervisningen ud af kurser og ind i projekter

Den teoretisk undervisning i kurser er oftest svær at omsætte til praksis i udviklingsprojektet. En indlæringsperiode samt misforstået brug af teknologien tilfører automatisk projektet risici, hvilket kan resultere i lavere produktivitet og til tider også lavere kvalitet.

Kan du også nikke genkendende til dette udsagn? Har du som udvikler deltaget på tekniske kurser inden projekt start, kender du også til problemstillingen med efterfølgende at gennemskue de optimale løsninger med den nye teknologi. Løsningen er at flytte undervisningen ind i projektet! On-the-job training giver den helt store mulighed og fordel, at undervisningsforløbet og dets indhold kan tilpasses 100% til udviklernes behov.

I løbet af samarbejdet med CSC Danmark udarbejdede vi blandt andet 2 længerevarende uddannelsesforløb for 18 udviklere. I planlægningen af uddannelsesforløbet blev der taget stilling til følgende:

  • Læringsmål. Planlægningen af forløbene startede med en vurdering af, hvad udviklingerne skulle lære teoretisk og hvilke opgaver de skulle kunne varetage efter forløbet. Det resulterede i en række læringsmål, der lå til grund for resten af planlægningen.
  • Kontekst. Uddannelsesmaterialerne var 100% skræddersyede til domænet og systemet under udvikling. De teoretiske emner var nøje udvalgt, så de passede til udviklernes behov og de foreliggende opgaver. Diagrammer, eksempler mm var tilpasset domænet. Normale skoleopgaver var droppet til fordel for udviklingsopgaver på systemet. Fordelen er umiddelbar. Barrieren mellem teorien og dens anvendelse var stor set fjernet. Samtidigt var det enormt motiverende, at undervisningen var relateret til udviklingsopgaverne. Det resulterede i meget medlevende deltagere og bedre indlæring. En klar fordel ved denne undervisningsform er i øvrigt, at flere teoretisk emner, den eksisterende design dokumentation og best practices kan blandes til at give det fulde overblik.
  • Læringsprocessen. Undervisningsemnerne og udviklingsopgaverne blev nøje planlagt for at fremme indlæringen. Kagen blev skåret således, at en undervisningssession altid blev efterfulgt at en ny udviklingsopgave.
  • Timing. Tidspunktet for undervisningen var perfekt timet i forhold til arbejdsopgaverne. Undervisningsforløbene faldt i starten af projektet. Herved foregik læringsprocessen, da udviklernes behov var størst, hvilket igen øger indlæringen.
  • Omgivelser/Miljø. Deltagerne blev "isolerede" i et afsondret lokale under undervisningsforløbene. Effekten var et afskærmet læringsmiljø, hvor de kunne koncentrere sig om undervisningen og ikke dagligdagens produktionsproblemer.

Konsekvensen af on-the-job training skulle altså være til at forstå. Skræddersyede udviklingsmaterialer og bedre mulighed for at skabe øget læring øger ikke alene udviklernes kompetencer hurtigere, men gør dem mere produktive. Kombiner det med muligheden for, at instruktøren/mentoren deltager i reviews og diskussioner af løsningerne i udviklingsopgaverne. Uhensigtsmæssige løsninger opdages hurtigt, hvorved kvaliteten af undervisningsperiodens leverancer øges. On-the-job training giver altså større sikkerhed for, at indlæring, produktivitet og kvalitet er tilfredsstillende.

Er det ikke en frygtelig dyr løsning?

Selv om on-the-job training kan give bedre indlæring, produktivitet og kvalitet, så er det dyrt at have en mentor ansat på fuld tid. Han kan jo trods alt ikke undervise hele tiden.

Det er fuldstændig korrekt at mentoren ikke kan foretage kontinuerlig undervisning af de ansatte. I praksis viser det sig dog oftest som et ikke-eksisterende problem, da der er masser af andre mulige opgaver. For det første skal undervisningssessioner eller hele undervisningsforløb planlægges nøje. Hele planlægningen, produktionen/udvælgelsen af materialer mm. tager en del tid. Derudover kan mentor deltage i  mødeaktiviteter (som teknisk ekspert), lave reviews, svare på tekniske spørgsmål, assistere udviklerne med løsningen af tekniske problemer og på anden måde bistå udviklingsprojektet. Mentor kan også deltage på projektets udviklingsopgaver, eksempelvis være med til løsningen af centrale moduler i den udviklede applikation. Mangler afdelingen udviklere med relevante tekniske kompetencer, kan mentor desuden blive en værdifuld sparingspartner for en evt. arkitekt.

Mentors assistance i projektet øger altså ikke alene den tilstedeværende tekniske kompetence, men frigiver typisk medarbejdere, som skulle udføre disse opgaver til andet arbejde. Alt i alt ender mentors tilstedeværelse typisk med at øge produktiviteten og kvaliteten uden for selve undervisningssessionerne.

Opsamling

En ekstern mentor kan altså vise sig, som en særdeles god investering i projekter, hvor udviklerne mangler tekniske kompetencer. Ved at lave tilpassede undervisningsforløb kan udviklernes tekniske kompetencer øges, hvilket vil sikre en bedre produktivitet og kvalitet i projektet. Samtidigt kan mentor bidrage med sine tekniske kompetencer mellem undervisningssessionerne, hvilket kan være med til at aflaste andre medarbejdere eller bare løse tekniske problemstillinger hurtigere.

Tak til

CSC Danmark for medvirken i denne artikel og specielt Karina Meeland og Per Engsberg for et godt samarbejde i planlægningen af mentorforløbet hos CSC

Litteratur og links:

Teknologisk mentor - backup i hverdagen: Om Lund&Bendsens mentorer

On-the-job training - https://en.wikipedia.org/wiki/Training

Mads Hermansen - Læringens Univers: Bogen diskuterer forskellige læringsteorier. Jeg har fortrinsvis brugt definitioner fra bogens første kapitler.

Lois J. Zachary - Creating a mentoring culture: Omhandler skabelsen af en mentorkultur i en virksomhed. Jeg har især søgt inspiration i kapitlerne 1, 2, 5, 6 og 11

About the Author -

Jesper Tejlgaard