Cómo se entrevista a los desarrolladores de Scala [cerrado]

17

¿Cómo se entrevista a los programadores de Scala? ¿Cuáles son los aspectos que el entrevistador busca cuando entrevista a un desarrollador de Scala?

prasonscala
fuente
10
Tienen que codificar FizzBuzz mientras están parados en una escalera.
Trabajo
2
@Job ¡Puntos extra si FizzBuzz usa Mónadas estatales e IO! :-)
Daniel C. Sobral
Encontré algunas preguntas a los desarrolladores de Scala y decidí escribir algunas respuestas yo mismo. En caso de que alguien esté interesado: pedrorijo.com/blog/scala-interview-questions
pedrorijo91

Respuestas:

17

Primero, diría, piensa por qué necesitas un desarrollador de Scala. ¿Es realmente Scala lo que necesitas? Piense en lo que viene junto con Scala (IDE, herramientas de compilación, libs, otra capa de complejidad por encima de Java, etc.). De vuelta a la pregunta. Se trata de dos aspectos: comprensión teórica y habilidades prácticas. no dejes que la "teoría" te engañe. Es tan importante en Scala como lo práctico es importante en Java.

Teórico

  • Vea si saben de qué se trata realmente el paradigma funcional. Pídales que comparen los dos paradigmas (FP versus imperativo) en filosofía y práctica. Si pueden dar ejemplos de lenguajes que tienen soporte total o parcial para FP, entonces es una ventaja para ellos.

Teoría y práctica mezcladas

  • Vea si realmente pueden hacer una programación funcional de la manera correcta. Pregúnteles sobre listas, mapas, compresión y recursividad. Luego vienen los cierres, lambdas, reducción, funciones de orden superior e inmutabilidad.

Práctico

  • Vea si pueden refactorizar un fragmento de código imperativo en una buena alternativa funcional (ver arriba). Pruebe un bucle que implemente algunas matemáticas o algo por el estilo.

  • Encuentra su gusto por el estilo funcional frente al imperativo. Opte por un estilo más funcional, pero tenga cuidado de que no llegue a los extremos del lado del desarrollador.

  • Vea cuánto saben sobre las bibliotecas Scala (p. Ej., Lift, despacho, etc.) y herramientas (p. Ej. SBT, fsc, IDEA).

  • Vea qué tan bien pueden aprovechar Java (código -y- herramientas). Scala está estrechamente acoplado a Java, especialmente en entornos más serios. Saber esto es una gran ventaja.

Teórico

  • Pídales que comparen Scala con Java (PHP, C ++, Objective C o lo que sea) y pídales que le digan qué está mal con Scala. Vea si entienden los problemas y las ventajas. Pídales que den ejemplos del mundo real de cuándo las deficiencias de Scala pueden causar problemas (por ejemplo, es difícil para los nuevos Joes llevarse bien, es inmaduro ya que el soporte es muy limitado en comparación con Java, etc.)

Práctico

  • Vea si están conectados a la comunidad. Pregúnteles sobre Martin Odersky y David Pollak. Pídales que nombren algunos proyectos Scala y que se los describan (Facebook, Twitter, FourSquare, DBPedia y DBPedia SpotLight). Vea si saben exactamente cómo se usa Scala en estos proyectos. ¿Han leído los artículos, visto los videos, etc.?

  • Pregúnteles acerca de los libros (solo hay unos pocos). Cuanto más sepan, mejor.

  • Como última palabra de advertencia, puedo decir que los idiomas brillantes tienen este extraño potencial para atraer a las personas equivocadas. Tenga cuidado con el tipo que llega a Scala por todas las razones equivocadas. Aquí hay algunos:

    • Scala es para los privilegiados (me siento inteligente, me siento muy diferente de otros Joes, tengo un doctorado nuevo y brillante, odio el imperativo porque es para los retrasados, Java es superficial, Scala es muy elegante, etc. ) Este tipo no es productivo en proyectos serios y es difícil llevarse bien con ellos.
    • Estoy enamorado de la sintaxis de Scala y me encantaría escribir mi DSL donde sea que tenga la oportunidad de codificar. A este tipo le encanta explotar las peculiaridades de Scala hasta la última gota de una manera destructiva. Se sienten muy bien al escribir código críptico y demasiado conciso hasta el punto de ser ilegible. Este tipo es particularmente peligroso ya que su código es ilegible. Su obsequio es su amor por la sobrecarga de operadores, nombres extraños y escribir frases ingeniosas.
    • Me quedo con Scala hasta la última gota, pase lo que pase. Este es el tipo ingenuo purista. No pueden negociar y el proyecto sufre cuando se requiere un enfoque híbrido, como es el caso de los proyectos del mundo real.

