Logo de Adafaceadaface

Cómo evaluar las habilidades de los desarrolladores de Java

A pesar de que docenas de nuevos lenguajes de programación han surgido en los 25 años transcurridos desde que Java fue lanzado por primera vez en 1995, la demanda de desarrolladores Java sigue siendo fuerte. De hecho, Java todavía se encuentra entre los lenguajes de programación más solicitados en el mercado laboral.

Con el poder de la Máquina Virtual Java (JVM) detrás de la plataforma, un gran desarrollador Java puede construir aplicaciones web distribuidas y aplicaciones de escritorio sofisticadas que pueden ejecutarse en cualquier plataforma.

Según un estudio realizado por Indeed, los desarrolladores Java tienen la tasa de cambio de carrera más baja (7,5%).

Para que las empresas crezcan, deben tener cuidado con el tipo de candidatos que atraen, evalúan, entrevistan y contratan. Dado que Java ha sido utilizado por tantas empresas en todo el mundo durante tanto tiempo, hay demasiados candidatos que enumeran Java en su currículum como una habilidad. Para identificar a los desarrolladores Java adecuados para su empresa, necesita un proceso de contratación eficaz.

Los buenos desarrolladores Java tienen las siguientes habilidades técnicas:

  • Fundamentos sólidos de programación orientada a objetos
  • Conocimiento profundo de J2EE y JVM
  • Capacidad para escribir código limpio, legible y optimizado
  • Capacidad para corregir errores y fallos
  • Experiencia práctica con el manejo de consultas

Como reclutador de TI, ¿qué debería saber sobre Java?

  1. La experiencia con frameworks y bibliotecas de Java en el ecosistema Java es potencialmente tan importante como el conocimiento del lenguaje de programación, si no más. Por ejemplo, la mayoría de los bancos globales necesitan que los ingenieros de Java tengan experiencia con Java, Spring e Hibernate. También tienen una fuerte preferencia por una sólida comprensión de la programación multihilo y los patrones de diseño. 2. Java 10 es la implementación de referencia de código abierto de la plataforma Java SE 10. Java se actualiza constantemente, por lo que si su candidato trabajó en Java hace 5 años, es posible que no sea el mejor candidato para el puesto. Un candidato que trabajó en la versión de Java lanzada en 2008 puede no estar lo suficientemente capacitado para trabajar en Java en 2021. 3. No se aprende Java en la universidad. Si bien la educación formal en informática le ayuda a construir una base sólida de fundamentos, eso es muy diferente a tener experiencia práctica en la codificación de Java. Los proyectos (comerciales o de afición) en los que el candidato ha trabajado son mucho más importantes que la escuela a la que asistió.

Aquí están los beneficios clave de Java:

  • Java es independiente de la plataforma. El lenguaje es compatible con todas las plataformas y dispositivos, desde centros de datos mainframe hasta teléfonos inteligentes. Su código compilado – bytecode – puede ejecutarse en casi cualquier plataforma sin recompilación.
  • Java es orientado a objetos. Permite construir programas modulares y reutilizar el código.
  • El lenguaje es fácil de aprender, escribir, compilar, depurar y, por lo tanto, es bueno para principiantes.
  • Java es el lenguaje base para el sistema operativo Android.
  • Como lenguaje maduro, Java es más estable y predecible que otros lenguajes de programación.
  • Debido a su popularidad en todo el mundo, Java tiene una gran comunidad de usuarios activa y soporte disponible.
  • Las poderosas herramientas de desarrollo de Java, como Eclipse SDK y NetBeans, ofrecen un entorno de desarrollo integrado y tienen capacidad de depuración.

¿Qué es Java SE y Java EE?

Java SE se refiere a Java Standard Edition. Se utiliza para el desarrollo e implementación de códigos para el entorno de escritorio.

Java EE se refiere a Java Enterprise Edition, que se basa en Java SE. Java EE proporciona una API y un entorno de tiempo de ejecución para desarrollar y ejecutar una aplicación a gran escala.

¿Qué habilidades tienen los desarrolladores de Java?

Estructuras de datos

Todos los desarrolladores, independientemente del nivel de experiencia, deben tener una comprensión muy sólida de las estructuras de datos básicas (String, Array, List, Map, Set, Vectors y Matrix), ya que son los bloques fundamentales de la programación.

Programación orientada a objetos y patrones de diseño

OOP es, con mucho, el paradigma de programación más común utilizado en la industria de TI. Permite construir un programa manteniendo la estructura de entidades como en la vida real, lo que lo convierte en una buena manera de modelar y organizar aplicaciones muy grandes.

Los patrones de diseño son estrategias independientes del lenguaje de programación para resolver los problemas comunes de diseño orientado a objetos. Dado que Java está orientado a objetos, los buenos desarrolladores de Java tienen experiencia en la implementación de patrones de diseño orientados a objetos y pueden estructurar su código de manera efectiva en una forma OO. Deben tener una comprensión y experiencia en patrones de diseño como Singleton, Factory, Iterator, Builder, Object Pool, Fly-weight, Strategy, Visitor, Composite.

Multihilo

Los desarrolladores de Java senior deben tener una buena comprensión de la concurrencia y el multihilo.

JVM y Gestión de Memoria

Los desarrolladores de Java senior necesitan tener un fuerte dominio del tiempo de ejecución y cómo funciona la recolección de basura. Necesitan entender cuándo se asigna la memoria, desde qué contexto y cómo eso afecta la fragmentación del montón. Las fugas/errores de memoria son comunes, especialmente en aplicaciones intensivas en datos. Necesitan poder leer el código, comprender las vulnerabilidades de la memoria, corregirlas y mejorar el rendimiento.

