Scala-ontwikkelaar vaardigheden

Gepubliceerd: Laatst bijgewerkt:
Scala: software ingenieur interview vragen

Het kan ongelooflijk moeilijk zijn om de juiste Scala-ontwikkelaar te vinden. U moet door bergen cv's zoeken die door kandidaten en recruiters zijn verzonden om de juiste te vinden. Maar aan het eind van de dag is het moeilijk om te zeggen welke van deze potentiële kandidaten in staat zullen zijn om de klus te klaren en welke gewoon niet geschikt zijn voor uw organisatie. Om uw werk een beetje gemakkelijker te maken, hebben we dit artikel geschreven om precies uit te leggen wat u moet doen om de juiste Scala-ontwikkelaar te vinden.

1. Wat u moet weten over Scala om Scala-ontwikkelaars in te huren

Scala (/ˈskɑːlɑː/ skah-lah) is een programmeertaal voor algemene doeleinden die ondersteuning biedt voor functioneel programmeren en een sterk statisch typesysteem Het ontwerp van Scala is in 2001 begonnen aan de École Polytechnique Fédérale de Lausanne (EPFL) door Martin Odersky. Het was een vervolg op het werk aan Funnel, een programmeertaal waarin ideeën van functioneel programmeren en Petri-netten werden gecombineerd. Odersky werkte voorheen aan Generic Java, en javac, Sun's Java compiler.

Scala wordt voornamelijk gebruikt in backend-ontwikkeling in zeer gelijktijdige toepassingen.

Belangrijkste voordelen van Scala:

  • Objecten zijn "standaard" onveranderlijk (b.v. alle verzamelingen)
    Het maakt de taal veel minder foutgevoelig, vooral met betrekking tot threads.
  • Een geavanceerd typesysteem
    Meer types betekent dat Scala meer soorten taken kan uitvoeren dan talen met meer basistypesystemen, zoals Java.
  • Functioneel, object-georiënteerd, en imperatief programmeren zijn allemaal mogelijk
    Verschillende taken vereisen verschillende stijlen van programmeren. Terwijl andere talen slechts met één of twee programmeerstijlen werken, werkt Scala met alle drie. Dit betekent dat een ontwikkelaar die in de Scala-omgeving werkt, meer soorten taken kan uitvoeren zonder te hoeven overschakelen naar een andere programmeeromgeving.

2. Wat is belangrijk voor IT Recruiter om te weten over Scala?

Boven alles zijn er drie superbelangrijke dingen die elke technische recruiter zou moeten weten wanneer ze proberen een vacature voor Scala-ontwikkelaar in te vullen.

  1. Momenteel is Scala de meest populaire functionele programmeertaal. Hoewel het een aantal verschillende toepassingen heeft, wordt het op dit moment waarschijnlijk het meest gebruikt in Big Data.
  2.  Scala gebruikt dezelfde runtime-omgeving als Java, de Java virtual machine. Hierdoor is het volledig interoperabel met Java. Dat is een mooie manier om te zeggen dat u Scala-bibliotheken kunt gebruiken voor Java-toepassingen en Java-bibliotheken voor Scala-toepassingen. Dit geeft Scala-ontwikkelaars een enorm voordeel ten opzichte van andere ontwikkelaars omdat ze toegang hebben tot het ongelooflijk grote en diverse Java-ecosysteem.
  3.  Het enige dat ontwikkelaars kan afschrikken van Scala is dat het een ingewikkelder syntaxis heeft dan talen als Java of C#. Als gevolg daarvan kan de leercurve bijzonder steil zijn, wat betekent dat het moeilijk kan zijn om een gekwalificeerde Scala-ontwikkelaar te vinden.

(In maart 2015 verklaarde voormalig VP van de Platform Engineering groep bij Twitter Raffi Krikorian, dat hij in 2011 niet voor Scala zou hebben gekozen vanwege de leercurve. Dezelfde maand verklaarde LinkedIn SVP Kevin Scott hun beslissing om "de afhankelijkheid van Scala te minimaliseren." In november 2011 stapte Yammer van Scala af om redenen zoals de leercurve voor nieuwe teamleden en incompatibiliteit van de ene versie van de Scala-compiler naar de volgende) Bron: Wikipedia

