Compétences des développeurs de Scala

Publié : Dernière mise à jour :
Scala : questions d'entretien avec un ingénieur en logiciel

Il peut être incroyablement difficile de trouver le bon développeur Scala. Il faut chercher parmi les montagnes de CV envoyés par les candidats et les recruteurs pour trouver le bon. Mais au bout du compte, il est difficile de dire lesquels de ces candidats potentiels seront capables de faire le travail et lesquels ne conviennent tout simplement pas à votre organisation. Pour vous faciliter la tâche, nous avons écrit cet article pour vous expliquer exactement ce que vous devez faire pour trouver le bon développeur Scala.

1. Ce que vous devez savoir sur Scala pour engager des développeurs Scala

Scala (/ˈskɑːlɑː/ skah-lah) est un langage de programmation polyvalent qui offre un support pour la programmation fonctionnelle et un système de type statique fort. La conception de Scala a débuté en 2001 à l'École Polytechnique Fédérale de Lausanne (EPFL) par Martin Odersky. Il a fait suite aux travaux sur Funnel, un langage de programmation combinant des idées de programmation fonctionnelle et de réseaux de Pétri. Odersky a auparavant travaillé sur Generic Java, et javac, le compilateur Java de Sun.

Scala est principalement utilisé pour le développement de backend dans des applications hautement concurrentes.

Principaux avantages de Scala :

  • Les objets sont immuables "par défaut" (par exemple toutes les collections)
    Cela rend la langue beaucoup moins sujette aux erreurs, notamment en ce qui concerne les fils de discussion.
  • Un système de type avancé
    Plus de types signifie que Scala peut effectuer plus de types de tâches que les langages avec des systèmes de types plus basiques, comme Java.
  • Une programmation fonctionnelle, orientée objet et impérative est possible
    Différentes tâches nécessitent différents styles de programmation. Alors que d'autres langages ne fonctionnent qu'avec un ou deux styles de programmation, Scala fonctionne avec les trois. Cela signifie qu'un développeur travaillant dans l'environnement Scala peut effectuer plus de types de tâches sans avoir à passer à un environnement de programmation différent.

2. Qu'est-ce qu'il est important de savoir sur Scala pour le recruteur informatique ?

Par-dessus tout, il y a trois choses super importantes que tout recruteur technique devrait savoir lorsqu'il essaie de pourvoir un poste de développeur Scala.

  1. Actuellement, Scala est le plus populaire langage de programmation fonctionnel. Bien qu'il ait un certain nombre d'applications différentes, c'est probablement dans les Big Data qu'il est le plus utilisé en ce moment.
  2.  Scala utilise le même environnement d'exécution que Java, appelé machine virtuelle Java. De ce fait, il est totalement interopérable avec Java. C'est une façon sophistiquée de dire que vous pouvez utiliser les bibliothèques Scala pour les applications Java et les bibliothèques Java pour les applications Scala. Cela donne aux développeurs Scala un énorme avantage sur les autres développeurs car ils peuvent accéder à l'écosystème Java, incroyablement vaste et diversifié.
  3.  La seule chose qui peut décourager les développeurs de Scala est sa syntaxe plus compliquée dans des langages comme Java ou C#. Par conséquent, la courbe d'apprentissage peut être particulièrement raide, ce qui signifie qu'il peut être difficile de trouver un développeur Scala qualifié.

(En mars 2015, Raffi Krikorian, ancien vice-président du groupe d'ingénierie des plateformes sur Twitter, a déclaré qu'il n'aurait pas choisi Scala en 2011 en raison de sa courbe d'apprentissage. Le même mois, Kevin Scott, SVP de LinkedIn, a déclaré leur décision de "minimiser la dépendance à Scala". En novembre 2011, Yammer s'est éloigné de Scala pour des raisons qui comprenaient la courbe d'apprentissage pour les nouveaux membres de l'équipe et l'incompatibilité d'une version du compilateur Scala à l'autre) Source : Wikipedia

Lorsque vous recherchez des développeurs Scala, vous devez comprendre que vous allez chercher une élite qui a été prête à surmonter les obstacles à l'entrée que la langue pose.

3. Comment vérifier les compétences Scala lors de la phase de sélection

3.1. Sélection technique des compétences Scala sur la base du curriculum vitae du candidat

