Scala-udviklerfærdigheder

Udgivet: Sidst opdateret:
Scala: spørgsmål til interview med softwareingeniører

Det kan være utroligt svært at finde den rigtige Scala-udvikler. Man skal søge gennem bjerge af CV'er, som kandidater og rekrutteringsfirmaer har sendt for at finde den rette. Men i sidste ende er det svært at sige, hvilke af disse potentielle kandidater der vil være i stand til at udføre jobbet, og hvilke der simpelthen ikke er de rigtige for din organisation. For at gøre dit arbejde lidt lettere har vi skrevet denne artikel for at forklare præcis, hvad du skal gøre for at finde den rigtige Scala-udvikler.

1. Hvad du skal vide om Scala for at ansætte Scala-udviklere

Scala (/ˈskɑːlɑː/ skah-lah) er et programmeringssprog til generelle formål med understøttelse af funktionel programmering og et stærkt statisk typesystem Designet af Scala startede i 2001 på École Polytechnique Fédérale de Lausanne (EPFL) af Martin Odersky. Det var en opfølgning på arbejdet med Funnel, et programmeringssprog, der kombinerede idéer fra funktionel programmering og Petri-net. Odersky har tidligere arbejdet på Generic Java og javac, Suns Java-compiler.

Scala bruges hovedsageligt til backend-udvikling i applikationer med høj samtidighed.

Vigtige fordele ved Scala:

  • Objekter er uforanderlige "som standard" (f.eks. alle samlinger)
    Det gør sproget meget mindre fejlbehæftet, især i forbindelse med tråde.
  • Et avanceret typesystem
    Flere typer betyder, at Scala kan udføre flere typer opgaver end sprog med mere grundlæggende typesystemer, som f.eks. Java.
  • Funktionel, objektorienteret og imperativ programmering er alle mulige
    Forskellige opgaver kræver forskellige programmeringsstile. Mens andre sprog kun arbejder med en eller to programmeringsstile, arbejder Scala med alle tre. Det betyder, at en udvikler, der arbejder i et Scala-miljø, kan udføre flere typer opgaver uden at skulle skifte til et andet programmeringsmiljø.

2. Hvad er vigtigt for IT-rekrutteringsmedarbejdere at vide om Scala?

Frem for alt er der tre supervigtige ting, som enhver teknisk rekrutteringskonsulent bør vide, når de forsøger at besætte en stilling som Scala-udvikler.

  1. I øjeblikket er Scala den mest populære funktionelt programmeringssprog. Selv om det har en række forskellige anvendelsesmuligheder, er det nok mest populære anvendelsesområde lige nu Big Data.
  2.  Scala bruger det samme køretidsmiljø som Java, kaldet Java Virtual Machine. På grund af dette er det fuldstændig interoperabelt med Java. Det er en finere måde at sige, at du kan bruge Scala-biblioteker til Java-programmer og Java-biblioteker til Scala-programmer. Dette giver Scala-udviklere en enorm fordel i forhold til andre udviklere, fordi de kan få adgang til det utroligt store og forskelligartede Java-økosystem.
  3.  Den eneste ting, der kan afskrække udviklere fra Scala, er, at det har en mere kompliceret syntaks i sprog som Java eller C#. Som følge heraf kan indlæringskurven være særlig stejl, hvilket betyder, at det kan være svært at finde en kvalificeret Scala-udvikler.

(I marts 2015 udtalte Raffi Krikorian, tidligere vicepræsident for Platform Engineering-gruppen hos Twitter, at han ikke ville have valgt Scala i 2011 på grund af indlæringskurven. Samme måned udtalte LinkedIn SVP Kevin Scott deres beslutning om at "minimere afhængigheden af Scala". I november 2011 gik Yammer væk fra Scala af årsager, der bl.a. omfattede indlæringskurven for nye teammedlemmer og inkompatibilitet fra den ene version af Scala-compileren til den næste) Kilde: Wikipedia