Wanneer u op zoek bent naar Scala-ontwikkelaars, moet u begrijpen dat u op zoek bent naar een elite die bereid is geweest om de drempels te overwinnen die de taal opwerpt.

3. Hoe Scala-vaardigheden te verifiëren in de screeningfase

3.1. Technische screening van Scala-vaardigheden op basis van het cv van de kandidaat

Voordat je een bredere technische screening uitvoert, is het de moeite waard om na te gaan of de kandidaat geïnteresseerd is in functioneel programmeren. Dit betekent hoe geïnteresseerd ze zijn in het leren van nieuwe talen en functionele talen zoals Haskell, F sharp, en OCam.

Scala woordenlijst voor tech recruiter

Scala frameworks en bibliotheken Backend: Akka, Finagle

Big data: Spark, Scalding

Web: Play, Lift, Scalatra

Utils: Scalaz, Cats

Scala testgereedschappen ScalaTest, Specs2
Scala bouw gereedschappen sbt (eenvoudig bouwgereedschap)

Relaties tussen respectieve versies van Scala-technologie:

Meestal wordt versie 2.12 gebruikt met een kleiner contingent ontwikkelaars die versie 2.11 gebruiken. Versie 3.0 is gepland om te worden vrijgegeven in 2020. Deze grote Scala-versies zijn niet binair compatibel - u moet alle bibliotheken opnieuw compileren, maar de kleinere versies (2.11.1, 2.11.2 enz.) zijn dat wel; alle versies zijn broncompatibel.

De betekenis van een Scala-certificaat voor het beoordelen van de vaardigheden van een Scala-ontwikkelaar

Er zijn heel wat cursussen beschikbaar. De meest populaire worden aangeboden door Lightbend, die ook certificaten uitgeeft. Maar veel mensen doen de Coursera Scala track, die is ontwikkeld door Scala Centrum.

Kijk ook eens naar deze cursussen:

Hoewel certificaten enige bekwaamheid kunnen aantonen, zijn er veel meer factoren die bepalen of een kandidaat de juiste Scala-ontwikkelaar voor u zal zijn.

3.2. Technische screening van Scala-vaardigheden tijdens een telefoon-/video-interview

Gewoonlijk is de volgende stap in het aanwervingsproces, na een cv-onderzoek, een telefonisch of video-interview met een kandidaat. Het belangrijkste voordeel van dit deel van het proces is de mogelijkheid om te vragen gedragsvragen om te zien hoe uw kandidaat zou reageren in bepaalde situaties in het echte leven. Vaak is dit de belangrijkste beslissing om een kandidaat ter plaatse uit te nodigen voor een één-op-één technisch interview, dus is het belangrijk om in dit stadium de juiste technische vragen te stellen.

Natuurlijk kunnen deze vragen variëren afhankelijk van de soorten vaardigheden waarvoor u werft. Dat gezegd hebbende, zouden de vragen hier nuttig moeten zijn voor het invullen van elke vacature voor Scala-ontwikkelaar.

V1: Wat is patroonherkenning?

Waarom moet je dit vragen: Het is belangrijk om dit te weten omdat Scala een ingebouwd algemeen patroon-matching mechanisme heeft. Dit mechanisme staat je toe om het even welk soort van gegevens te matchen met een eerste match beleid.

V2: Wat zijn case classes?

Waarom moet je dit vragen: Case klassen zijn uniek voor Scala. Het zijn eigenlijk gewoon normale klassen waar een paar extra voorwaarden aan zijn toegevoegd. Ze zijn standaard onveranderlijk, decomposable door patroon-matching, vergeleken door structurele gelijkheid in plaats van door verwijzing, en beknopt om te instantiëren en te bedienen.

V3: Welke object-georiënteerde patronen zijn geïmplementeerd in Scala?

Waarom moet je dit vragen: Er zijn drie belangrijke object-georiënteerde patronen die een Scala-ontwikkelaar zou moeten kennen. Met Singleton, biedt Scala directe realisatie van het Singleton patroon in de taal. Waarde object patronen zijn mogelijk door gebruik te maken van Tuples, types, of case classes. Tenslotte is er in Scala een lazy keyword dat luie initialisatie biedt

V4: Wat is een trait en is er een equivalent in Java?

Waarom moet je dit vragen: Traits zijn vergelijkbaar met interfaces in Java en gedeeltelijk geïmplementeerd.

Naast de specifieke technische vragen zijn er een aantal gedragsvragen die nuttig zullen zijn om te bepalen hoe uw kandidaat in bepaalde situaties zal handelen.

Q5: Met welke technologieën heeft u de afgelopen 2 jaar commerciële ervaring opgedaan? Wat waren uw verantwoordelijkheden? Wat was uw grootste prestatie?

Waarom moet je dit vragen: Niet alle programmeervaardigheden zijn gelijk. Ontwikkelaars hebben vaak een grote verscheidenheid aan interesses en hebben zich verdiept in een aantal verschillende technologieën, maar het is belangrijk om na te gaan welke zij functioneel kennen en welke zij gewoon hebben uitgedokterd. Deze vraag zal ook helpen aantonen hoe zij de technologie zullen hebben gebruikt voor commerciële grond.

Q6: Welke open source Java bibliotheken zijn volgens u waardevol en waarom?

Waarom moet je dit vragen: Zoals eerder vermeld is Scala interoperabel met Java. Aangezien Java veel meer bibliotheken heeft om uit te putten zal de doeltreffendheid van uw Scylla motor jaar afhangen van hoeveel van deze bibliotheken zij vertrouwd zijn. Deze vraag zal u inzicht geven in welke bibliotheken buiten Scala uw kandidaat vertrouwd is met en hoe ze die in het verleden hebben gebruikt.

V7: Ik heb gezien dat je kader X op je CV hebt staan. Wat is je mening daarover? Is het een goede keuze?

Waarom moet je dit vragen: De echte waarde van een ontwikkelaar is niet alleen hun kennis van de taal voor hun vermogen om een project efficiënt uit te voeren. De besten zijn vertrouwd met een aantal hulpmiddelen en hulpbronnen die de reikwijdte van wat zij kunnen bereiken vermenigvuldigen. deze vraag zal tot de kern doordringen van hoe comfortabel de ontwikkelaar zich voelt bij het gebruik van deze externe hulpbronnen om hun software-ontwikkeling super te maken.

3.3. Technische screening van Scala-vaardigheden met een online codeertest

Telefonische screenings kunnen u veel informatie geven, net als een grondige scan van het cv van een kandidaat, maar uiteindelijk moet u kunnen bepalen wat de codeervaardigheden van uw kandidaat zijn. Immers, geen van de tot nu toe genoemde screeningmethoden kan u vertellen of uw kandidaat kan coderen of niet. Daarvoor hebt u een codeertest nodig.

Er worden momenteel een aantal manieren aangeboden om coderingstests te doen. Ze variëren van whiteboard interviews tot algoritmische testplatforms. Helaas geven de meeste van deze methoden u niet de informatie die u nodig hebt om een weloverwogen beslissing te nemen. Datastructuren en algoritmen zijn de basisbouwstenen van software, maar tegelijkertijd hebben ze weinig te maken met het dagelijkse werk van een softwareontwikkelaar. Het zou hetzelfde zijn als aan een graafmachine vragen om een gat te graven met een schop. Technisch gezien test je hoe goed hij vuil kan verplaatsen, maar wat je echt wil weten is hoe goed hij de beschikbare tools kan gebruiken om efficiënt een gigantisch gat te graven binnen een strakke deadline.

Op dezelfde manier wilt u in uw wervingsproces geen tijd verspillen aan het testen van basisvaardigheden. In plaats daarvan wilt u zien hoe een ontwikkelaar alle beschikbare tools en middelen gebruikt om op tijd efficiënte oplossingen te leveren. De beste manier om dit te doen is waarschijnlijk met een werkvoorbeeldtest. We hebben elders op deze blog besproken hoe je een werkmonster test maar hier zijn de belangrijkste punten die u in overweging moet nemen wanneer u een werkvoorbeeldtest aan een Scala-ontwikkelaar geeft.

  • U moet niet alleen talenkennis testen, maar ook kennis van de frameworks en bibliotheken die uw bedrijf gebruikt
  • In plaats van te vertrouwen op meerkeuzevragen, concentreer je je in plaats daarvan op de programmeertaken
  • Gebruik waar mogelijk een echte taak met uw eigen codebase, zodat uw kandidaat een voorproefje krijgt van het soort werk dat hij zal moeten doen als hij voor u begint te werken
  • Behandel de test als een normale dag op het werk. Dit betekent dat je de kandidaat toegang geeft tot alle bibliotheken, frameworks en algemene bronnen die hij op een normale dag zou gebruiken. U test niet hun vermogen om feiten uit het hoofd te leren. In plaats daarvan wil je weten of ze een geweldige oplossing kunnen maken

Het grote voordeel van dit type platform is dat de tests automatisch worden afgeleverd zodat de kandidaat de test later van overal ter wereld kan afleggen. Niet alleen dat het platform automatisch de kwaliteit van de code en de kracht van de oplossing evalueert zonder enige inbreng van enig technisch personeel aan uw kant. Het is een efficiënte manier om een goed beeld te krijgen van hoe goed uw kandidaat het werk kan doen en het is ongelooflijk handig voor zowel uw personeel als voor de kandidaat. Dit betekent dat er minder kandidaten uit uw pijplijn vallen en dat er minder uren worden verspild aan het werven van uw dure ontwikkelaars.

Auteur - Adam Warski

foto van Adam Warski auteur van een artikel over de Scala ontwikkelaar Adam is de oprichter en CTO van SoftwareMillis een end-to-end ontwikkelaar van software op maat met behulp van Scala, Akka, Java en andere talen en interessante technologieën. Hij blogt regelmatig, treedt op als spreker en levert open source bijdragen. Je kunt Adam volgen op de SoftwareMill Blog. Geconcentreerd in Polen, SoftwareMill bouwt innovatieve applicaties en redt grote projecten, terwijl ze werken in nauwe samenwerking met hun klanten.

4. DevSkiller klaar voor gebruik online Scala codering beoordeling

Hoewel DevSkiller u de mogelijkheid biedt om uw eigen codebase te gebruiken voor het testen van ontwikkelaars, heeft niet elk bedrijf de tijd of de middelen om een eigen werkvoorbeeldtest te bouwen. Voor die bedrijven zijn er DevSkiller's kant-en-klare Scala-tests. In plaats van abstracte concepten te behandelen, testen ze allemaal uw kandidaten door hen een taak uit de echte wereld te geven, het soort taken dat ze zouden tegenkomen op hun eerste werkdag.

Akka
SENIOR
Geteste vaardigheden
Duur
102 maximaal minuten.
Evaluatie
Automatisch
Testoverzicht

Keuzevragen

beoordeling van kennis van Scala, Functioneel Programmeren

Programmeertaak - Niveau: Moeilijk

Scala | Akka Streams | IoT Data Streaming - Definieer een tijd-gebaseerde aggregator voor een stroom van gegevens van IoT sensoren.

Scala
JUNIOR
Geteste vaardigheden
Duur
66 maximaal minuten.
Evaluatie
Automatisch
Testoverzicht

Keuzevragen

beoordeling van kennis van Scala

Programmeer taak - Niveau: Gemakkelijk

Scala | Spark | ML Logs Transformer - Voltooi de implementatie van de logs transformatie pijplijn.

Scala
JUNIOR
Geteste vaardigheden
Duur
96 maximaal minuten.
Evaluatie
Automatisch
Testoverzicht

Keuzevragen

beoordeling van kennis van Scala

Programmeer taak - Niveau: Gemakkelijk

Scala | ScalaCalc - wiskunde bibliotheek - Breid de functionaliteit van de geometrie module uit door veelhoek operaties te implementeren.

Akka
MIDDEN
Geteste vaardigheden
Duur
76 maximaal minuten.
Evaluatie
Automatisch
Testoverzicht

Keuzevragen

beoordeling van kennis van Scala, Akka, Scala-Actoren

Programmeeropdracht - Niveau: Medium

Scala | Akka | TCP Stream Messages - Implementeer client handler voor TCP stream berichten, verwerk ze en stuur het resultaat terug naar de verzender en databaseSaverActor.

Beeldbron: godatafy

Post delen

Meer informatie over het inhuren van tech

Abonneer u op onze Learning Hub en ontvang nuttige inzichten rechtstreeks in uw inbox.

Verifieer en ontwikkel coderingsvaardigheden naadloos.

Zie DevSkiller producten in actie.

Beveiligingscertificeringen & naleving. Wij zorgen ervoor dat uw gegevens veilig en beveiligd zijn.

DevSkiller logo TalentBoost logo TalentScore logo