Avant de procéder à une sélection technique plus large, il est utile de vérifier l'intérêt de vos candidats au développement pour la programmation fonctionnelle. Cela signifie qu'ils sont intéressés par l'apprentissage de nouveaux langages ainsi que de langages fonctionnels comme Haskell, F sharp et OCam.

Glossaire Scala pour les recruteurs de techniciens

Cadres et bibliothèques Scala L'arrière : Akka, Finagle

De grosses données : Étincelle, échaudure

Web : Play, Lift, Scalatra

Utils : Scalaz, Chats

Outils de test Scala ScalaTest, Specs2
Outils de construction Scala sbt (Simple Build Tool)

Relations entre les versions respectives de la technologie Scala :

La version 2.12 est principalement utilisée avec un petit contingent de développeurs utilisant la version 2.11. La version 3.0 devrait être publiée en 2020. Ces versions majeures de Scala ne sont pas compatibles avec les binaires - vous devez recompiler toutes les bibliothèques, mais les versions mineures (2.11.1, 2.11.2 etc.) le sont ; toutes les versions sont compatibles avec les sources.

L'importance d'un certificat Scala pour évaluer les compétences d'un développeur Scala

De nombreux cours sont disponibles. Les plus populaires sont offerts par Lightbend qui délivre également des certificats. Mais beaucoup de gens suivent la piste de la Coursera Scala, qui est développée par Centre Scala.

Consultez également ces cours :

Bien que les certificats puissent montrer certaines aptitudes, il existe de nombreux autres facteurs qui déterminent si un candidat sera le bon développeur Scala pour vous.

3.2. Sélection technique des compétences Scala lors d'un entretien téléphonique ou vidéo

Habituellement, après la présélection d'un CV, l'étape suivante du processus de recrutement est un entretien téléphonique ou vidéo avec un candidat. Le principal avantage de cette partie du processus est de pouvoir demander questions comportementales pour voir comment votre candidat réagirait dans certaines situations de la vie réelle. C'est souvent le principal facteur qui détermine si un candidat sera invité sur place pour un entretien technique individuel ; il est donc important à ce stade de poser les bonnes questions techniques.

Bien entendu, ces questions peuvent varier en fonction des types de compétences pour lesquelles vous recrutez. Cela dit, les questions posées ici devraient être utiles pour pourvoir n'importe quel poste de développeur Scala.

Q1 : Qu'est-ce que la concordance de formes ?

Pourquoi vous devriez demander cela : Il est important de le savoir car Scala possède un mécanisme de correspondance générale intégré. Ce mécanisme vous permet de faire correspondre n'importe quel type de données avec une politique de première correspondance.

Q2 : Que sont les classes de cas ?

Pourquoi vous devriez demander cela : Les classes de cas sont uniques à Scala. Il s'agit en fait de classes normales auxquelles s'ajoutent quelques conditions supplémentaires. Elles sont immuables par défaut, décomposables grâce à la correspondance de modèles, comparées par égalité structurelle plutôt que par référence, et succinctes à instancier et à opérer.

Q3 : Quels sont les modèles orientés objet mis en œuvre dans Scala ?

Pourquoi vous devriez demander cela: Il existe trois principaux modèles orientés objet qu'un développeur Scala doit connaître. Avec Singleton, Scala fournit une réalisation directe du modèle Singleton dans le langage. Les modèles d'objets de valeur sont possibles en utilisant des Tuples, des types ou des classes de cas. Enfin, en Scala, il y a un mot-clé paresseux qui offre une initialisation paresseuse

Q4 : Qu'est-ce qu'un trait et existe-t-il un équivalent en Java ?

Pourquoi vous devriez demander cela : Les caractéristiques sont similaires aux interfaces en Java et partiellement mises en œuvre.

Outre les questions techniques spécifiques, il existe un certain nombre de questions comportementales qui vous aideront à déterminer comment votre candidat se comportera dans certaines situations.

Q5 : Quelles technologies avez-vous eu une expérience commerciale au cours des deux dernières années ? Quelles étaient vos responsabilités ? Quelle a été votre plus grande réussite ?