Når du søger efter Scala-udviklere, skal du forstå, at du leder efter en elite, der har været villig til at overvinde de barrierer, som sproget udgør for adgang til Scala.

3. Hvordan man kontrollerer Scala-færdigheder i screeningsfasen

3.1. Teknisk screening af Scala-færdigheder på grundlag af kandidatens cv

Før du foretager en bredere teknisk screening, er det værd at undersøge dine udviklingskandidaters interesse for funktionel programmering. Det vil sige, hvor interesserede de er i at lære nye sprog samt funktionelle sprog som Haskell, F sharp og OCam.

Scala-glossar for tekniske rekrutteringsfolk

Scala-rammer og -biblioteker Backend: Akka, Finagle

Store data: Spark, Scalding

Web: Play, Lift, Scalatra

Utils: Scalaz, Cats

Værktøjer til test af Scala ScalaTest, Specs2
Scala-værktøjer til opbygning af Scala sbt (Simple Build Tool)

Forholdet mellem de respektive versioner af Scala-teknologi:

Der anvendes hovedsageligt version 2.12, mens en mindre gruppe udviklere anvender version 2.11. Version 3.0 er planlagt til at blive udgivet i 2020. Disse større Scala-versioner er ikke binært kompatible - du skal kompilere alle biblioteker på ny, men mindre versioner (2.11.1, 2.11.2 osv.) er det; alle versioner er kildekodekompatible.

Betydningen af et Scala-certifikat til vurdering af en Scala-udviklers færdigheder

Der er mange kurser til rådighed. De mest populære tilbydes af Lightbend, som også udsteder certifikater. Men mange mennesker tager Coursera Scala-sporet, som er udviklet af Scala Center.

Tjek også disse kurser:

Selv om certifikater kan vise en vis egnethed, er der mange flere faktorer, der afgør, om en kandidat vil være den rette Scala-udvikler for dig.

3.2. Teknisk screening af Scala-færdigheder under et telefon-/videointerview

Efter en screening af CV'et er det næste skridt i ansættelsesprocessen normalt et telefon- eller videointerview med en kandidat. Den største fordel ved denne del af processen er, at man kan spørge adfærdsmæssige spørgsmål for at se, hvordan din kandidat ville reagere i visse situationer i det virkelige liv. Ofte er dette den vigtigste faktor, der afgør, om en kandidat bliver inviteret til en teknisk samtale på stedet, så det er vigtigt på dette tidspunkt at stille de rigtige tekniske spørgsmål.

Disse spørgsmål kan naturligvis variere afhængigt af de typer af færdigheder, som du rekrutterer efter. Når det er sagt, bør spørgsmålene her være nyttige til at besætte enhver stilling som Scala-udvikler.

Q1: Hvad er mønstermatchning?

Hvorfor du skal spørge om dette: Det er vigtigt at vide, fordi Scala har en indbygget generel mekanisme til mønstermatchning. Denne mekanisme giver dig mulighed for at matche enhver form for data med en første match-politik.

Spørgsmål 2: Hvad er case classes?

Hvorfor du skal spørge om dette: Case-klasser er unikke for Scala. De er faktisk bare almindelige klasser, som har fået tilføjet et par ekstra betingelser. De er som standard uforanderlige, de kan dekomponeres ved hjælp af mønstermatchning, sammenlignes ved strukturel lighed i stedet for ved reference og er kortfattede at instantiere og operere på.

Q3: Hvilke objektorienterede mønstre er implementeret i Scala?

Hvorfor du bør spørge om dette: Der er tre primære objektorienterede mønstre, som en Scala-udvikler bør kende. Med Singleton giver Scala direkte realisering af Singleton-mønstret i sproget. Værdiobjektmønstre er mulige ved at bruge Tuples, typer eller case-klasser. Endelig er der i Scala et lazy nøgleord, som tilbyder doven initialisering

Spm. 4: Hvad er et træk, og er der noget tilsvarende i Java?

Hvorfor du skal spørge om dette: Traits svarer til grænseflader i Java og er delvist implementeret.

Ud over de specifikke tekniske spørgsmål er der en række adfærdsspørgsmål, som vil være nyttige til at afgøre, hvordan din kandidat vil opføre sig i visse situationer.

Q5: Hvilke teknologier har du haft kommerciel erfaring med inden for de seneste 2 år? Hvad var dit ansvarsområde? Hvad var din største præstation?

Hvorfor du skal spørge om dette: Ikke alle programmeringskompetencer er lige gode. Udviklere har ofte en bred vifte af interesser og har prøvet en række forskellige teknologier, men det er vigtigt at finde ud af, hvilke teknologier de har et funktionelt kendskab til, og hvilke de blot har prøvet. Dette spørgsmål vil også være med til at vise, hvordan de har brugt teknologien til kommercielle formål.

Q6: Hvilke Java open source-biblioteker anser du for at være værdifulde og hvorfor?

Hvorfor du skal spørge om dette: Som nævnt tidligere er Scala interoperabel med Java. Da Java har mange flere biblioteker at trække på, vil effektiviteten af din Scylla-motor i år afhænge af, hvor mange af disse biblioteker de er fortrolige med. Dette spørgsmål vil give dig indsigt i, hvilke biblioteker uden for Scala din kandidat er bekendt med, og hvordan de har brugt det tidligere.

Q7: Jeg har bemærket, at du har anført ramme X på dit CV. Hvad er din mening om det? Er det et godt valg?

Hvorfor du skal spørge om dette: En udviklers reelle værdi ligger ikke blot i deres viden om sproget, men i deres evne til at udføre et projekt effektivt. De bedste kender en række værktøjer og ressourcer, som gør det muligt for dem at mangedoble omfanget af det, de er i stand til at udføre, og dette spørgsmål vil gå til kernen af, hvor godt udvikleren har det med at bruge disse eksterne ressourcer til at styrke deres softwareudvikling.

3.3. Teknisk screening af Scala-færdigheder med en online kodningstest

Telefonscreening kan give dig en masse oplysninger, og det samme gælder en grundig gennemgang af kandidatens CV, men i sidste ende skal du kunne afgøre, hvilke kodningsevner din kandidat har. Når alt kommer til alt, er der ingen af de screeningsmetoder, der er nævnt indtil nu, der rent faktisk kan fortælle dig, om din kandidat kan kode eller ej. Til det formål har du brug for en kodningstest.

Der findes i øjeblikket en række forskellige måder at udføre kodningstest på. De spænder fra whiteboard-interviews til algoritmiske testplatforme. Desværre giver de fleste af disse metoder dig ikke de oplysninger, du har brug for til at træffe en informeret beslutning. Datastrukturer og algoritmer er de grundlæggende byggesten i software, men samtidig har de kun lidt at gøre med en softwareudviklers daglige arbejde. Det ville svare til at bede en gravemaskinefører om at grave et hul med en skovl. Teknisk set tester du, hvor godt han kan flytte jord, men det, du virkelig vil vide, er, hvor godt han kan bruge de værktøjer, han har til rådighed, til effektivt at grave et kæmpehul inden for en stram tidsfrist.

På samme måde ønsker du ikke at spilde tid på at teste grundlæggende færdigheder i din rekrutteringsproces. I stedet ønsker du at se, hvordan en udvikler bruger alle de værktøjer og ressourcer, der er til rådighed for ham/hende, til at levere effektive løsninger til tiden. Den bedste måde at gøre dette på er nok med en arbejdsprøveprøve. Vi har diskuteret andetsteds på denne blog, hvordan man laver en arbejdsprøve test men her er de vigtigste punkter, du bør tage hensyn til, når du giver en arbejdsprøve til en Scala-udvikler.

  • Du bør ikke kun teste sprogfærdigheder, men også viden om de frameworks og biblioteker, som din virksomhed bruger
  • I stedet for at satse på multiple choice-spørgsmål skal du i stedet fokusere på programmeringsopgaverne
  • Når det er muligt, skal du så vidt muligt bruge en rigtig opgave med din egen kodebase, da det vil give kandidaten en smagsprøve på den slags arbejde, han/hun skal udføre, når han/hun begynder at arbejde for dig.
  • Behandl testen som en almindelig arbejdsdag. Det betyder, at kandidaten skal have adgang til alle de biblioteker, frameworks og generelle ressourcer, som de ville bruge på en normal dag. Du tester ikke deres evne til at lære fakta udenad. I stedet vil du vide, om de kan skabe en fantastisk løsning

