Att anlita en ny utvecklare är inget man ska stressa sig igenom eller låta en person sköta själv. Det finns nämligen flera olika saker man måste tänka på och ta hänsyn till. I den här guiden ger vi er en insikt i de nödvändiga tekniska och mjuka färdigheter som ni bör leta efter och förklarar vad som utgör en riktigt skicklig Swift-utvecklare. Vi ger även några förslag på intervjufrågor och förväntade svar, redogör för fördelarna med att anlita en Swift-utvecklare och tipsar om hur ni kan hantera eventuella utmaningar under hela processen.
Om Swift
Swift är ett intuitivt programmeringsspråk med öppen källkod för allmänt bruk och har en enastående, robust prestanda. Apple började utveckla Swift under 2010 med Chris Lattner i spetsen och de främsta inspirationskällorna var bland annat Rust, Objective-C, Ruby och C#. Lanseringen av Swift skedde officiellt 2014, och under 2016 blev Swift även tillgängligt för användning på Linux och Windows.
Swift används främst för att bygga appar, molntjänster och systemprogrammering för Mac, iOS, Apple Watch och Apple TV.
Som programmeringsspråk har det många fördelar. Det är interaktivt, lätt att lära sig och har en enkel men uttrycksfull syntax med moderna funktioner. Språket gör det möjligt för utvecklare att enkelt skapa snabbfungerande programvara och säkra kodklasser.
Än idag är Swift ett av de mest populära programmeringsspråken eftersom det har många användbara och praktiska funktioner för en snabb och enkel utvecklingsprocess av skrivbordsappar och mobila appar för Apple-enheter.
Enligt Stack Overflow 2022 använder 5,18 % av professionella utvecklare Swift och är nöjda med att använda det. Undersökningen baseras på svar från 53 421 deltagare.
Swift-utvecklarens grundläggande kunskaper och färdigheter
En Swift-utvecklare måste ha vissa baskunskaper. Följande kunskaper anses vara grundläggande minimikrav.
-
Kandidaten ska helst ha en kandidatexamen i programvaruteknik eller datavetenskap
-
Kandidaten bör ha flera års erfarenhet som Swift-utvecklare
-
Kandidaten bör ha utmärkt kunskap i Swift och allt som det innebär:
-
Ekosystemen
-
Grundläggande syntax, kontrollflöde, optionals och felhantering
-
Klasser, arv, initiering och interoperabilitet för Objective-C
-
Xcode – Integrerad utvecklingsmiljö av Apple
-
Utmärkt förståelse för RESTful API:er och Cocoa API:er
-
Gedigen förståelse för UI Focus och UI design samt Swift UI
-
Expertis inom OOP (objektorienterad programmering)
-
Kunskap av prestandaegenskaper och gränser
-
Erfarenhet av att arbeta med inbäddade databaser
Irmin Dzevlan, en erfaren iOS-utvecklare, berättar om alla andra viktiga faktorer som krävs för att vara en skicklig Swift-utvecklare:
”För att man som Swift-utvecklare ska kunna göra ett bra jobb måste man också ha god förståelse för MVC (Model View Controller) eftersom det används flitigt i iOS-utveckling. Det krävs även kunskap av versionshanteringsverktyg (som Git) för samarbete inom utvecklingen. Dessutom måste man vara bra på debugging, testning, databashantering och app-deployment.”
Irmin Dzevlan
Utöver de grundläggande kunskaperna och färdigheterna lägger Irmin till sina synpunkter ur en utvecklares perspektiv om vad man specifikt ska tänka på när man vill anlita en Swift-utvecklare:
-
Kontrollera deras portfölj noggrant – Gå igenom deras tidigare projekt för att bättre kunna utvärdera deras nivå. Försök leta upp iOS-appar som de har byggt och granska apparnas komplexitet och funktionalitet.
-
Ställ rätt tekniska frågor – Alla frågor måste handla om Swift-programmering; till exempel att skilja mellan strukturer och klasser, definiera optionals, användning av generics och liknande.
-
Låt dem göra ett kodningstest – Det bästa sättet att se om utvecklaren är duktig är genom ett test. Det första steget är att utvecklaren tillhandahåller kod som hen skickar in för granskning. Genom ett sådant test kan ni bedöma kandidaternas kodkvalitet, kodningsstil och förmåga att skriva kod.
-
Kontrollera deras förmåga att lösa problem – Detta är kopplat till kodningstestet och tillhandahållandet av kod som nämns ovan. Se om utvecklaren kan lösa ett kodningsproblem snabbt och hur kandidaten kommer fram till olika lösningar.
-
Kontrollera deras kommunikationsförmåga och mjuka färdigheter – Sist men inte minst bör man vara uppmärksam på utvecklarens övergripande kommunikationsstil och mjuka färdigheter samt om personen fungerar bra i ett team. Alla dessa egenskaper är väsentliga för att vara en skicklig Swift-utvecklare.
Swift-utvecklarens arbetsuppgifter
En Swift-utvecklare måste genomföra vissa uppgifter som en del av sina arbetsförpliktelser. Typiska ansvarsområden är, generellt sett, följande:
-
Designa, utveckla och underhålla appar (iOS och OS X)
-
Övervaka appintegrationen till backend
-
Mäta appens kvalitet, hur snabbt den svarar och dess prestanda
-
Hitta och åtgärda flaskhalsar i hela processen
-
Arbeta med programspecifikationer
-
Implementera alla iOS-teknologier (widgets, skärmar, sensorer, multitrådad bearbetning)
-
Hitta och åtgärda buggar
-
Säkerställa hög kodkvalitet och hantera automatisering
-
Samarbeta med arkitekten för att få en djup förståelse för tekniska lösningar
-
Kommunicera och arbeta tillsammans med DevOps-teamet för att testa och deploya nya appar
-
Samarbeta med andra team när det kommer till design och implementering av funktioner
Mjuka färdigheter
En utvecklare är mycket mer än bara en person med hög kompetens och lång arbetslivserfarenhet. Lika viktigt är det att ha hög arbetsmoral, att kunna bete sig professionellt och att ha en positiv inställning till sin arbetsmiljö. Därför är det viktigt att ta hänsyn till de mjuka färdigheterna för att få en tydlig bild av framtiden med utvecklaren i fråga som teammedlem.
Först och främst måste utvecklaren vara presentabel och punktlig. Detta ger även en uppfattning om huruvida utvecklaren är professionell och ansvarsfull eller ej.
Därefter måste utvecklaren, förutsatt att hen arbetar online för ett internationellt team, ha goda kunskaper i engelska och kunna kommunicera utan problem. Det är viktigt att språket inte ställer till problem mellan utvecklaren och resten av företaget eller deras kunder.
Att kunna kommunicera väl med sina kollegor är avgörande för ett smidigt samarbete och därför är både intresse och god lyssnarförmåga också väsentligt. Utvecklaren måste passa in i teamet på alla plan, även kulturellt, eftersom det säkerställer god sammanhållning, bra samarbete och trevlig arbetskultur för alla inblandade.
Vänligt bemötande och öppenhet går hand i hand med ovan nämnda egenskaper. För att ha en god arbetsrelation med kollegorna måste Swift-utvecklaren vara en bra lagspelare, kunna lyssna på andras åsikter eller önskemål och även kunna bidra med konstruktiv kritik och bra idéer. Om utvecklaren besitter dessa egenskaper är hen förmodligen även duktig på att analysera och lösa problem – något som är minst lika viktigt för god kommunikation och öppenhet arbetsplatsen.
Viktig teknisk kompetens
En Swift-utvecklare måste ha särskild teknisk kompetens för iOS-utveckling. Irmin har sammanfattat det viktigaste:
”Utvecklaren måste helt och hållet behärska Swift-språket för att kunna utveckla appar för macOS, watchOS, iOS och tvOS. Hen måste känna till olika datatyper, syntax, kontrollstrukturer och funktioner. Hen måste även behärska iOS-ramverken och sist men inte minst koncepten för OOP (objektorienterad programmering), dvs. arv, polymorfism och inkapsling.”
Irmin Dzevlan
En erfaren och skicklig Swift-utvecklare bör också kunna påvisa en lång erfarenhet av Swift-språket. Detta inbegriper:
-
Djup förståelse för Apples design och designmönster
-
Alla gränssnitt och principer
-
UIKit (frontend-ramverk)
-
Apples GCD (Grand Central Dispatch)
-
Kunskap om versionshanteringssystem
-
SVN, Git och Mercurial
-
Dimensionellt resonemang
-
Känsla för 3D-visualisering vid design av gränssnitt
-
God förståelse för multithreading och minneshantering
-
Expertis inom continuous integration
-
Gedigen förståelse för och erfarenhet av REST, Protobuf och JSON
-
God erfarenhet av:
-
Core Data – för att abstrahera detaljer och mappa objekt
-
Core Animation – infrastruktur för att manipulera och sammansätta appens innehåll
-
Grand Central Dispatch – (API för flera operationer som körs samtidigt. Innehåller bibliotek, förbättringar för system och språkfunktioner)
Utöver den tekniska kompetens som krävs finns det även en del verktyg i Swift som utvecklaren måste kunna använda och arbeta med. Irmin listade också följande:
-
designmönster – utvecklaren måste känna till VIPER, MVVM och MVC väl och kunna tillämpa dem i sin kod.
-
felsökningsverktyg – det finns många olika felsökningsverktyg men initialt är Xcode viktigast att behärska (debugger console, view debugger, breakpoints).
-
Unit testing – detta inkluderar att arbeta med testramverk som Quick och XCTest.
-
Apparkitektur – utvecklaren måste veta hur man strukturerar en kod snyggt och säkerställa att koden kan återanvändas, underhållas och skalas.
Vad är skillnaden mellan en bra och en jättebra Swift-utvecklare?
Det finns många kvalificerade Swift-utvecklare att välja mellan men ni vill såklart hitta den bästa. Förutom att behärska språket och ramverket berättar Irmin vidare hur man hittar en utvecklare som sticker ut från mängden:
”Skickliga Swift-utvecklare uppfyller alla tekniska krav för jobbet. Men de är också detaljinriktade och gör sitt yttersta för att skapa lättläst kod. De är snabblärda och är mycket duktiga på att lösa problem. Slutligen håller de sig informerade om nya uppdateringar och det senaste inom utvecklingen, och har samtidigt en mycket bra kommunikationsförmåga.”
Irmin Dzevlan
Frågor att ställa under intervjun
När ni ställer frågor om Swift bör ni kontrollera utvecklarens expertis effektivt och rakt på sak. Genom att använda frågor som dessa kommer ni snabbt att se skillnaderna mellan en bra och utmärkt utvecklare för ert team. Vi har tagit fram några frågor som kan vara användbara.
1. Nämn några väsentliga funktioner i Swift.
Förväntat svar: Swift har många väsentliga och smarta funktioner, men för att nämna några:
- Closures
- Tuples
- Man behöver inte använda semikolon
- Det är protokollorienterat
- Closure-support
- Färre filer och mindre kod
- Arbetet går snabbare jämfört med andra språk
- Mycket säkert
- Lättanvänt och inbyggd felhantering
- Det finns s.k. designated initializers och convenience initializers (enforced initializers)
2. Berätta mer om hur man testar iPhone-appar när det inte finns någon iOS-enhet tillgänglig.
Förväntat svar: När det gäller att testa Apple-appar som är gjorda för iPhone kan man naturligtvis fortfarande göra det, men man måste använda en särskild simulator som man får från Apple och som fungerar med ett Mac-system.
3. Beskriv de grundläggande datatypobjekten i Swift.
Förväntat svar: Med Swift får man några grundläggande datatyper. Dessa kan användas för siffror, strängar och booleska värden. Följande objekt fungerar som grundläggande datatyp:
- String – en String literal är en serie tecken som omges av citattecken.
- Int – Int används för att lagra heltalsvärden.
- Bool – används för lagring av Bool-värden. Med Swift måste det finnas true/false-villkor för att använda detta.
- Arrays – en samling av listobjekt.
- Double och Float – används i Swift för decimalsiffror.
- Dictionaries – en samling utan någon speciell ordning i sina objekt, där alla objekt av en typ delar en unik nyckel.
4. Lista Swifts Control Transfer Statements och berätta mer om hur de används.
Förväntat svar: Det finns en del olika control statements i Swift. De kan delas in i loops, branches och transfers. Det finns fem control transfer statements:
- Continue – med detta stoppar utvecklaren en loops exekvering i dess nuvarande tillstånd. Sedan får nästkommande iteration i loopen kontroll. Detta använder nyckelordet continue i en loop.
- Break – när nyckelordet påträffas bryts den nuvarande exekveringen. Detta används för snabb, tidig utgång i en switch eller loop-lock.
- Fallthrough – när man gör en matchning eller hittar den första matchningen kör "switch" fallet som är näst på tur. Det betyder att man exekverar kod för ett specifikt fall och avslutar det med samma statement, switch.
- Return – används för att returnera en funktion. Ett effektivt och enkelt nyckelord för att returnera värden som används när man är inne i någon funktion.
- Throw – ibland kan funktioner göra fel men då kan man göra en "throwing function" av den aktuella funktionen genom att använda nyckelordet throw. Där placerar man felet som inträffade tidigare.
5. Jämför operatorerna identity och equality.
Förväntat svar: Operatorn equality == används när man jämför två värden och behöver se över om dessa värden är likvärdiga och identiska. Operatorn identity === används för att se om båda referenserna man har leder till en minnesadress eller instans. Så om man jämför två referenser med olika instanser av objekt kommer operatorn Identity alltid att vara false. Det spelar ingen roll att instanserna har ett identiskt värde i det här fallet.
6. Förklara hur man åtgärdar ”circular reference”.
Förväntat svar: Man får en circular reference när man har två instanser med en solid, gemensam referens. Detta är den främsta orsaken till så kallade ”minnesläckor” när båda fallen inte kan deallokeras. Instansernas deallokering är inte möjlig eftersom instanserna hjälper varandra att förbli aktiva och att hålla sig vid liv. Vad man kan göra är att använda ”svaga” eller ”icke-ägda” referenser i stället för de starka. Det är ett snabbt och enkelt sätt att åtgärda en circular reference.
7. Beskriv optional chaining i Swift.
Förväntat svar: När man åberopar egenskaper, subscripts och metoder på en optional kallas det för optional chaining. Man kan extrahera ett sekvensvärde med detta steg om man har en värdesekvens för optional. För att returnera ett värde måste man anropa en metod, subscript eller egenskap för den optional det gäller, men bara om den redan innehåller ett värde. Om en egenskap returneras som ”nil” betyder det att den optional det rör sig om är ”nil” när man anropar berörd metod, subscript eller egenskap.
8. Berätta mer om ”arv” (inheritance) och fördelarna med det.
Förväntat svar: När metoder och olika egenskaper ärvs från en klass till en annan kallas det för arv. Klassen som lånar ut egenskaperna kallas basklass (”parent” eller ”super class” på engelska) och klassen som ärver dem kallas subklass (”child” eller ”sub-class” på engelska).
Fördelarna med arv är:
- mindre storlek på källkoden
- lättare att läsa kod
- koden kan återanvändas
- enkel uppdelning av kod (om man vill ha separata klasser för basklass och subklass)
- lättare att utöka koden
- ingen överflödig kod.
9. Förklara kopplingen mellan NSUserDefault och Core Data.
Förväntat svar: NSUserDefaults används för att lagra appinställningar och preferenser. Det är dock viktigt att inte lagra användardata eller annan kritisk data i detta fall. Oftast använder man NSUserDefaults för att lagra vissa flaggor eller små projekt, men man undviker det när man arbetar med bildcache eller lagring av stora data.
Det fullfjädrade och beständiga ramverket kallas CoreData och det passar utmärkt för transaktioner med stora mängder data. När man behöver göra en modell för enhetsattribut (entity-attribute model) och lagra användardata använder man CoreData eftersom det är perfekt för stora projekt, till skillnad från NSUserDefaults.
10. Definiera designmönstret Fasad.
Förväntat svar: Fasad innehåller en systemkomplexitet som är förenklad och anpassad för strukturella designmönster. Denna design visar inte exakt hur det fungerar, men har ett användarvänligt gränssnitt och tillåter systemåtkomst till klientprogrammen. För att anropa användardefinierade funktioner och systemrelaterade klasser genom delegater måste man först använda designmönstret Fasad för att erhålla en enda klass eller FACADE som innehåller de nämnda delegaterna.
Varför behöver ni anlita en Swift-utvecklare?
Det är viktigt att fundera på varför ni behöver anlita en Swift-utvecklare. Vad är anledningen till rekryteringen?
Vad betyder detta för apputvecklingen på lång sikt, och vad får ni ut av det? Låt oss titta närmare på det.
-
Snabb apputveckling – Swift använder en mycket enkel och tydlig grammatik och syntax, vilket skapar färre krav för en viss uppgiftsspecifik kod. Arbetet regleras smidigt genom att ARC (Automatic Reference Counting) och man får en tydlig överblick över minnet och dess användning. Detta gör att utvecklarna också kan arbeta mycket snabbare.
-
Lätt att implementera – vem som helst som är intresserad av utveckling kan enkelt ladda ner Swift och använda det för sin iOS-apputveckling, framför allt eftersom det har en öppen källkod. Det är dock smartare att anlita en professionell Swift-utvecklare med omfattande expertis inom iOS om man vill att jobbet ska utföras både bra och effektivt.
-
Kraftig prestanda – om man vill ta kod från ett språk översätter man det snabbt med hjälp av infrastrukturen LLVM (ett bibliotek för att generera maskinkod). Eventuella buggar i koden upptäcks och fixas snabbt, och det finns ingen risk för att koden kraschar under processen. Dessutom är risken för undermålig deployment av kod mycket lägre.
-
Förbättrad skalbarhet vad gäller appar – med rätt Swift-utvecklare får man en välfungerande app som kan köras blixtsnabbt. Nya saker eller funktioner kan smidigt läggas till i appen, vilket säkerställer att den alltid fungerar perfekt. För att appen ska sälja bra och för att användarna ska vara nöjda måste appen fungera perfekt i alla lägen, utan undantag.
-
Bättre minneshantering – ARC har en praktisk funktion för att samla in ”skräp”, dvs. radera onödiga instanser. Detta ger en snabbare utvecklingsprocess som endast kräver lite minne.
-
Koden kan återanvändas – man kan återanvända kod med Swift både i backend och frontend, vilket gör att processen går snabbt och smidigt. På så vis kan man även spara pengar på lång sikt.
-
Minskad volym och storlek – appar som skapas med Swift kommer generellt sett att vara betydligt mindre eftersom språket redan innehåller alla viktiga bibliotek. Tack vare Application Binary Interface (ABI) har alla Apple-plattformar stöd för detta språk.
Vad får ni när ni anlitar en Swift-utvecklare och använder Swift i ert företag?
Om ni tar hjälp av kvalitetssäkrade, professionella Swift-utvecklare som har lång erfarenhet av att skapa iOS-appar kan ni förvänta er följande:
-
Högpresterande mobilappar som svarar snabbt
-
Innovativa CI/CD-lösningar
-
Enkel åtkomst till API:er
-
Utmärkt apputveckling för företaget
-
Enkel åtkomst till API:er
-
Enkla funktioner för datakommunikation med iOS-enheter
-
Snyggt designade användargränssnitt
-
Fantastisk appsäkerhet
-
Utmärkt UX, anpassningsbar prestanda och ren kod
-
Förenklad felsökning med XCode (Apple IDE - Integrated Development Environment)
Sammantaget finns det många fördelar med Swift, både för utvecklaren som använder språket och för företaget som använder det i sitt arbete. Irmin nämner några:
1. Hög prestanda
Eftersom det är ett kompilerat språk kan det köras mycket snabbare än andra, som t.ex. JavaScript. Utvecklaren kan effektivt optimera kod- och kompileringsnivån.
2. Enkel design
Swift är lättare att lära sig och enklare att använda rent praktiskt än många andra språk. Syntaxen är lätt att förstå och alla funktioner är användarvänliga vilket är fantastiskt – särskilt för nybörjare inom mobilutveckling.
3. Snabb utveckling
Eftersom syntaxen för Swift är modern och ren går kodningsprocessen mycket snabbare och effektivare än förväntat. Utvecklaren kan hitta fel och åtgärda eventuella problem i ett tidigt skede.
4. Öppen källkod
Swift är kostnadsfritt att använda och det är en stor fördel att utvecklare dessutom kan bidra med sin expertis för att utveckla språket. På så vis kan företag spara mycket pengar som annars skulle läggas på licensavgifter. Det är ett språk som ständigt utvecklas, vilket är fördelaktigt för alla.
5. Interoperabilitet
Det finns en smart integration mellan kod i Swift och kod i Objective-C, så att utvecklaren enkelt kan använda båda språken för ett projekt om det behövs. Detta är särskilt fördelaktigt för företag som redan har iOS-appar som är byggda med Objective-C.
6. Säkerhet
Swifts system för optionals och dess typsäkerhet förhindrar fel, kraschar eller att appar beter sig oväntat.
Populära varumärken som använder Swift
Swift är ett pålitligt programmeringsspråk som används av följande välkända märken:
- Apple
- Coursera
- 9GAG
- LinkedIn
- Meta/Facebook
- Robinhood
- Uber
- Lyft
- Asana
- IBM
- Square
Olika branscher och tillämpningar av Swift
Programmeringsspråket Swift används i många olika branscher vilket gör det användbart för alla möjliga företag. Vissa branscher med speciella behov har särskilt mycket nytta av Swift:
För alla iOS-mobilappar är Swift det primära valet, särskilt eftersom många företag kräver iOS-appar för interaktion med kunder.
Gaming
Spel för iOS-enheter byggs också med Swift – en väldigt viktig punkt då mobilspel är mer populärt än någonsin. Det finns ett stort behov av Swift-utvecklare som kan skapa fängslande spelupplevelser av hög kvalitet.
Sjukvård
Inom sjukvården har det hänt mycket och man har anpassat branschen genom att använda mobil teknologi, bl.a. för att hantera patientdata, övervaka folks hälsa och tillhandahålla läkartjänster på distans. Swift ett mycket bra språk för alla dessa punkter.
Utbildning
Swift är ett utmärkt val när det gäller att ta fram utbildningsappar för iOS-enheter. Det kan röra sig om appar för studiehjälpmedel och inlärning, men även pedagogiska spel.
Finans
Alla finansinstitut behöver pålitliga och säkra appar för att hantera investeringar, transaktioner och kunddata. Finansinriktade appar som är byggda med Swift ger stark typsäkerhet utan säkerhetsrisker eller fel.
E-handel
Onlineföretag behöver särskilda appar för e-handel för högre säkerhet och snabbare prestanda. Genom att erbjuda snabba och högkvalitativa appar kan företagen engagera kunderna på ett mer effektivt sätt, även långsiktigt.
Sociala nätverk
Appar för sociala medier är mer populära än någonsin. En skicklig Swift-utvecklare vet hur man skapar fängslande appupplevelser där användaren kan kommunicera med sina sociala kretsar.
Möjliga utmaningar när ni anlitar en Swift-utvecklare
Innan ni anlitar en Swift-utvecklare är det viktigt att ha koll på eventuella utmaningar som ni kan stå inför under rekryteringsprocessen.
För det första kan det finnas många okvalificerade utvecklare ute på arbetsmarknaden. Många kanske skulle vilja jobba med Swift-utveckling, men det finns en risk att de saknar den expertis som behövs för att kunna arbeta med språket.
I och med detta finns även risken att det bara finns ett fåtal högkvalificerade Swift-utvecklare. Detta kan göra rekryteringsprocessen utdragen och förlänga den avsevärt, vilket kan kosta både tid och pengar. I ett sådant fall är det vanligt att de få utvecklare som finns även begär högre lön, eftersom de är mycket eftertraktade och har många jobberbjudanden från andra företag.
Sedan tillkommer rekryteringskostnaderna. Om ni gör hela processen in-house eller med intern personal kan det ta lång tid, förmodligen flera månader, innan ni anlitar någon. Och det är fortfarande inte någon garanti för att ni får ett bra resultat. Ju längre ni letar efter rätt Swift-utvecklare, desto mer kostar rekryteringen.
En annan utmaning är konkurrenterna och lönerna de erbjuder. Försök att hålla koll på jobbplattformarna och läsa på om löneintervall för tjänsten i fråga för att se om ni ligger rätt till eller skiljer er mycket från era konkurrenter. De kanske kan erbjuda fler förmåner eller högre lön – oavsett fallet bör ni hålla er informerade för att planera er anställningsprocess så bra som möjligt.
En smart och smidig lösning på den här utmaningen är att förlita er på ett företag eller team som specialiserar sig på just rekrytering och anställning. Då behöver ni inte fundera på hur ni de hittar bästa utvecklarna för era behov eller vänta i flera månader innan ni hittar rätt. Samtidigt slipper ni dessutom oroa er för konkurrenter och eventuella problem under rekryteringen.