Pourquoi vous devriez demander cela : Toutes les compétences en matière de programmation ne sont pas créées égales. Les développeurs ont souvent des intérêts très variés et ont essayé un certain nombre de technologies différentes, mais il est important de vérifier quelles sont celles dont ils ont une connaissance pratique et fonctionnelle et celles qu'ils ont simplement essayées. Cette question permettra également de montrer comment ils auront utilisé la technologie pour des terrains commerciaux.

Q6 : Quelles sont les bibliothèques Java open source que vous considérez comme précieuses et pourquoi ?

Pourquoi vous devriez demander cela : Mentionné précédemment, Scala est interopérable avec Java. Comme Java dispose de beaucoup plus de bibliothèques pour tirer profit de l'efficacité de votre moteur Scylla, l'année dépendra du nombre de ces bibliothèques qu'ils connaissent. Cette question vous donnera un aperçu des bibliothèques en dehors de Scala que votre candidat connaît et comment il les a utilisées dans le passé.

Q7 : J'ai remarqué que vous avez inscrit le cadre X sur votre CV. Quelle est votre opinion à ce sujet ? Est-ce un bon choix ?

Pourquoi vous devriez demander cela : La véritable valeur d'un développeur n'est pas simplement sa connaissance du langage pour sa capacité à exécuter un projet efficacement. Les meilleurs connaissent un certain nombre d'outils et de ressources qui multiplient l'étendue de ce qu'ils sont capables de réaliser. Cette question va aller au cœur de la question de savoir si le développeur est à l'aise pour utiliser ces ressources extérieures pour surcharger son développement logiciel.

3.3. Examen technique des compétences Scala avec un test de codage en ligne

Les écrans de téléphone peuvent vous donner beaucoup d'informations, tout comme un scan approfondi du CV d'un candidat, mais en fin de compte, vous devez être en mesure de déterminer quelles sont les compétences de codage de votre candidat. Après tout, aucune des méthodes de filtrage mentionnées jusqu'à présent ne vous permet de savoir si votre candidat est capable de coder ou non. Pour cela, vous avez besoin d'un test de codage.

Il existe actuellement un certain nombre de moyens proposés pour effectuer des tests de codage. Elles vont des entretiens sur tableau blanc aux plateformes de tests algorithmiques. Malheureusement, la plupart de ces méthodes ne vous donnent pas les informations dont vous avez besoin pour prendre une décision éclairée. Les structures de données et les algorithmes sont les éléments de base des logiciels mais, en même temps, ils n'ont pas grand-chose à voir avec le travail quotidien d'un développeur de logiciels. Ce serait comme demander à un opérateur de pelleteuse de creuser un trou avec une pelle. Techniquement, vous testez leur capacité à déplacer la terre, mais ce que vous voulez vraiment savoir, c'est dans quelle mesure ils peuvent utiliser les outils à leur disposition pour creuser efficacement un trou géant dans un délai serré.

De la même manière, vous ne voulez pas perdre de temps dans votre processus de recrutement à tester des compétences de base. Vous voulez plutôt voir comment un développeur utilise tous les outils et ressources à sa disposition pour fournir des solutions efficaces dans les délais. Le meilleur moyen d'y parvenir est probablement de procéder à un test d'échantillons de travail. Nous avons discuté ailleurs sur ce blog de la manière de faire un test de l'échantillon de travail mais voici les principaux points que vous devez prendre en considération lorsque vous donnez un échantillon de travail à un développeur Scala.

  • Vous ne devez pas seulement tester vos compétences linguistiques, mais aussi votre connaissance des cadres et des bibliothèques que votre entreprise utilise
  • Au lieu de s'appuyer sur des questions à choix multiples, concentrez-vous plutôt sur les tâches de programmation
  • Dans la mesure du possible, utilisez une tâche réelle en utilisant votre propre base de code, car cela donnera à votre candidat un aperçu du type de travail qu'il fera lorsqu'il commencera à travailler pour vous
  • Traitez le test comme une journée de travail normale. Cela signifie qu'il faut donner au candidat l'accès aux grandes bibliothèques, aux cadres et aux ressources générales qu'il utiliserait un jour normal. Vous ne testez pas leur capacité à mémoriser des faits. Vous voulez plutôt savoir s'ils peuvent créer une solution étonnante