PD: Si encontraste un buen Joe, por favor, házmelo saber, ya que necesitamos algunos;)

Ashkan Kh. Nazary
fuente
@Dave Briccetti, Dave me dio la idea de "conectado a la comunidad" y decidí dar más detalles y terminó siendo una respuesta muy larga. El crédito va a Dave por mencionar a la comunidad;)
Ashkan Kh. Nazary
Buena publicación. ¿Quién eres tú?
Dave Briccetti
@Dave, actualmente soy el desarrollador principal @ AYLIEN que está haciendo PNL a la manera Scala.
Ashkan Kh. Nazary
Gran respuesta en general, pero +1 especialmente por la breve lista de "razones equivocadas". Las mismas patologías se pueden encontrar en fanáticos de C ++.
DarenW
1
Probablemente se pueda pasar más de la mitad de esa entrevista sin haber codificado en Scala, nunca. Es un error o una característica ? Me sorprende que su conclusión no sea más agnóstica sobre el lenguaje de programación, por ejemplo, que después de todo, un buen desarrollador de Scala es un buen desarrollador, solo que con un azúcar sintáctico diferente.
Arthur Havlicek
8

En una entrevista en el mundo real, simplemente saber que Scala es la mitad de la batalla ganada. ¡Contratar a un buen programador siempre es difícil, independientemente del idioma!

Los programadores de Scala tienden a llegar al lenguaje porque ya estaban en la cima de su juego en Java y querían "llevarlo al siguiente nivel".

Si tiene una gran cantidad de desarrolladores de Scala disponibles para la entrevista, considérese afortunado. De lo contrario, las preguntas más relevantes podrían ser "¿Qué aspectos debería buscar en un programador al que voy a capacitar para usar Scala?" Y "¿Qué empresas pueden actualmente proporcionar servicios de capacitación?"

Kevin Wright
fuente
1
Me gustaría decir que no todos los desarrolladores de Scala son los mejores en Java (o lo que sea), a muchos de ellos les encanta la sensación "Soy diferente" o "Soy inteligente" que Scala les da. Muchos no tienen la menor idea de lo que realmente trata Scala. Debes tener cuidado con ellos ;-)
Ashkan Kh. Nazary
@ ashy_32bit - Eso es cada vez más cierto hoy en día, pero no fue así cuando respondí esto en 2011
Kevin Wright
7

Me gusta ver soluciones a pequeños problemas como este: haga un histograma de los resultados de lanzar dos dados de seis caras 200 veces.

Vea los comentarios aquí para obtener algunas respuestas interesantes: http://briccetti.blogspot.com/2011/01/dice-throw-simulation-in-java-and-scala.html

Alguien con una solución como la de Daniel Sobral, o esta de Kevin Wright: http://ideone.com/8LFs3 merecería una mirada más cercana.

Si la respuesta se parece al código Java, entonces el solicitante podría no estar lo suficientemente lejos.

También me gustaría ver que la persona está conectada a la comunidad Scala: conoce los libros, autores, desarrolladores de código abierto, grupos de usuarios, personas interesantes.

Dave Briccetti
fuente
Aunque supera el promedio de nuestra industria en estar apagado por 2 ;-)
Duncan McGregor
4

Nunca he realizado ninguna contratación de Scala, pero buscaría comprender cómo funciona el trabajo, el tipo de patrón de clase y los conceptos básicos de la programación funcional.

Daniel C. Sobral
fuente