Necesitan estar familiarizados con los diversos algoritmos de recolección de basura y cómo usar los analizadores de rendimiento (profilers). Los desarrolladores senior deben saber cómo optimizarlo y cuándo se activa.

SQL

Casi todos los desarrolladores de Java necesitan conocimientos de bases de datos. Incluso si son desarrolladores junior, deben tener una base sólida de los conceptos básicos de SQL: consultas, joins internos y externos, agregaciones, joins, disparadores (triggers), cursores, etc.

Bibliotecas y frameworks

Java no funciona de forma aislada, sino que está respaldado por un fuerte ecosistema de bibliotecas y frameworks. Dependiendo del rol, los desarrolladores de Java necesitan trabajar con Struts, Spring, Hibernate, Gradle, Maven, Ant, JUnit, Spock entre otros. Preguntar a un desarrollador de Java con qué frameworks ha trabajado anteriormente da una comprensión razonable de cuánto tiempo ha dedicado a trabajar en Java.

Algoritmos

Dependiendo del rol, los desarrolladores también podrían requerir habilidades algorítmicas.

Habilidades de comunicación

A menudo, la diferencia entre un desarrollador fuerte y un desarrollador promedio es la de las habilidades de comunicación. Los desarrolladores deben ser capaces de comunicar sus ideas y de trabajar y orientar a otros desarrolladores.

Además, si un trabajo implicaba redes o aplicaciones distribuidas, necesitarían conocimiento de protocolos como IP, HTTP, TCP, FTP, UDP, Sockets, RMI y RCP.

Para un rol que implica trabajar en la interfaz de usuario de Java, el candidato debería haber trabajado con Applets y frameworks como Swing, SWT, AWT o JavaFX.

Si el trabajo está relacionado con aplicaciones web basadas en Java, el candidato debe ser bueno en:

  • JSP / Servlets
  • Arquitectura orientada a servicios / Servicios web – SOAP / REST
  • Tecnologías web como HTML, CSS, Javascript y JQuery
  • Frameworks web como Struts / Spring
  • Lenguajes de marcado como XML y JSON

El ecosistema de Java se está expandiendo rápidamente: también deberían estar dispuestos a salir de su zona de confort, aprender nuevas tecnologías y aceptar desafíos.

¿Es una certificación Java representativa de las habilidades?

La certificación oficial de Oracle Java certifica a los desarrolladores en habilidades de Java. La certificación representa que el candidato tiene un conjunto básico de habilidades que le permitirían desarrollar software Java. Hay 2 niveles de certificación.

Oracle Certified Associate (OCA): Esta es la certificación de nivel inicial. Evalúa la comprensión fundamental de Java y los conceptos básicos de programación. Evalúa los fundamentos del lenguaje (tipos de datos, variables, arrays, clases, bucles, métodos, excepciones) y algunos temas más (casting explícito, narrowing implícito, autoboxing, clases anidadas, POO, polimorfismo, herencia, clases e interfaces abstractas y APIs para tratar colecciones, cadenas y objetos de calendario).

Oracle Certified Professional (OCP): Esta certificación exige un mayor nivel de conocimiento y habilidades en Java. Las preguntas evalúan temas más avanzados como patrones de diseño, E/S, multi-hilo, concurrencia, JDBC, etc. Esta certificación generalmente representa al menos algo de experiencia práctica con Java.

¿Cómo evaluar las habilidades de Java?

Evaluar a los desarrolladores es complicado, ya que se estima que el 85% de los candidatos mienten en su currículum.

Los reclutadores suelen utilizar pruebas de evaluación online como el Java Online Test para realizar la primera ronda de selección y preseleccionar al 20% de los candidatos más cualificados que pueden presentar a los gerentes de contratación/clientes.

Aquí tienes algunas preguntas de ejemplo de Java, puedes incluir preguntas similares en tu prueba de programación para evaluar las habilidades relevantes en el trabajo en lugar de los conocimientos teóricos. Y aquí tienes una guía rápida sobre cómo configurar una prueba de programación eficaz.

Cada vez más empresas se están pasando a las pruebas de programación para evaluar las habilidades de Java. Si no has utilizado una prueba de programación antes, aquí te explicamos cómo funciona:

  1. Configuración de la prueba: Puedes usar una plataforma de evaluación de habilidades como Adaface para configurar la prueba de programación o puedes configurar una prueba de programación manualmente. Si solo tienes 3-5 candidatos a los que quieres evaluar y es un caso de uso único, configurarlo tú mismo podría ser una buena idea, ya que no tienes que perder tiempo investigando las diferentes herramientas y eligiendo. Sin embargo, esto puede llevar mucho tiempo cuando tienes cientos de candidatos porque tú/tu equipo de ingeniería tendrían que evaluar manualmente las soluciones de cada candidato. Además, es posible que no tengas experiencia interna para evaluar las habilidades de Java. Aquí es cuando entra en juego el uso de una herramienta de evaluación de habilidades de terceros. También puedes combinar la prueba de Spring, la prueba de Hibernate, la prueba en línea de JavaScript, etc. para crear una prueba personalizada para tu puesto.
  2. Invitar a los candidatos a realizar la prueba: Una vez que hayas configurado la prueba, puedes invitar a los candidatos que se postulen a completarla. Todas las plataformas de evaluación tienen la función de invitar a los candidatos desde el panel de control.
  3. Evaluar y entrevistar: Una vez que los candidatos completan las pruebas de programación, debes actuar rápido y entrevistar a los desarrolladores de software que obtienen buenos resultados en la evaluación.