Le principal avantage de ce type de plate-forme est que les tests sont livrés automatiquement, de sorte que le candidat peut passer le test plus tard, de n'importe où dans le monde. Non seulement la plate-forme évalue automatiquement la qualité du code ainsi que la puissance de la solution sans aucune intervention de votre part du personnel technique. C'est un moyen efficace d'obtenir une lecture efficace sur la façon dont votre candidat peut faire le travail et c'est incroyablement pratique à la fois pour votre personnel et pour le candidat. Cela signifie que moins de candidats sortent de votre pipeline et moins d'heures sont perdues à faire travailler vos développeurs coûteux au recrutement.

Auteur - Adam Warski

photo d'Adam Warski auteur d'un article sur le développeur Scala Adam est le fondateur et le directeur technique de SoftwareMillun développeur de bout en bout de logiciels personnalisés utilisant Scala, Akka, Java et d'autres langages et technologies intéressants. Vous pouvez suivre Adam sur le blog de SoftwareMill, un blogueur, conférencier et contributeur open source fréquent. Concentrée en Pologne, SoftwareMill construit des applications innovantes et sauve de grands projets, tout en travaillant en partenariat étroit avec ses clients.

4. DevSkiller prêt à l'emploi évaluation en ligne du codage Scala

Bien que DevSkiller vous donne la possibilité d'utiliser votre propre base de code pour tester les développeurs, toutes les entreprises n'ont pas le temps ou les ressources nécessaires pour construire leur propre test d'échantillons de travail. Pour ces entreprises, il existe des tests Scala pré-établis par DevSkiller. Plutôt que de traiter des concepts abstraits, ils testent tous vos candidats en leur donnant une tâche réelle, le genre de tâches qu'ils rencontreraient lors de leur premier jour de travail.

Akka
SENIOR
Des compétences éprouvées
Durée
102 minutes max.
Évaluation
Automatique
Aperçu des tests

Questions sur le choix

l'évaluation de la connaissance des Scala, Programmation fonctionnelle

Tâche de programmation - Niveau : Difficile

Scala | Akka Streams | IoT Data Streaming - Définir un agrégateur temporel pour un flux de données provenant de capteurs IoT.

Scala
JUNIOR
Des compétences éprouvées
Durée
66 minutes max.
Évaluation
Automatique
Aperçu des tests

Questions sur le choix

l'évaluation de la connaissance des Scala

Tâche de programmation - Niveau : Facile

Scala | Spark | ML Logs Transformer - Achever la mise en œuvre de la filière de transformation des grumes.

Scala
JUNIOR
Des compétences éprouvées
Durée
96 minutes max.
Évaluation
Automatique
Aperçu des tests

Questions sur le choix

l'évaluation de la connaissance des Scala

Tâche de programmation - Niveau : Facile

Scala | ScalaCalc - bibliothèque de mathématiques - Étendre les fonctionnalités du module de géométrie en mettant en œuvre des opérations de polygonage.

Scala
JUNIOR
Des compétences éprouvées
Durée
88 minutes max.
Évaluation
Automatique
Aperçu des tests

Questions sur le choix

l'évaluation de la connaissance des Scala, Akka, Scala-Acteurs

Tâche de programmation - Niveau : Moyen :

Scala | Analyseur d'en-têtes | Préparer l'analyseur Scala simple.

Akka
MIDDLE
Des compétences éprouvées
Durée
76 minutes max.
Évaluation
Automatique
Aperçu des tests

Questions sur le choix

l'évaluation de la connaissance des Scala, Akka, Scala-Acteurs

Tâche de programmation - Niveau : Moyen :

Scala | Akka | TCP Stream Messages - Mise en œuvre d'un gestionnaire de clients pour les messages de flux TCP, traitement de ces derniers et renvoi du résultat à l'expéditeur et à la base de donnéesSaverActor.

Source de l'image : godatafy

Partager le poste

En savoir plus sur le recrutement dans le secteur des technologies

Abonnez-vous à notre Learning Hub pour recevoir des informations utiles directement dans votre boîte aux lettres électronique.

Vérifier et développer les compétences de codage de manière transparente.

Voir les produits DevSkiller en action.

Certifications de sécurité et conformité. Nous veillons à ce que vos données soient sûres et sécurisées.

Logo DevSkiller Logo TalentBoost Logo TalentScore