Habilidades del desarrollador de la Scala

Puede ser increíblemente difícil encontrar al desarrollador Scala adecuado. Hay que buscar entre montañas de currículos enviados por candidatos y reclutadores para encontrar al adecuado. Pero al final del día, es difícil saber cuáles de estos candidatos potenciales serán capaces de hacer el trabajo y cuáles simplemente no son adecuados para su organización. Para facilitarte el trabajo, hemos escrito este artículo para explicarte exactamente lo que tienes que hacer para encontrar al desarrollador Scala adecuado.
1. Lo que hay que saber sobre Scala para contratar desarrolladores de Scala
Scala (/ˈskɑːlɑː/ skah-lah) es un lenguaje de programación de propósito general que ofrece soporte para la programación funcional y un sólido sistema de tipos estáticos El diseño de Scala comenzó en 2001 en la École Polytechnique Fédérale de Lausanne (EPFL) por Martin Odersky. Es la continuación del trabajo sobre Funnel, un lenguaje de programación que combina ideas de la programación funcional y las redes de Petri. Odersky trabajó anteriormente en Generic Java y en javac, el compilador de Java de Sun.
Scala se utiliza principalmente en el desarrollo de backend en aplicaciones altamente concurrentes.
Principales ventajas de Scala:
- Los objetos son inmutables "por defecto" (por ejemplo, todas las colecciones)
Hace que el lenguaje sea mucho menos propenso a los errores, especialmente en relación con los hilos. - Un sistema tipográfico avanzado
Más tipos significan que Scala puede realizar más tipos de tareas que los lenguajes con sistemas de tipos más básicos, como Java. - La programación funcional, la orientada a objetos y la imperativa son posibles
Diferentes tareas requieren diferentes estilos de programación. Mientras que otros lenguajes sólo funcionan con uno o dos estilos de programación, Scala trabaja con los tres. Esto significa que un desarrollador que trabaja en el entorno de Scala puede realizar más tipos de tareas sin tener que cambiar a un entorno de programación diferente.
2. ¿Qué es importante que el reclutador de TI sepa sobre Scala?
Por encima de todo, hay tres cosas súper importantes que cualquier reclutador técnico debe saber cuando está tratando de cubrir un puesto de desarrollador Scala.
- Actualmente, Scala es el más popular lenguaje de programación funcional. Aunque tiene diferentes aplicaciones, probablemente su uso más popular en estos momentos es el de Big Data.
- Scala utiliza el mismo entorno de ejecución que Java, llamado máquina virtual Java. Debido a esto, es completamente interoperable con Java. Esto es una forma elegante de decir que puedes usar bibliotecas Scala para aplicaciones Java y bibliotecas Java para aplicaciones Scala. Esto hace que los desarrolladores de Scala tengan una gran ventaja sobre otros desarrolladores porque pueden acceder al increíblemente grande y diverso ecosistema de Java.
- Lo único que puede alejar a los desarrolladores de Scala es que tiene una sintaxis más complicada que la de lenguajes como Java o C#. Como resultado, la curva de aprendizaje puede ser particularmente empinada, lo que significa que puede ser difícil encontrar un desarrollador de Scala cualificado.
(En marzo de 2015, el antiguo vicepresidente del grupo de ingeniería de plataformas de Twitter, Raffi Krikorian, declaró que no habría elegido Scala en 2011 debido a su curva de aprendizaje. Ese mismo mes, el vicepresidente senior de LinkedIn, Kevin Scott, declaró su decisión de "minimizar la dependencia de Scala". En noviembre de 2011, Yammer se alejó de Scala por razones que incluían la curva de aprendizaje para los nuevos miembros del equipo y la incompatibilidad de una versión del compilador Scala a la siguiente) Fuente: Wikipedia
Al buscar desarrolladores de Scala, tienes que entender que vas a buscar una élite que ha estado dispuesta a superar las barreras de entrada que el lenguaje plantea.
3. Cómo verificar los conocimientos de Scala en la fase de selección
3.1. Examen técnico de los conocimientos de Scala basado en el currículo del candidato
Antes de hacer cualquier tipo de selección técnica más amplia, merece la pena comprobar el interés de los candidatos a desarrollo en la programación funcional. Esto significa que están interesados en aprender nuevos lenguajes, así como lenguajes funcionales como Haskell, F sharp y OCam.
Glosario de Scala para los reclutadores de tecnología
Frameworks y bibliotecas Scala | Backend: Akka, Finagle
Big data: Spark, Scalding Web: Play, Lift, Scalatra Utilidades: Scalaz, Cats |
Herramientas de prueba de Scala | ScalaTest, Specs2 |
Herramientas de construcción de Scala | sbt (Simple Build Tool) |
Relaciones entre las respectivas versiones de la tecnología Scala:
La mayor parte de la versión 2.12 se utiliza con un contingente menor de desarrolladores que utilizan la versión 2.11. La versión 3.0 está programada para ser lanzada en 2020. Estas versiones principales de Scala no son compatibles con el binario - es necesario recompilar todas las bibliotecas, pero las versiones menores (2.11.1, 2.11.2, etc.) sí lo son; todas las versiones son compatibles con el código fuente.
La importancia de un certificado Scala para evaluar las habilidades de un desarrollador Scala
Hay muchos cursos disponibles. Los más populares son ofrecidos por Lightbend, que también emite certificados. Pero mucha gente está haciendo el curso de Coursera Scala, que es desarrollado por Centro Scala.
Consulte también estos cursos:
Aunque los certificados pueden mostrar cierta aptitud, hay muchos más factores que determinan si un candidato será el desarrollador de Scala adecuado para ti.
3.2. Examen técnico de los conocimientos de Scala durante una entrevista telefónica/vídeo
Por lo general, tras la selección del currículum, el siguiente paso en el proceso de contratación es realizar una entrevista telefónica o en vídeo con el candidato. La principal ventaja de esta parte del proceso es poder preguntar preguntas de comportamiento para ver cómo reaccionaría el candidato en determinadas situaciones de la vida real. A menudo esto es lo que decide si un candidato será invitado a una entrevista técnica individual, por lo que es importante en esta fase hacer las preguntas técnicas adecuadas.
Por supuesto, estas preguntas pueden variar en función de los tipos de habilidades que usted está reclutando. Dicho esto, las preguntas aquí deberían ser útiles para cubrir cualquier puesto de desarrollador Scala.
P1: ¿Qué es la concordancia de patrones?
Por qué deberías preguntar esto: Es importante saberlo porque Scala tiene incorporado un mecanismo general de coincidencia de patrones. Este mecanismo le permite hacer coincidir cualquier tipo de datos con una política de primera coincidencia.
P2: ¿Qué son las clases de casos?
Por qué deberías preguntar esto: Las clases Case son únicas en Scala. En realidad son clases normales a las que se les han añadido algunas condiciones adicionales. Son inmutables por defecto, descomponibles a través de la coincidencia de patrones, comparadas por igualdad estructural en lugar de por referencia, y sucintas para instanciar y operar.
P3: ¿Qué patrones orientados a objetos se implementan en Scala?
Por qué debe preguntar esto: Hay tres patrones orientados a objetos principales que un desarrollador de Scala debe conocer. Con Singleton, Scala proporciona una realización directa del patrón Singleton en el lenguaje. Los patrones de objetos de valor son posibles mediante el uso de Tuples, tipos, o clases de casos. Finalmente, en Scala, hay una palabra clave lazy que ofrece una inicialización perezosa
P4: ¿Qué es un trait y hay algún equivalente en Java?
Por qué deberías preguntar esto: Los rasgos son similares a las interfaces en Java y se implementan parcialmente.
Además de las preguntas técnicas específicas, hay una serie de preguntas de comportamiento que serán útiles para determinar cómo actuará su candidato en determinadas situaciones.
P5: ¿En qué tecnologías ha tenido experiencia comercial en los últimos dos años? ¿Cuáles fueron sus responsabilidades? ¿Cuál ha sido su mayor logro?
Por qué deberías preguntar esto: No todos los conocimientos de programación son iguales. Los desarrolladores suelen tener una gran variedad de intereses y han incursionado en diferentes tecnologías, pero es importante determinar cuáles son sus conocimientos funcionales y cuáles son simplemente sus incursiones. Esta pregunta también ayudará a demostrar cómo han utilizado la tecnología para el terreno comercial.
P6: ¿Qué bibliotecas de código abierto de Java considera valiosas y por qué?
Por qué deberías preguntar esto: Mencionado antes Scala es interoperable con Java. Dado que Java tiene muchas más bibliotecas a las que recurrir, la eficacia de su motor Scylla dependerá de cuántas de estas bibliotecas conozcan. Esta pregunta le permitirá saber con qué bibliotecas fuera de Scala está familiarizado su candidato y cómo las ha utilizado en el pasado.
P7: Me he dado cuenta de que ha incluido el marco X en su CV. ¿Qué opina de él? ¿Es una buena elección?
Por qué deberías preguntar esto: El valor real de un desarrollador no es simplemente su conocimiento del lenguaje por su capacidad para ejecutar un proyecto de manera eficiente. Los mejores están familiarizados con una serie de herramientas y recursos que multiplican el alcance de lo que son capaces de lograr. esta pregunta llegará al corazón de lo cómodo que el desarrollador está utilizando estos recursos externos para sobrealimentar su desarrollo de software.
3.3. Examen técnico de los conocimientos de Scala con una prueba de codificación en línea
Las pruebas telefónicas pueden proporcionarle mucha información, al igual que un análisis exhaustivo del currículum de un candidato, pero al final del día, debe ser capaz de determinar cuáles son las habilidades de codificación de su candidato. Al fin y al cabo, ninguno de los métodos de selección mencionados hasta ahora puede decirle si su candidato sabe codificar o no. Para ello, necesita una prueba de codificación.
Actualmente se ofrecen varias formas de realizar pruebas de codificación. Van desde las entrevistas de pizarra hasta las plataformas de pruebas algorítmicas. Desgraciadamente, la mayoría de estos métodos no ofrecen la información necesaria para tomar una decisión informada. Las estructuras de datos y los algoritmos son los componentes básicos del software pero, al mismo tiempo, tienen poco que ver con el trabajo diario de un desarrollador de software. Sería como pedirle a un operador de retroexcavadora que cave un agujero con una pala. Técnicamente, se está probando lo bien que puede mover la tierra, pero lo que realmente se quiere saber es lo bien que puede utilizar las herramientas de que dispone para cavar eficazmente un agujero gigantesco dentro de un plazo ajustado.
Del mismo modo, no quiere perder el tiempo en su proceso de contratación comprobando las habilidades básicas. En su lugar, quiere ver cómo un desarrollador utiliza todas las herramientas y recursos de que dispone para ofrecer soluciones eficientes a tiempo. Probablemente la mejor manera de hacerlo es con una prueba de muestra de trabajo. Ya hemos hablado en otra parte de este blog de cómo hacer una prueba de muestra de trabajo pero aquí están los principales puntos que debes tener en cuenta cuando des una prueba de ejemplo de trabajo a un desarrollador de Scala.
- No sólo hay que comprobar las habilidades lingüísticas, sino también el conocimiento de los frameworks y las bibliotecas que utiliza la empresa
- En lugar de confiar en las preguntas de opción múltiple, concéntrese en las tareas de programación
- Siempre que sea posible, utilice una tarea real con su propia base de código, ya que dará a su candidato una idea del tipo de trabajo que hará cuando empiece a trabajar para usted.
- Trate la prueba como un día normal de trabajo. Esto significa dar al candidato acceso a todas las bibliotecas, marcos y recursos generales que utilizaría en un día normal. No estás probando su capacidad para memorizar datos. En su lugar, quieres saber si pueden crear una solución sorprendente
La principal ventaja de este tipo de plataforma es que las pruebas se entregan de forma automática, por lo que el candidato puede realizarlas posteriormente desde cualquier parte del mundo. Además, la plataforma evalúa automáticamente la calidad del código y la potencia de la solución sin necesidad de que intervenga el personal técnico. Es una forma eficaz de obtener una lectura efectiva de lo bien que su candidato puede hacer el trabajo y es increíblemente conveniente tanto para su personal como para el candidato. Esto significa que menos candidatos se quedan fuera de su línea de producción y menos horas se pierden teniendo a sus costosos desarrolladores trabajando en el reclutamiento.
Autor - Adam Warski
Adam es el fundador y director técnico de SoftwareMillAdam es un desarrollador integral de software a medida que utiliza Scala, Akka, Java y otros lenguajes y tecnologías interesantes. Un bloguero frecuente, orador y colaborador de código abierto, puede mantenerse al día con Adam en el Blog de SoftwareMill. Concentrada en Polonia, SoftwareMill construye aplicaciones innovadoras y rescata grandes proyectos, todo ello trabajando en estrecha colaboración con sus clientes.
4. Evaluación de codificación Scala en línea, lista para usar, de DevSkiller
Aunque DevSkiller le da la opción de utilizar su propia base de código para probar a los desarrolladores, no todas las empresas tienen el tiempo o los recursos para construir su propia prueba de muestra de trabajo. Para esas empresas, existen las pruebas de Scala prefabricadas de DevSkiller. En lugar de tratar con conceptos abstractos, todos ellos ponen a prueba a sus candidatos dándoles una tarea del mundo real, el tipo de tareas que se encontrarían en su primer día de trabajo.
- Habilidades probadas
- Duración
- 102 minutos como máximo.
- Evaluación
- Automático
- Resumen de la prueba
-
Preguntas de elección
evaluando el conocimiento de Scala, Programación funcional
Tarea de programación - Nivel: Duro
Scala | Corrientes de Akka | Corriente de datos de IoT - Define un agregador basado en el tiempo para una corriente de datos de los sensores de IoT.
- Habilidades probadas
- Duración
- 66 minutos como máximo.
- Evaluación
- Automático
- Resumen de la prueba
-
Preguntas de elección
evaluando el conocimiento de Scala
Tarea de programación - Nivel: Fácil
Scala | Spark | ML Logs Transformer - Completa la implementación de la tubería de transformación de los troncos.
- Habilidades probadas
- Duración
- 96 minutos como máximo.
- Evaluación
- Automático
- Resumen de la prueba
-
Preguntas de elección
evaluando el conocimiento de Scala
Tarea de programación - Nivel: Fácil
Scala | ScalaCalc - biblioteca de matemáticas - Amplía la funcionalidad del módulo de geometría implementando operaciones de polígonos.
- Habilidades probadas
- Duración
- 88 minutos como máximo.
- Evaluación
- Automático
- Resumen de la prueba
-
Preguntas de elección
evaluando el conocimiento de Scala, Akka, Scala-Actores
Tarea de programación - Nivel: Medio
Prepara el simple analizador de Scala.
- Habilidades probadas
- Duración
- 76 minutos como máximo.
- Evaluación
- Automático
- Resumen de la prueba
-
Preguntas de elección
evaluando el conocimiento de Scala, Akka, Scala-Actores
Tarea de programación - Nivel: Medio
Scala | Akka | TCP Stream Messages - Implementa el manejador de clientes para los mensajes de flujo TCP, procesalos y envía el resultado al remitente y a la base de datosSaverActor.
Fuente de la imagen: godatafy
Compartir correo