I takt med att den hårdvara som sitter i våra konsoler och datorer blir allt kraftfullare får vi ständigt vackrare och mer avancerade spel. Bättre ljud, snyggare grafik, kraftfullare fysik, fler deltagare och större världar - det är inte undra på att utvecklingsstudiorna blir allt större. Men allt vi ser drivs av kod, resultatet av tusentals timmars knåpande med siffror, tecken och formler.

De trollkarlar och trollpackor som kokar ihop denna häxbrygd kallas programmerare. På följande sidor ger fyra av dem - Henrik Karlsson på #Dice, Alexander Ericsson på #Massive, Petter Mannerfelt, också Massive, samt Anders Elfgren, #Avalanche - sin syn på vad yrket kräver.

Beskriv kortfattat vad ditt yrke går ut på.

Henrik Karlsson: Som arkitekt är man ansvarig för övergripande design inom ett område i spelmotorn. Man måste se till att alla programmerare som är involverade i området jobbar mot samma mål. Arkitekten programmerar en hel del själv för att ha nära kontakt med kodbasen och förstå problemen. Frostbite har ett eget litet team som sitter vid sidan om spelprojekten och ser till att spelmotorn är anpassad till spelprojektetens önskemål. I detta team sitter Frostbite-arkitekterna.

Alexander Ericsson: Som gameplay-programmerare sysslar man med det mesta som har anknytning till spelet. Det kan vara allt från att jobba på större system under flera veckor eller månader till att jobba i korta iterationer tillsammans med en designer eller grafiker, för att finslipa en viss feature.

Petter Mannerfelt: Bra fråga, ibland undrar jag det också! Jag gör lite av varje, en dag kan jag sitta och optimera vårt nätverkprotokoll och en annan ser jag till så att enheterna i vårt spel rör sig som de ska tillsammans med speldesigners och artists. Mångfalden i mitt arbete är det som gör det så kul, det finns fullt med saker att göra hela tiden.

Anders Elfgren: Jag utvecklar (underhåller, designar och tillverkar) verktyg för våra designers och artister (och ibland även för kodare). Med verktyg avser jag alltid ifrån små Python-skript till våra datakompilatorer, autobuildersystem, världseditorn samt alla andra verktyg vi har. Även om stor del av tiden går åt till faktiskt programmering så handlar mitt jobb mycket om att prata med designers för att lösa olika problem de har, eller för att komma på lösningar för hur saker ska kunna funka bättre.

Vilken utbildning eller vilka färdigheter krävs för att kunna jobba inom ditt yrkesområde?

Henrik Karlsson: Man bör kunna C++ och gärna C#, sedan är det lite olika beroende på vad för programmerare man vill vara. I och med vad som händer inom utvecklingen av hårdvara så blir det viktigare och viktigare att känna till hur multitrådade applikationer fungerar och även hur man programmerar för att utnyttja kraften från hårdvaran så bra som möjligt.

Alexander Ericsson: Formell utbildning spelar liten roll i förhållande till faktiska kunskaper. Goda programmeringskunskaper i C++ och bra samarbetsförmåga är dom viktigaste egenskaperna. Ett brinnande intresse och vilja att lära sig nya saker är också väldigt viktigt.

Petter Mannerfelt: Egentligen krävs ingen formell utbildning men att gå i skola är alltid ett bra sätt att lära sig saker på, för att t.ex optimera programkod krävs viss kunskap om hur en dator faktiskt fungerar. Jag rekommenderar ett par år på högskola eller universitet för att lära sig sådant som man annars inte skulle lära sig på egen hand.

Det är inte så jätteofta man bestämmer sig för att konstruera en dator från grunden hemma, om jag inte hade tvingats göra det i skolan hade jag nog inte riktigt förstått hur min programkod faktiskt förhåller sig till de elektroniska komponenterna.

Anders Elfgren: Jag kan inte säga att det krävs någon utbildning, då flera programmerare i branschen lärt sig mer eller mindre själva. Dock är det absolut en bra grej att ha. Även om HR-avdelningar på spelföretag självklart tycker det är bra med en högskoleutbildning, så handlar det (mer än i andra branscher) till sist alltid om vad man kan och om man kan lära sig, och inte vad som står på ditt CV. Det jag och många med mig hävdar är att det man lär sig på en högskola/universitet är inte så mycket det man får lära sig på kurserna, utan att man blir bra på att lära sig saker över huvud taget.

Angående färdigheter man måste ha... massor. Det kanske uppenbaraste är att man måste vara duktig på att programmera. Ett vanligt råd till programmerare är att man ska lära sig flera språk, något man får lite smak av på högre utbildningar - ofta Java i kombination med nåt funktionellt språk har jag förstått är vanligt. Java som språk för att göra spel är nog relativt dött tror jag - webbspel görs i Actionscript/Flash (och kanske snart .Net/Silverlight) och vet inte om jag någonsin sett något vettigt desktopspel skrivet i Java. C# är dock på väg rätt stort iom XNA och SL, och med tanke på dess likheter som språk till Java känns det vettigare att lära sig. Python är jag kär i - det är ett fantastiskt litet språk som alla, ALLA, har nytta av att kunna. Jag kan hålla på och prata språk i evighet, men när det kommer till kritan är det C++ som gäller för att utveckla AAA-spel, så lär dig det. Även om du tänkt utveckla spel till XNA Community Games eller Flash-spel, så kommer dina kunskaper i C och C++ hjälpa dig väldigt mycket.

Vad gäller programmering så kan man fundera på hur viktigt det är att bli duktig på prestanda. Det är väldigt viktigt. 'Nuff said. Oavsett vilken del av spelet eller verktygskedjan du håller på med, så är det värt att kunna skriva kod som är snabb. Andra viktiga färdigheter: Kommunikationsskills (oavsett vad du tycker om att koda så kommer du behöva diskutera saker med både andra kodare samt designers; versionshantering (integrering och merge-ning sker dagligen); att läsa böcker och bloggar; att kunna sitt utvecklingsverktyg (tangentbordskombinationer istället för mus är snabbare och hälsosammare ); insatthet i designtänk och hur man jobbar med t.ex. Maya och Photoshop; matematik och fysik.... Med mera. Det finns ingen gräns på saker man måste kunna.