General
     

Palindrome genético – Un problema de desafío de programación

Laptop with software development editor open
Los desafíos de programación pueden ser divertidos.

Al contratar desarrolladores de software, una técnica común para evaluar su aptitud es el “desafío de programación”. Estos vienen en una variedad de formas, pero todos generalmente implican un ejemplo por etapas donde el candidato tiene la tarea de resolver algún tipo de tarea donde existen múltiples soluciones. A continuación, se califica al candidato (en ningún orden en particular) sobre su capacidad para:

  • Encontrar cualquier solución
  • La rapidez con la que encontraron su solución
  • Cuán óptima fue la solución que encontraron

Este tipo de desafíos a menudo son muy subjetivos, y dependiendo de la naturaleza del problema también pueden tener sesgo. Un problema de desafío que es común, al menos dentro de ciertos dominios, puede sesgar los resultados de tal forma que los candidatos de ciertos orígenes son favorecidos o desfavorecidos. Por esta razón, siempre intento usar problemas de cambio que son tanto mi creación única, como para limitar también su uso. Esto último, porque con demasiada frecuencia, los reclutadores interrogan a los candidatos después de una entrevista. Personalmente he visto casos en los que los candidatos de trabajo posteriores de un reclutador sin escrúpulos aparentemente ya son conscientes de las preguntas que voy a hacer antes incluso de hacerles – ¡no genial!

Debido a esto, de vez en cuando retiro una pregunta. Hoy retiro una de esas preguntas, y en el proceso me gustaría compartir esto con ustedes. La introducción al desafío normalmente va algo como esto:

En este punto de la entrevista, me gustaría que trabajaras en una muestra de programación. El propósito de esta tarea no es medir qué tan bien memorizas fragmentos esotéricos de información, sino más bien simular cómo podrías ir resolviendo un problema real en tu trabajo diario. Debido a eso, no tengo ninguna expectativa de que haya memorizado todas las funciones estándar, sus firmas, etc. En tu trabajo diario hacías cosas de Google, o le pedías ayuda a un compañero de trabajo, así que te animo encarecidamente a hacer lo mismo. Google lo que necesita y pida aclaraciones o asistencia si es necesario. Les advierto, sin embargo, que no encontrarán la solución a este problema en Internet, ya que es una solución de mi propia creación, por lo que les pido que no intenten eso. Del mismo modo, no puedo prestar asistencia directa para encontrar la solución, simplemente aclaraciones solamente.

Por último, antes de empezar, quiero recordarles que el propósito de esto es también divertirse. Nos divertimos creando este desafío, y es mi sincera esperanza que también te diviertas mientras lo resuelves. Y, con eso, te presento un problema que me gusta llamar “Palindrome genético”. Puede programar esto en cualquier idioma que elija. He escrito una breve instrucción en los comentarios, pero hágamelo saber si necesita alguna aclaración adicional.

El problema:

En este punto, el candidato normalmente revisará estas instrucciones durante algunos minutos. Aunque ciertamente no es definitivo, parece haber una correlación entre las preguntas formuladas en este momento y el éxito del candidato. He visto a los candidatos ir de una de tres maneras en este punto:

  1. No hacen preguntas, e inmediatamente comienzan a desarrollar
  2. Hacen un montón de preguntas, y aparentemente repiten la misma pregunta de múltiples maneras
  3. Hacen algunas preguntas concisas y empiezan a desarrollarse.

De ellos, el último grupo – aquellos que hacen sólo un par de preguntas puntuales y se ponen a trabajar – son más propensos a ser aquellos que ambos completan el desafío a tiempo, y también con un resultado correcto. La categoría media – aquellos que aparentemente están confundidos – son los más propensos a no terminar a tiempo, y haber hecho pocos progresos significativos para cuando termine el tiempo asignado.

Por último, el primer grupo – aquellos que no hacen preguntas, y saltan directamente – son más a menudo aquellos que terminan a tiempo, pero obtienen la solución completamente incorrecta.

Interesante correlación.

Con eso, los invito a probar este desafío. Tienes una hora, o menos, para completar esta tarea. En un futuro post compartiré mi solución y discutiré la mecánica del problema. Buena suerte.

About Jason

Jason es un experimentado emprendedor y desarrollador de software experto en liderazgo, desarrollo móvil, sincronización de datos y arquitectura SaaS. Obtuvo su Licenciatura en Ciencias de la Computación de la Universidad Estatal de Arkansas.
View all posts by Jason →

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *