Competenze di sviluppatore Scala

Pubblicato: Ultimo aggiornamento:
Scala: domande di intervista per ingegneri del software

Può essere incredibilmente difficile trovare il giusto sviluppatore Scala. Bisogna cercare tra montagne di curriculum inviati da candidati e reclutatori per trovare quello giusto. Ma alla fine è difficile stabilire quali di questi potenziali candidati siano in grado di svolgere il lavoro e quali invece non siano adatti alla vostra organizzazione. Per rendere il vostro lavoro un po' più semplice, abbiamo scritto questo articolo per spiegarvi esattamente cosa dovete fare per trovare il giusto sviluppatore Scala.

1. Cosa bisogna sapere su Scala per assumere sviluppatori Scala

Scala (/ˈskɑːlɑː/ skah-lah) è un linguaggio di programmazione general-purpose che supporta la programmazione funzionale e un forte sistema di tipi statici La progettazione di Scala è iniziata nel 2001 presso l'École Polytechnique Fédérale de Lausanne (EPFL) da parte di Martin Odersky. Il progetto fa seguito al lavoro su Funnel, un linguaggio di programmazione che combina idee di programmazione funzionale e reti di Petri. In precedenza Odersky ha lavorato a Generic Java e a javac, il compilatore Java di Sun.

Scala viene utilizzato principalmente per lo sviluppo di backend in applicazioni altamente concorrenti.

I principali vantaggi di Scala:

  • Gli oggetti sono immutabili "per impostazione predefinita" (ad esempio, tutte le collezioni).
    Rende il linguaggio molto meno soggetto a errori, soprattutto in relazione ai thread.
  • Un sistema di tipizzazione avanzato
    Un maggior numero di tipi significa che Scala può eseguire più tipi di operazioni rispetto ai linguaggi con sistemi di tipi più semplici, come Java.
  • La programmazione funzionale, orientata agli oggetti e imperativa sono tutte possibili.
    Compiti diversi richiedono stili di programmazione diversi. Mentre altri linguaggi funzionano solo con uno o due stili di programmazione, Scala funziona con tutti e tre. Ciò significa che uno sviluppatore che lavora in ambiente Scala può eseguire più tipi di attività senza dover passare a un altro ambiente di programmazione.

2. Che cosa è importante che i selezionatori IT sappiano di Scala?

Soprattutto, ci sono tre cose importantissime che ogni selezionatore tecnico dovrebbe sapere quando cerca di occupare una posizione di sviluppatore Scala.

  1. Attualmente, Scala è il più popolare linguaggio di programmazione funzionale. Sebbene abbia una serie di applicazioni diverse, probabilmente l'uso più diffuso è quello dei Big Data.
  2.  Scala utilizza lo stesso ambiente di runtime di Java, chiamato Java virtual machine. Per questo motivo, è completamente interoperabile con Java. Questo è un modo elegante per dire che è possibile utilizzare librerie Scala per applicazioni Java e librerie Java per applicazioni Scala. In questo modo, gli sviluppatori Scala hanno un enorme vantaggio rispetto agli altri sviluppatori, perché possono accedere all'ecosistema Java, incredibilmente vasto e diversificato.
  3.  L'unica cosa che può scoraggiare gli sviluppatori è che Scala ha una sintassi più complicata rispetto a linguaggi come Java o C#. Di conseguenza, la curva di apprendimento può essere particolarmente ripida e può essere difficile trovare uno sviluppatore Scala qualificato.

(Nel marzo 2015, l'ex vicepresidente del gruppo Platform Engineering di Twitter Raffi Krikorian ha dichiarato che nel 2011 non avrebbe scelto Scala a causa della sua curva di apprendimento. Lo stesso mese, il vicepresidente di LinkedIn Kevin Scott ha dichiarato di aver deciso di "ridurre al minimo la dipendenza da Scala". Nel novembre 2011, Yammer ha abbandonato Scala per motivi che includevano la curva di apprendimento per i nuovi membri del team e l'incompatibilità tra una versione e l'altra del compilatore Scala: Wikipedia

Quando cercate sviluppatori Scala, dovete capire che state cercando un'élite che è stata disposta a superare le barriere all'ingresso che il linguaggio pone.

3. Come verificare le competenze in Scala nella fase di screening

3.1. Screening tecnico delle competenze in Scala sulla base del curriculum del candidato

Prima di fare qualsiasi tipo di screening tecnico più ampio, vale la pena di verificare l'interesse dei candidati allo sviluppo per la programmazione funzionale. Ciò significa che sono interessati a imparare nuovi linguaggi e linguaggi funzionali come Haskell, F sharp e OCam.

Glossario Scala per i reclutatori di tecnologia

Framework e librerie Scala Backend: Akka, Finagle

Grandi dati: Spark, Scalding

Web: Gioca, Solleva, Scalatra

Utilità: Scalaz, Gatti

Strumenti di test Scala ScalaTest, Specs2
Strumenti di compilazione Scala sbt (Simple Build Tool)

Relazioni tra le rispettive versioni della tecnologia Scala:

La maggior parte degli sviluppatori utilizza la versione 2.12, mentre un gruppo più ristretto di sviluppatori utilizza la versione 2.11. Il rilascio della versione 3.0 è previsto per il 2020. Queste versioni principali di Scala non sono compatibili con i binari - è necessario ricompilare tutte le librerie - ma lo sono le versioni minori (2.11.1, 2.11.2 ecc.); tutte le versioni sono compatibili con i sorgenti.

Il significato di un certificato Scala per valutare le competenze di uno sviluppatore Scala

Ci sono molti corsi disponibili. I più popolari sono offerti da Lightbend, che rilascia anche certificati. Ma molte persone stanno seguendo il percorso Scala di Coursera, sviluppato da Centro Scala.

Date un'occhiata anche a questi corsi:

Anche se i certificati possono dimostrare una certa attitudine, ci sono molti altri fattori che determinano se un candidato sarà lo sviluppatore Scala giusto per voi.

3.2. Screening tecnico delle competenze in Scala durante un'intervista telefonica/video

Di solito, dopo lo screening del curriculum, la fase successiva del processo di assunzione consiste nel sostenere un colloquio telefonico o video con il candidato. Il vantaggio principale di questa parte del processo è la possibilità di chiedere domande comportamentali per vedere come il candidato reagirebbe in determinate situazioni reali. Spesso è questo il fattore principale che decide se un candidato sarà invitato in loco per un colloquio tecnico individuale, quindi è importante in questa fase porre le giuste domande tecniche.

Naturalmente, queste domande possono variare a seconda del tipo di competenze ricercate. Tuttavia, le domande qui riportate dovrebbero essere utili per coprire qualsiasi posizione di sviluppatore Scala.

D1: Che cos'è la corrispondenza dei modelli?

Perché dovreste chiederlo: È importante saperlo perché Scala ha un meccanismo di pattern-matching generale incorporato. Questo meccanismo consente di abbinare qualsiasi tipo di dato con una politica di prima corrispondenza.

D2: Cosa sono le classi di casi?

Perché dovreste chiederlo: Le classi di casi sono uniche in Scala. In realtà sono solo classi normali a cui sono state aggiunte alcune condizioni. Sono immutabili per impostazione predefinita, scomponibili attraverso il pattern-matching, confrontate per uguaglianza strutturale invece che per riferimento, e succinte da istanziare e su cui operare.

D3: Quali modelli orientati agli oggetti sono implementati in Scala?

Perché dovreste chiederlo: Esistono tre principali modelli orientati agli oggetti che uno sviluppatore Scala dovrebbe conoscere. Con Singleton, Scala fornisce una realizzazione diretta del pattern Singleton nel linguaggio. Gli schemi a oggetti di valore sono possibili utilizzando Tuple, tipi o classi di casi. Infine, in Scala esiste la parola chiave lazy, che offre un'inizializzazione pigra.

D4: Cos'è un tratto e c'è un equivalente in Java?

Perché dovreste chiederlo: I tratti sono simili alle interfacce in Java e sono parzialmente implementati.

Oltre alle domande tecniche specifiche, ci sono una serie di domande comportamentali che saranno utili per determinare come il candidato si comporterà in determinate situazioni.

D5: In quali tecnologie ha avuto esperienza commerciale negli ultimi 2 anni? Quali erano le sue responsabilità? Qual è stato il suo più grande risultato?

Perché dovreste chiederlo: Non tutte le competenze di programmazione sono uguali. Gli sviluppatori hanno spesso una grande varietà di interessi e si sono cimentati in diverse tecnologie, ma è importante accertare quali siano quelle di cui hanno una conoscenza funzionale e quelle in cui si sono semplicemente dilettati. Questa domanda aiuterà anche a dimostrare come hanno utilizzato la tecnologia per un terreno commerciale.

D6: Quali librerie open source di Java considera valide e perché?

Perché dovreste chiederlo: Come già detto, Scala è interoperabile con Java. Poiché Java ha molte più librerie a cui attingere, l'efficacia dell'anno del motore di Scilla dipenderà dalla familiarità con molte di queste librerie. Questa domanda vi darà la possibilità di capire con quali librerie, al di fuori di Scala, il candidato ha familiarità e come le ha utilizzate in passato.

D7: Ho notato che ha inserito il quadro X nel suo CV. Qual è la sua opinione in merito? È una buona scelta?

Perché dovreste chiederlo: Il vero valore di uno sviluppatore non consiste semplicemente nella sua conoscenza del linguaggio, ma nella sua capacità di eseguire un progetto in modo efficiente. I migliori hanno familiarità con una serie di strumenti e risorse che moltiplicano la portata di ciò che sono in grado di realizzare. questa domanda andrà al cuore di quanto lo sviluppatore sia a suo agio nell'utilizzare queste risorse esterne per potenziare lo sviluppo del software.

3.3. Screening tecnico delle competenze in Scala con un test di codifica online

Gli screening telefonici possono fornire molte informazioni, così come una scansione approfondita del curriculum del candidato, ma alla fine della giornata dovete essere in grado di determinare le competenze di codifica del vostro candidato. Dopo tutto, nessuno dei metodi di screening menzionati finora è in grado di dirvi se il vostro candidato sa codificare o meno. Per questo è necessario un test di codifica.

Attualmente esistono diversi modi per effettuare test di codifica. Si va dalle interviste alla lavagna alle piattaforme di test algoritmici. Purtroppo, la maggior parte di questi metodi non fornisce le informazioni necessarie per prendere una decisione informata. Le strutture dati e gli algoritmi sono gli elementi di base del software, ma allo stesso tempo hanno poco a che fare con il lavoro quotidiano di uno sviluppatore di software. Sarebbe come chiedere a un terzista di scavare una buca con una pala. Tecnicamente si sta verificando la capacità di spostare la terra, ma ciò che si vuole sapere è quanto sia in grado di utilizzare gli strumenti a sua disposizione per scavare in modo efficiente una buca gigante entro una scadenza ravvicinata.

Allo stesso modo, non volete perdere tempo nel processo di assunzione per verificare le competenze di base. Al contrario, volete vedere come uno sviluppatore utilizza tutti gli strumenti e le risorse a sua disposizione per fornire soluzioni efficienti nei tempi previsti. Probabilmente il modo migliore per farlo è un test su campioni di lavoro. Abbiamo discusso in altre parti di questo blog come fare un test di test del campione di lavoro ma ecco i punti principali che dovreste prendere in considerazione quando date un campione di lavoro di prova a uno sviluppatore Scala.

  • Non bisogna limitarsi a verificare le competenze linguistiche, ma anche la conoscenza dei framework e delle librerie utilizzate dall'azienda.
  • Invece di affidarsi a domande a scelta multipla, concentratevi sui compiti di programmazione.
  • Quando possibile, utilizzate un compito reale utilizzando la vostra base di codice, in quanto darà al candidato un assaggio del tipo di lavoro che svolgerà quando inizierà a lavorare per voi.
  • Trattate il test come una normale giornata di lavoro. Ciò significa dare al candidato l'accesso alle librerie, ai framework e alle risorse in generale che utilizzerebbe in una normale giornata. Non state testando la loro capacità di memorizzare fatti. Si vuole invece sapere se è in grado di creare una soluzione straordinaria.

Il vantaggio principale di questo tipo di piattaforma è che i test vengono consegnati automaticamente, in modo che il candidato possa eseguire il test in un secondo momento da qualsiasi parte del mondo. Inoltre, la piattaforma valuta automaticamente la qualità del codice e la potenza della soluzione senza l'intervento del personale tecnico. Si tratta di un modo efficace per capire quanto il candidato sia in grado di svolgere il lavoro ed è incredibilmente comodo sia per il personale che per il candidato. Ciò significa che meno candidati escono dalla vostra pipeline e meno ore vengono sprecate dai vostri costosi sviluppatori per lavorare al reclutamento.

Autore - Adam Warski

foto di Adam Warski autore di un articolo sullo sviluppatore Scala Adam è il fondatore e CTO di SoftwareMillAdam è uno sviluppatore end-to-end di software personalizzato che utilizza Scala, Akka, Java e altri linguaggi e tecnologie interessanti. Blogger, relatore e collaboratore open source, Adam è presente sul Blog di SoftwareMill. Concentrata in Polonia, SoftwareMill costruisce applicazioni innovative e recupera grandi progetti, il tutto lavorando in stretta collaborazione con i propri clienti.

4. DevSkiller: valutazione online della codifica Scala pronta per l'uso

Sebbene DevSkiller offra la possibilità di utilizzare la propria base di codice per testare gli sviluppatori, non tutte le aziende hanno il tempo o le risorse per costruire il proprio campione di lavoro. Per queste aziende, ci sono i test Scala preconfezionati di DevSkiller. Anziché occuparsi di concetti astratti, tutti questi test mettono alla prova i vostri candidati assegnando loro un compito reale, il tipo di compiti che incontrerebbero nel loro primo giorno di lavoro.

Akka
SENIOR
Competenze testate
Durata
102 minuti al massimo.
Valutazione
Automatico
Panoramica del test

Domande a scelta

valutare la conoscenza di Scala, Programmazione funzionale

Attività di programmazione - Livello: Difficile

Scala | Akka Streams | IoT Data Streaming - Definire un aggregatore basato sul tempo per un flusso di dati provenienti da sensori IoT.

Scala
JUNIOR
Competenze testate
Durata
66 minuti al massimo.
Valutazione
Automatico
Panoramica del test

Domande a scelta

valutare la conoscenza di Scala

Attività di programmazione - Livello: Facile

Scala | Spark | ML Logs Transformer - Completare l'implementazione della pipeline di trasformazione dei log.

Scala
JUNIOR
Competenze testate
Durata
96 minuti al massimo.
Valutazione
Automatico
Panoramica del test

Domande a scelta

valutare la conoscenza di Scala

Attività di programmazione - Livello: Facile

Scala | ScalaCalc - libreria matematica - Estende le funzionalità del modulo di geometria implementando operazioni sui poligoni.

Scala
JUNIOR
Competenze testate
Durata
88 minuti al massimo.
Valutazione
Automatico
Panoramica del test

Domande a scelta

valutare la conoscenza di Scala, Akka, Scala-Attori

Attività di programmazione - Livello: Medio

Scala | Headers parser | Preparare il semplice parser Scala.

Akka
MEDIO
Competenze testate
Durata
76 minuti al massimo.
Valutazione
Automatico
Panoramica del test

Domande a scelta

valutare la conoscenza di Scala, Akka, Scala-Attori

Attività di programmazione - Livello: Medio

Scala | Akka | TCP Stream Messages - Implementa un gestore client per i messaggi TCP stream, li elabora e invia i risultati al mittente e al databaseSaverActor.

Fonte dell'immagine: godatafy

Condividi post

Per saperne di più sulle assunzioni nel settore tecnologico

Iscrivetevi al nostro Learning Hub per ricevere utili approfondimenti direttamente nella vostra casella di posta elettronica.

Verifica e sviluppo delle competenze di codifica senza soluzione di continuità.

Guardate i prodotti DevSkiller in azione.

Certificazioni di sicurezza e conformità. Ci assicuriamo che i vostri dati siano sicuri e protetti.

Logo DevSkiller Logo TalentBoost Logo TalentScore