Comment les développeurs de Scala sont interviewés [fermé]
17
Comment les programmeurs Scala sont-ils interviewés? Quels sont les aspects que l'intervieweur recherche lors d'un entretien avec un développeur Scala?
Ils doivent coder FizzBuzz en se tenant sur une échelle.
Job du
2
@Job Points supplémentaires si FizzBuzz utilise des monades State et IO! :-)
Daniel C. Sobral
J'ai trouvé quelques questions aux développeurs de Scala et j'ai décidé d'écrire moi-même quelques réponses. Si
pedrorijo91
Réponses:
17
Tout d'abord, je dirais, pensez pourquoi vous avez besoin d'un développeur Scala. Est-ce vraiment Scala dont vous avez besoin? Pensez à ce qui vient avec Scala (IDE, outils de construction, libs, une autre couche de complexité au dessus de Java etc ...). Revenons à la question. Il se décline en deux volets: compréhension théorique et capacités pratiques. ne vous laissez pas tromper par la "théorie". C'est aussi important dans Scala que l'aspect pratique est important dans Java.
Théorique
Voyez s'ils savent de quoi parle réellement le paradigme fonctionnel. Demandez-leur de comparer les deux paradigmes (FP vs impératif) en philosophie et en pratique. S'ils peuvent donner des exemples de langues qui prennent totalement ou partiellement en charge la PF, alors c'est un plus pour eux.
Théorie et pratique mêlées
Voyez s'ils peuvent réellement faire de la programmation fonctionnelle de la bonne manière. Demandez-leur des listes, des cartes, des zips et des récursions. Viennent ensuite les fermetures, les lambdas, la réduction, les fonctions d'ordre supérieur et l'immuabilité.
Pratique
Voyez s'ils peuvent refactoriser un extrait de code impératif en une bonne alternative fonctionnelle (voir ci-dessus). Essayez une boucle qui implémente des mathématiques ou quelque chose du genre.
Retrouvez leur goût pour le style fonctionnel vs impératif. Optez pour un style plus fonctionnel mais prenez garde qu'il n'atteigne pas les extrêmes du côté du développeur.
Découvrez tout ce qu'ils savent sur les bibliothèques Scala (par exemple, Lift, dispatch, etc.) et les outils (par exemple SBT, fsc, IDEA).
Découvrez dans quelle mesure ils peuvent tirer parti de Java (code -et- outils). Scala est étroitement couplé à Java spécialement dans les environnements plus graves. Le savoir est un gros plus.
Théorique
Demandez-leur de comparer Scala à Java (PHP, C ++, Objective C ou autre) et demandez-leur de vous dire ce qui ne va pas avec Scala. Voyez s'ils comprennent les problèmes ainsi que les avantages. Demandez-leur de donner des exemples concrets de cas où les lacunes de Scala peuvent causer des problèmes (par exemple, il est difficile pour les nouveaux Joes de s'entendre, c'est immature car le support est très limité par rapport à Java, etc.)
Pratique
Voyez s'ils sont connectés à la communauté. Interrogez-les sur Martin Odersky et David Pollak. Demandez-leur de nommer quelques projets Scala et de vous les décrire (Facebook, Twitter, FourSquare, DBPedia et DBPedia SpotLight). Voyez s'ils savent exactement comment Scala est utilisé dans ces projets. Ont-ils lu les articles, regardé les vidéos, etc.?
Demandez-leur quels sont les livres (il n'y en a que quelques-uns). Plus ils en savent, mieux c'est.
Comme dernière mise en garde, je peux dire que les langues brillantes ont cet étrange potentiel pour attirer les mauvaises personnes. Soyez prudent sur le type qui vient à Scala pour toutes les mauvaises raisons. En voici peu:
Scala est pour les privilégiés (je me sens intelligent, je me sens tellement différent des autres Joes, j'ai un tout nouveau doctorat brillant, je déteste l'impératif parce que c'est pour les retardataires, Java est superficiel, Scala est tellement élégant, etc. ). Ce type n'est pas productif dans les projets sérieux et difficile à vivre.
Je suis amoureux de la syntaxe de Scala et j'aimerais écrire ma DSL partout où j'ai la chance de coder. Ce genre aime exploiter les particularités de Scala jusqu'à la dernière goutte de manière destructrice. Ils se sentent bien à écrire du code cryptique et trop concis au point d'être illisible. Ce type est particulièrement dangereux car leur code est illisible. Leur cadeau est leur amour pour la surcharge des opérateurs, les noms étranges et l'écriture de lignes simples.
Je m'en tiens à Scala jusqu'à la dernière goutte quoi qu'il arrive. C'est le type puriste naïf. Ils ne peuvent pas faire de compromis et le projet souffre lorsqu'une approche hybride est requise, comme c'est le cas avec les projets du monde réel.
PS: Si vous avez trouvé un bon Joe, faites-le-moi savoir, car nous en avons besoin;)
@ Dave Briccetti, j'ai eu l'idée de "connecté à la communauté" de Dave et j'ai décidé d'élaborer et cela s'est avéré être une réponse très longue. Nous remercions Dave pour avoir mentionné la communauté;)
Ashkan Kh. Nazary
Super article. Qui êtes vous?
Dave Briccetti
@ Dave, je suis actuellement le développeur principal @ AYLIEN qui fait la PNL à la manière de Scala.
Ashkan Kh. Nazary
Excellente réponse dans l'ensemble, mais +1 en particulier pour la courte liste des "mauvaises raisons". Les mêmes pathologies se retrouvent chez les fanatiques du C ++.
DarenW
1
On peut probablement passer plus de la moitié de cet entretien sans jamais avoir codé en Scala. Est-ce un bug ou une fonctionnalité ? Je suis surpris que votre conclusion ne soit pas plus agnostique sur le langage de programmation, par exemple qu'après tout, un bon développeur Scala est un bon développeur, juste avec un sucre syntaxique différent.
Arthur Havlicek
8
Dans une interview dans le monde réel, savoir simplement que Scala représente la moitié de la bataille gagnée. Embaucher un bon programmeur est toujours difficile, quelle que soit la langue!
Les programmeurs Scala ont tendance à en venir au langage car ils étaient déjà au sommet de leur art en Java et voulaient «passer au niveau supérieur».
Si vous avez une abondance de développeurs Scala disponibles pour une entrevue, alors considérez-vous chanceux. Sinon, les questions les plus pertinentes pourraient être «Quels aspects dois-je rechercher chez un programmeur que je vais former pour utiliser Scala?» Et «Quelles entreprises sont actuellement en mesure de fournir des services de formation?»
Je voudrais dire que tous les développeurs Scala ne sont pas les meilleurs de Java (ou autre), beaucoup d'entre eux adorent la sensation "Je suis différent" ou "Je suis intelligent" que Scala leur donne. Beaucoup n'ont pas la moindre idée de ce qu'est vraiment Scala. Vous devez être prudent avec eux ;-)
Ashkan Kh. Nazary
@ ashy_32bit - C'est de plus en plus vrai de nos jours, mais ce n'était pas tellement le cas lorsque j'ai répondu à cela en 2011
Kevin Wright
7
J'aime voir des solutions à de petits problèmes comme celui-ci: Faites un histogramme des résultats du lancement de deux dés à six faces 200 fois.
Quelqu'un avec une solution comme celle de Daniel Sobral, ou celle de Kevin Wright: http://ideone.com/8LFs3 mériterait un examen plus approfondi.
Si la réponse ressemble à du code Java, le demandeur pourrait ne pas être assez loin.
Je voudrais aussi voir que la personne est connectée à la communauté Scala: connaît les livres, les auteurs, les développeurs open source, les groupes d'utilisateurs, les gens intéressants.
Bien qu'il bat notre moyenne de l'industrie en étant de 2 ;-)
Duncan McGregor
4
Je n'ai jamais fait d'embauche Scala, mais je chercherais à comprendre comment fonctionnent les implicites, le modèle de classe de type et les bases de la programmation fonctionnelle.
Réponses:
Tout d'abord, je dirais, pensez pourquoi vous avez besoin d'un développeur Scala. Est-ce vraiment Scala dont vous avez besoin? Pensez à ce qui vient avec Scala (IDE, outils de construction, libs, une autre couche de complexité au dessus de Java etc ...). Revenons à la question. Il se décline en deux volets: compréhension théorique et capacités pratiques. ne vous laissez pas tromper par la "théorie". C'est aussi important dans Scala que l'aspect pratique est important dans Java.
Théorique
Théorie et pratique mêlées
Pratique
Voyez s'ils peuvent refactoriser un extrait de code impératif en une bonne alternative fonctionnelle (voir ci-dessus). Essayez une boucle qui implémente des mathématiques ou quelque chose du genre.
Retrouvez leur goût pour le style fonctionnel vs impératif. Optez pour un style plus fonctionnel mais prenez garde qu'il n'atteigne pas les extrêmes du côté du développeur.
Découvrez tout ce qu'ils savent sur les bibliothèques Scala (par exemple, Lift, dispatch, etc.) et les outils (par exemple SBT, fsc, IDEA).
Découvrez dans quelle mesure ils peuvent tirer parti de Java (code -et- outils). Scala est étroitement couplé à Java spécialement dans les environnements plus graves. Le savoir est un gros plus.
Théorique
Pratique
Voyez s'ils sont connectés à la communauté. Interrogez-les sur Martin Odersky et David Pollak. Demandez-leur de nommer quelques projets Scala et de vous les décrire (Facebook, Twitter, FourSquare, DBPedia et DBPedia SpotLight). Voyez s'ils savent exactement comment Scala est utilisé dans ces projets. Ont-ils lu les articles, regardé les vidéos, etc.?
Demandez-leur quels sont les livres (il n'y en a que quelques-uns). Plus ils en savent, mieux c'est.
Comme dernière mise en garde, je peux dire que les langues brillantes ont cet étrange potentiel pour attirer les mauvaises personnes. Soyez prudent sur le type qui vient à Scala pour toutes les mauvaises raisons. En voici peu:
PS: Si vous avez trouvé un bon Joe, faites-le-moi savoir, car nous en avons besoin;)
la source
Dans une interview dans le monde réel, savoir simplement que Scala représente la moitié de la bataille gagnée. Embaucher un bon programmeur est toujours difficile, quelle que soit la langue!
Les programmeurs Scala ont tendance à en venir au langage car ils étaient déjà au sommet de leur art en Java et voulaient «passer au niveau supérieur».
Si vous avez une abondance de développeurs Scala disponibles pour une entrevue, alors considérez-vous chanceux. Sinon, les questions les plus pertinentes pourraient être «Quels aspects dois-je rechercher chez un programmeur que je vais former pour utiliser Scala?» Et «Quelles entreprises sont actuellement en mesure de fournir des services de formation?»
la source
J'aime voir des solutions à de petits problèmes comme celui-ci: Faites un histogramme des résultats du lancement de deux dés à six faces 200 fois.
Voir les commentaires ici pour des réponses intéressantes: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html
Quelqu'un avec une solution comme celle de Daniel Sobral, ou celle de Kevin Wright: http://ideone.com/8LFs3 mériterait un examen plus approfondi.
Si la réponse ressemble à du code Java, le demandeur pourrait ne pas être assez loin.
Je voudrais aussi voir que la personne est connectée à la communauté Scala: connaît les livres, les auteurs, les développeurs open source, les groupes d'utilisateurs, les gens intéressants.
la source
Je n'ai jamais fait d'embauche Scala, mais je chercherais à comprendre comment fonctionnent les implicites, le modèle de classe de type et les bases de la programmation fonctionnelle.
la source