Como entrevistador, ¿qué habilidades y conocimientos de frameworks espera de un buscador de trabajo de Java?

Había escrito sobre esto en algún momento. Aquí está mi opinión. Aquí está mi opinión sobre mis experiencias con entrevistas técnicas

En las últimas semanas, he estado tomando muchas entrevistas técnicas activamente. Lo bueno es que puedo hablar con mucha gente y hay una discusión muy saludable sobre temas técnicos. El lado malo es que toma mucho tiempo encontrar un buen candidato que cumpla con los requisitos.

Desde mi experiencia personal, he anotado algunos rasgos de buenos programadores, lo que realmente ha sido algo común que observo en todos los candidatos que limpian la entrevista.

Clasificaría ampliamente a los candidatos a los que he entrevistado hasta la fecha, en 3 categorías.

  1. El programador de cómo hacer y por qué hacer
  2. El programador de procedimientos
  3. Los demás

Mi decisión de elegir un tipo particular de candidato se basa únicamente en la descripción del trabajo y en cómo las habilidades del candidato coinciden.

El programa de cómo hacer y por qué hacer

Este tipo de programadores generalmente son los mejores de la raza. Casi siempre terminaba dándoles un pulgar cuando entrevistaba a esas personas. Siempre aportan un ángulo de razonamiento lógico a cada pregunta que les hago.

  • Muestre esto … Si les pregunta: “¿Pueden explicarme por qué la abstracción es importante?”, Lo más probable es que me den ejemplos que no solo les den una definición de libro, sino que siempre agreguen su comprensión de la misma. Continúan tomando ejemplos de sus proyectos pasados ​​o ejemplos del mundo real y destacan los puntos clave de cómo la utilización del concepto de abstracción les ayudó a diseñar / codificar mejor una solución.
  • Siempre pueden explicarme los conceptos muy claramente, en los términos más simples. Cuido cuidadosamente sus habilidades de comunicación cuando me responden porque, creo firmemente que si no puedes explicarme algo en términos simples, ¡simplemente no lo entiendes lo suficiente!
  • Piden muchas aclaraciones cuando les haces preguntas vagas. Si tienen que hacer suposiciones, te lo hacen saber.
  • Cuando se presentan preguntas abiertas que tienen muchas soluciones alternativas, casi siempre presentan los pros y los contras de cada enfoque.
  • Son abiertos sobre cosas que no saben y no andan demasiado por las ramas.
  • Les apasiona su trabajo y están ansiosos por compartir con ustedes lo que han hecho en el pasado.
  • Están abiertos a admitir los errores o las malas decisiones que han tomado mientras trabajaban en un proyecto anteriormente. Casi siempre son sinceros en sus opiniones.
  • Por último, pero no menos importante, no solo saben cómo funciona una cosa, sino que casi siempre saben por qué. Esto, con mucho, ha sido el aspecto más impresionante.

El programador de procedimientos

Este tipo de programadores suelen ser los que tienen mucha experiencia “práctica”, pero por alguna razón nunca se han molestado o no han tenido el celo suficiente para investigar los aspectos del porqué de la programación.

  • Saben cómo configurar las cosas en un marco y cómo usar una API.
  • Saben cómo usar la herramienta xyz.
  • Conocen las definiciones de libros de texto de casi todos los conceptos.
  • Pero lo único que siempre he visto en ellos es la falta de esfuerzo que han demostrado para comprender por qué parte de las cosas. Entiendo que hay una limitación práctica sobre cuánto se puede profundizar en por qué aspectos de la misma. Pero generalmente no parecen ir más allá de las definiciones superficiales.
  • Son bastante buenos para tomar instrucciones y ejecutarlas. Son hacedores.
  • Son entusiastas y funcionan bien cuando se les da una definición clara de lo que se debe hacer.

Los demás

Esta es la tercera categoría de programadores que generalmente no responden preguntas al punto y simplemente se andan por las ramas. El mayor problema que veo con este lote es su propia incapacidad para evaluar sus niveles de competencia en las cosas. Casi siempre se evalúan más de lo que realmente realizan.

  • No conocen sus conceptos.
  • Sus respuestas son superficiales.
  • Muestran falta de curiosidad por aprender.
  • Por lo general, evitan entrar en detalles a medida que profundiza en los conceptos.
  • Esperan sus aportes cuando se les hace una pregunta vaga. No piden aclaraciones.

Ahora que conoce los tipos, ¿cuál preferiría contratar o incluir en su proyecto?

Yo diría que prefiero el tipo 1 y el tipo 2 porque realmente los necesitas a ambos. Este es el por qué…

Necesita personas tipo 1 en un proyecto porque siempre tienen una visión general. Estas son las personas que buscan violaciones de diseño, violaciones de codificación y cualquier discrepancia en la implementación. Son como cualquier otro miembro del equipo, pero se preocupan por su proyecto y tienen una buena comprensión general de cómo funcionan las cosas y por qué. Pueden pensar por sí mismos y trabajar casi independientemente en el equipo con muy poca o ninguna orientación o supervisión.

Necesitas personas tipo 2 en un proyecto porque son los hacedores. Aunque es posible que no se acerquen a ti y te sugieran oye por qué no hacemos esto en lugar de esto, y así sucesivamente, son bastante buenos para tomar instrucciones y ejecutarlas. Creo que pueden ser entrenados durante un período de tiempo y tienen el potencial de pasar al tipo1.

Me abstendría estrictamente de contratar candidatos tipo 3 porque no solo carecen de habilidades técnicas, sino que también carecen de entusiasmo o entusiasmo por aprender. Casi siempre terminan siendo un dolor, si los contratas. Muestran falta de propiedad de las cosas que se les asignaron. Así que preferiría no incluirlos en el sistema que tener que lidiar con ellos más tarde.

PD: siéntase libre de compartir sus pensamientos sobre este tema. Creo que el proceso de entrevista es interesante y brinda una buena oportunidad para saber más sobre las personas y la tecnología. ¡Espero que esto ayude!

Tiendo a entrevistar para roles Java de bajo nivel, por lo que esto no se aplica a la mayoría de los puestos.

Espero que un candidato demuestre interés en cómo funciona realmente Java y resuelva problemas a bajo nivel.

Por ejemplo, ¿cómo podría ajustar una sección de código para que tome menos de 10 microsegundos el 99.9% del tiempo, en una aplicación real? ¿Dónde comenzaría, qué herramientas podría tener para escribir usted mismo y qué esperaría ver? por ejemplo, en términos de distribución de latencia.

Esperaría que cualquiera tuviera una idea justa de cómo escribirían una biblioteca o un marco, incluso si están reutilizando uno establecido que se ha probado y probado.

Para principiantes, me gustaría saber si comprende los conceptos básicos de programación y si tiene la actitud correcta para aprender.

Para Intermedio: me gustaría saber cómo maneja los problemas de programación, cómo elige una solución óptima si hay varias soluciones disponibles.

Para expertos: me gustaría saber si él conoce las tendencias actuales en tecnologías, comprende el diseño del marco y puede compararlas.