Den største fordel ved denne type platform er, at testene leveres automatisk, så kandidaten kan tage testen senere fra et hvilket som helst sted i verden. Ikke nok med det, platformen evaluerer automatisk kodekvaliteten samt løsningens styrke uden input fra teknisk personale i din ende. Det er en effektiv måde at få et effektivt billede af, hvor godt din kandidat kan udføre jobbet, og det er utroligt praktisk både for dit personale og for kandidaten. Det betyder, at færre kandidater falder ud af din pipeline, og at færre timer går til spilde, når dine dyre udviklere arbejder med rekruttering.

Forfatter - Adam Warski

foto af Adam Warski forfatter af en artikel om Scala-udvikleren Adam er grundlægger af og teknisk direktør for SoftwareMill, en end-to-end-udvikler af brugerdefineret software ved hjælp af Scala, Akka, Java og andre sprog og interessante teknologier. Adam er en hyppig blogger, taler og open source-bidragyder, og du kan følge med ham på SoftwareMill Blog. SoftwareMill, der er koncentreret i Polen, bygger innovative applikationer og redder store projekter, mens de arbejder tæt sammen med deres kunder.

4. DevSkiller klar til brug online vurdering af Scala-kodning

DevSkiller giver dig mulighed for at bruge din egen kodebase til at teste udviklere, men det er ikke alle virksomheder, der har tid eller ressourcer til at opbygge deres egen arbejdsprøvetest. For disse virksomheder er der DevSkillers færdiglavede Scala-tests. I stedet for at beskæftige sig med abstrakte begreber tester de alle dine kandidater ved at give dem en opgave fra den virkelige verden, den slags opgaver, som de ville møde på deres første arbejdsdag.

Akka
SENIOR
Testede færdigheder
Varighed
102 minutter max.
Evaluering
Automatisk
Testoversigt

Spørgsmål efter valg

vurdering af viden om Scala, Funktionel programmering

Programmeringsopgave - Niveau: svær

Scala | Akka Streams | IoT Data Streaming - Definer en tidsbaseret aggregator for en strøm af data fra IoT-sensorer.

Scala
JUNIOR
Testede færdigheder
Varighed
66 minutter max.
Evaluering
Automatisk
Testoversigt

Spørgsmål efter valg

vurdering af viden om Scala

Programmeringsopgave - Niveau:

Scala | Spark | ML Logs Transformer - Færdiggør implementeringen af loggenes transformationspipeline.

Akka
MIDDLE
Testede færdigheder
Varighed
76 minutter max.
Evaluering
Automatisk
Testoversigt

Spørgsmål efter valg

vurdering af viden om Scala, Akka, Scala-Actors

Programmeringsopgave - Niveau: Medium

Scala | Akka | TCP Stream Messages - Implementer klienthåndtering for TCP stream-meddelelser, behandler dem og sender resultatet tilbage til afsenderen og databaseSaverActor.

Billedkilde: godatafy

Del indlæg

Få mere at vide om ansættelse af teknologiske medarbejdere

Tilmeld dig vores Learning Hub for at få nyttig viden direkte i din indbakke.

Kontroller og udvikl kodningsevner uden problemer.

Se DevSkiller-produkterne i aktion.

Sikkerhedscertificeringer og overholdelse. Vi sørger for, at dine data er sikre og beskyttede.

DevSkiller-logo TalentBoost-logo TalentScore-logo