tisdag 5 februari 2013

IT-branschen - detta är ett problem

Jag arbetar som systemutvecklare. Det har jag gjort i snart tio år, hälften av tiden som konsult. Jag har arbetat med skarpa system inom bland annat finans- och försvarssektorn med mycket höga kvalitetskrav. Jag har en mycket kvalificerad universitetsutbildning med matematik som huvudämne. Om jag idag skulle söka en utlyst tjänst inom IT-branschen skulle jag säkert vara en intressant kandidat. Men, jag klarar i alla fall inte de programmeringstester som görs i första sållningen på många företag.

Mitt huvudämne på universitetet var matematisk logik, jag förstår hur pekare fungerar. Det betyder inte att jag inte kan bli lurad av krånglig pekararitmetik. Jag har aldrig arbetat med C och förstår inte poängen med att kompaktifiera kod tills den blir krånglig. I mitt arbete skapar jag nya klasser i C++ högst en gång i månaden och håller inte reda protected, virtual och abstract till vardags.

Den grundläggande orsaken till detta är att jag aldrig lärt mig programmera. De få programmeringskurser jag läst gavs tidigt 90-tal med Pascal som huvudspråk. Jag trodde nog att jag efter snart tio års arbete som programmerare skulle ha lärt mig dessa saker, i alla fall tillräckligt bra för att klara ett grundläggande programmeringstest, men det har jag inte. Under mitt arbetsliv har jag arbetat i Linux- och Windows-miljö. Jag har programmerat i C++, C#, Delphi, Python och PostScript, plus lite annat gott och blandat. Jag har tvingats fuska lite i webbprogrammering, hanterat databaser i MSSQL och MySQL, beblandat mig med Word och Excel. Både jag och mina arbetsgivare anser att jag utan problem klarat av att utföra mitt arbete.

Det har aldrig funnits några begränsningar av typen "det där är för komplicerad/viktig kod för dig att arbeta med". Slutsatsen blir: dessa tester speglar inte förmågan att göra ett bra jobb som systemutvecklare. För att tydliggöra problemet: jag är en etniskt svensk man, med svensk universitetsutbildning i matematik och stor arbetslivserfarenhet av programmering. Ändå passar jag inte in i mallen för hur en programmerare ska vara. Hur olik mallen jag varit om jag istället hade haft biologi som huvudämne, vill jag inte tänka på. Eller haft en universitetsutbildning i datavetenskap men från ett land där man gör saker på ett lite annorlunda sätt.

För att försöka sluta lite konstruktivt kommer här några förslag på vad vi kan göra åt detta:
  • Inse att klassiska programmeringstester mäter hur lik en stereotyp datavetare någon är, inte hur bra de kan utföra arbetet.
  • Dessa tester är oftast bara till för att sålla ut de omöjliga. Fråga något annat: matematiska problem, NOG-delen från ett högskoleprov eller algoritmer beskrivna med naturligt språk.
  • Ge människor chansen. Om det finns en möjlighet ta in ovanliga med intressanta kandidater som prov- eller projektanställda och ge dem en möjlighet att bevisa sin förmåga eller potential.

3 kommentarer:

  1. Det beror ju helt på tjänsten du söker, i min erfarenhet som systemutvecklare i 6 år (C#, Java, Scala, SQL/noSQL, JS, HTML, CSS) är tester inför anställning (enbart multinationella stora bolag samt renommerade konsultbolag) väldigt lätta och ofta baserade på de tekniker / metoder / paradigm företaget i fråga använder sig av.

    Kan det helt enkelt vara så att du är för matematiskt orienterad? Det finns väldigt många positioner inom systemutveckling där en högre matematisk förståelse inte gagnar dig i dag-till-dag arbetet. /utvecklare från sweddit

    SvaraRadera
  2. Jag är tveksam. Jag arbetar ju med att programmera och gör det varje (bra) dag. Under dessa år har jag lärt mig massor med saker men inte allt som efterfrågas på dessa prov.

    Efter den diskussion som blev på sweddit funderar jag på om inte behovet av att förstå objekt orientering är överskattat bland programmerare. Jag rättar buggar eller lägger till ny funktionalitet i existerande kod. I denna finns redan en klass-struktur med mera där vad som ärver vad och hur är bestämt. Även när jag skapar nya klasser lägger jag lite tid på att fundera på vad som ska vara public, private o.s.v. Det är oftast självklart.

    Det är möjligt att jag skulle skriva en del kod annorlunda om jag hade en mer typisk bakgrund men det har aldrig varit på den nivån att någon haft något att invända på min kod.

    SvaraRadera
  3. Jag har också hamnat i programmeringstest på intervjuer och misslyckats koda det som man förväntar sig.
    Jag har bara jobbat 3 år som systemutvecklare, gått från support till att lära mig SQL och senare C#. Men ändå kan jag sätta ihop ett fullt dugligt program som är arkitektoriskt korrekt efter de riktlinjer på företaget samt implementera diverse libraries som faktisk ger nytta åt businessen.

    Jag tror att i mitt och ditt fall så har vi på något sätt hoppat över steget där man bara kodar, algoritmer etc. och kommit direkt till den praktiska och mer seniora biten, att faktiskt ha utvecklat ett program som tar hänsyn till alla aspekter i fråga om kostnad, tekniker involverade, design och arkitektur. Inget av detta frågas om programmeringstesterna. Alla vet ju att det inte bara finns en lösning till problem, men att resonera och våga bestämma sig för en lösning är det viktiga.
    Oavsett om det är windows servicar, web servicasr, store procedures, share point, biz talk, SISS, MQ whatever som ska användas så måste det kunna förvaltas.

    För min del så är det svårt att komma vidare till själva anställningen på grund av att jag inte kan programmera som en chalmerist, dataingenjör eller någon som är genuint bra på att koda. Det dumma är att alla jobb med it och systemutveckling kräver att du ska kunna programmera, inget om allt det andra som krävs erfarenhet.

    Jag kommer lägga om strategin med att mitt personliga brev förklara att det är meningslöst att be mig göra programmeringstest, om det är en vass programmerare som bara gör kod som de efterfrågar så är jag inte intresserad.

    Lite synd det där, jag söker inte efter jobb där man ska programmera rymdraketer utan jobb som utvecklar någon businessapplikation. I verkligheten så bryr sig inte kunden om man har byggt en programmeringstekniskt bästa systemet i världen bara att det funkar och lätt att hantera efteråt.

    SvaraRadera