- Se enfatiza la ineficiencia de las take-home assignments en las entrevistas para desarrolladores de software y el problema de la pérdida de tiempo de los candidatos
- Durante el proceso de postulación a Kagi Search, se experimentaron requisitos de tarea excesivamente amplios y ambiguos
- Ante un plan de ejecución concreto propuesto, se vivió la falta de retroalimentación clara por parte del manager y una comunicación ineficiente
- Tras entregar un proyecto desarrollado con gran dedicación, se sintió injusticia por el rechazo sin una razón clara y por cambios en los criterios
- Se comparten alternativas para un mejor proceso de contratación (por ejemplo, revisión de código en tiempo real) y una reflexión crítica sobre las exigencias excesivas en entrevistas con tareas
Introducción
- Una take-home assignment es un método de evaluación en entrevistas para desarrolladores de software en el que se le plantea un problema al candidato para que lo implemente en código y lo entregue
- Esta publicación busca señalar la falta de razonabilidad y el problema de desperdicio de tiempo para los candidatos a través de la tarea y la experiencia reales recibidas al postular a Kagi Search, una empresa que se consideraba de buena reputación
Postulación a Kagi Search
- Se envió el currículum para una vacante de desarrollador backend en Kagi Search
- Los requisitos del puesto eran los siguientes
- Experiencia construyendo sistemas backend
- Dominio del lenguaje Go
- Experiencia escalando y manteniendo sistemas backend de gran tamaño
- Capacidad de colaborar con miembros del equipo, como SRE
- Comprensión de tecnologías de contenedores como Docker
Instrucciones y requisitos de la tarea de entrevista
- Tras pasar el filtro inicial, se recibió un correo con las instrucciones de la take-home assignment
- Tema de la tarea: "implementar un cliente de correo electrónico minimalista inspirado en la terminal"
- Se podía elegir entre formato de terminal o aplicación web
- Funciones básicas para ver y enviar correos
- Libertad para elegir un backend de correo falso o real (IMAP/POP, etc.)
- Solo era obligatorio procesar mensajes en plaintext; no hacía falta rich text
- Entrega del proyecto: repositorio de GitHub, versión desplegada y documentación de instalación
- Había falta de una guía clara y el alcance del proyecto era considerable
- Aun así, debido a la reputación de la empresa, se decidió realizar la tarea
Comunicación con el manager
- Al consultar sobre el alcance claro de la tarea y las funciones adicionales, solo se recibió una respuesta ambigua: “queda a elección del candidato qué más agregar”
- Antes de invertir tiempo y esfuerzo en la tarea, se compartió un plan de ejecución concreto (Proposal) y se pidió respuesta al respecto, pero se avanzó sin recibir retroalimentación especial
Propuesta y planificación de la tarea
- Plan de ejecución:
- Aplicación web basada en Go
- Despliegue mediante AWS ECS Fargate y aplicación de SSL
- Integración con el servicio de envío de correo Postmark
- Funciones adicionales de inicio de sesión y autenticación
- Envío, recepción y visualización de correos en la UI
- Justificación de la elección tecnológica:
- Uso de varias tecnologías relacionadas con un rol backend
- Construcción de un sistema real utilizando herramientas de Infra-as-Code
- Implementación de funciones más cercanas a un servicio real, más allá de una simple integración de API
- Elementos principales implementados:
- Pocketbase (backend/DB), TEMPL (plantillas), Pulumi (IaC), Postmark (servicio de correo)
- Implementación de paginación, inicio de sesión, etc.
- Stretch Goal: estabilidad, como respaldo y recuperación de datos
- Conclusión: se presentó con anticipación una explicación suficiente junto con sus fundamentos, y se esperaba una revisión clara y una respuesta al respecto
Respuesta del manager y problemas de comunicación
- Sin una revisión concreta, solo se recibió una respuesta breve: “propuesta interesante”
- No hubo retroalimentación sobre la pertinencia de la propuesta ni solicitudes de mejora
- Desde la perspectiva del candidato, esto se sintió como una falta de respeto hacia el tiempo y el esfuerzo invertidos
Ejecución del proyecto de la tarea
- Se implementó todo lo solicitado y lo propuesto, invirtiendo una semana completa de trabajo a tiempo completo
- También se entregaron un video demo del proyecto, el repositorio de GitHub y documentación detallada
Notificación de rechazo y retroalimentación recibida
- Tras recibir un correo automatizado de rechazo, al pedir retroalimentación se recibió la siguiente respuesta:
- “Había entregas de candidatos más sólidas”, “la competencia de contratación es intensa”
- Problemas señalados
- Si se prefería una solución simple, eso pudo haberse indicado desde el principio
- Si la propuesta no era adecuada, se pudo haber dado retroalimentación en ese momento
- Incluso después del rechazo, la vacante seguía publicada, por lo que se interpretó no como mera competencia sino como una exigencia de consumo excesivo de tiempo
- Después de la entrega del proyecto, los requisitos se endurecieron aún más, por lo que la solución presentada terminó elevando el estándar
Conclusión y reflexión crítica
- Este tipo de práctica es injusta para muchos buscadores de empleo y puede incluso venir acompañada de amenazas reales a su sustento
- Se enfatiza la necesidad de rechazar o cuestionar las exigencias excesivas de tareas no remuneradas
- Existen mejores procesos de contratación, como la revisión de código en tiempo real, para reemplazar tareas tipo proyecto
- La capacidad real de resolver problemas de desarrollo puede evaluarse mediante revisiones de código asincrónicas o sincrónicas
- Se señala la brecha entre los problemas estilo Leetcode y las exigencias del trabajo real
- Se hace un llamado a mejorar la cultura de agotamiento de los candidatos y evaluación injusta
Propuestas para un mejor proceso de contratación
- Se presentan alternativas, como la revisión de código en tiempo real, para evaluar con más sentido las capacidades de los desarrolladores
- Se insiste en la necesidad de cambiar de un enfoque centrado en resolver acertijos algorítmicos con temporizador a uno enfocado en la capacidad real y la resolución de problemas
1 comentarios
Opiniones de Hacker News
takehome. Este tipo de tareas terminan haciendo perder el tiempo a todos. Si fuera la etapa final del proceso lo entendería, pero usarlas para filtrar postulantes es ineficiente.Reconozco la capacidad del postulante y su pasión por el trabajo. Solo quería aportar una opinión desde un ángulo un poco distinto.
"Desarrollar un cliente de correo inspirado en terminal y hacer una prueba alfa con clientes" es una petición razonable para un ingeniero de una startup en etapa temprana. Aunque haya más especificaciones, gran parte depende del criterio del ingeniero. El postulante parece querer demasiada certeza.
Que tenga curiosidad de antemano por saber qué retroalimentación dará Kagi después de completar la tarea no es una buena señal. No es una situación en la que puedan dar una respuesta definitiva. Probablemente están evaluando cientos o miles de postulaciones.
Si no hacía falta aclarar requisitos, entonces habría sido mejor poner algo como "adivina un número entre 1 y 10" y rechazar a quienes eligieran mal.
No estoy de acuerdo con rechazar a alguien por dedicarle esfuerzo a la tarea y entregar un buen acabado.
Este tipo de tarea ambigua, en la práctica, no es más que otra forma de filtrar por "ajuste cultural".
La cultura de "código primero, retroalimentación después" ha sido de las experiencias más dañinas para mi carrera. Este postulante siguió prácticas modernas de software. (Soy responsable de contratación en una empresa con más de 1000 ingenieros).
takehomeque sí me gustan son las que se pueden completar en 30 minutos, tienen criterios de evaluación claros e incluyen espacio para distintos enfoques y análisis de trade-offs.A mí también me rechazaron en mi última búsqueda laboral por una tarea
takehomeamplia, sin saber qué parte era el criterio de evaluación. Desde esa experiencia desarrollé un rechazo muy fuerte hacia este tipo de tareas.La empresa habría hecho mejor en no dejar que siguiera perdiendo tiempo y terminar la tarea en ese punto.
Ni siquiera tenía funciones de correo muy básicas (como abrir mensajes), y aunque era una postulación para un puesto de backend, en la práctica usó productos externos como postmark y turso, además de que faltaban funciones básicas (formato de texto plano, visualización, carpetas, etc.).
Había funciones accesorias como panel de administración y login, pero faltaban incluso estructuras de datos mínimas como un mapa de headers del correo.
Puede ser un buen ingeniero, pero lo considero inadecuado para ese puesto.
La propuesta
takehometambién me pareció demasiado inusual.Volví a leer el anuncio original y decía claramente "cliente de correo minimalista inspirado en terminal", además de referencias como aerc, mutt y himalaya. Eso es una falla clara de interpretación de requisitos.
Se pedía un cliente de correo en terminal o web app, con funciones básicas, y creo que eso sí se cumplió.
La parte de inspirarse en herramientas de terminal es subjetiva. Si era un puesto de backend, también podría considerarse ineficiente poner tanto énfasis en la UI.
Si al menos se pudiera obtener retroalimentación, serviría para crecer, pero muchas veces ni eso es realista.
Por eso generan tantas dudas este tipo de tareas
takehome. Tanto postulantes como contratadores necesitan respetar el tiempo del otro.takehomepuede ser útil, pero sí o sí debería tener límite de tiempo.Con 2 o 3 horas basta para evaluar a un postulante. Si hubiera habido límite de tiempo, el postulante también habría podido proponer una solución adecuada dentro de ese marco, y habría quedado más claro qué quería la empresa.
Además, la empresa debería indicar con claridad si "cualquier respuesta está bien" o si "esperan la mejor respuesta posible".
La intención de una tarea
takehomepuede variar: pasar una prueba, grado de cumplimiento de la misión, calidad del código, etc.; por eso el postulante puede confundirse.De hecho, corre el riesgo de filtrar justamente a la gente ocupada, la que no tiene tiempo de sobra.
En nuestra empresa simplemente ponemos un problema ETL sencillo y damos un límite de 4 horas.
Incluso orientamos para que no pase nada si no se completa todo, y en el follow-up hacemos revisión de código y tiempo para preguntas.
La verdadera capacidad se puede detectar en esa reunión posterior.
A diferencia de una prueba en vivo, donde todos compiten bajo la misma unidad de tiempo, en una
takehomese puede salir perjudicado por la distinta distribución de tiempo de cada persona.En ese caso, mejor una sesión de código en vivo de 1 hora. Si postulante e entrevistador invierten el mismo tiempo, ambos respetan mejor el valor del tiempo ajeno.
En el video demo solo se ve una web app bastante común. Se pedía explícitamente inspirarse en clientes de correo de terminal ya existentes como aerc, mutt y himalaya.
Me pregunto si se me está escapando algo.
Como la UX propia de los clientes de terminal sigue siendo un área sin una "respuesta correcta", es posible que justo ese punto haya sido uno de los criterios de evaluación.
Creo que si se pidió una tarea, debería haber obligatoriamente una reunión de seguimiento.
Ya usaba Kagi de pago, pero después de esto estoy considerando cerrar mi cuenta.
Si no tienen tiempo ni siquiera para hablar con el candidato, entonces no deberían pedir la tarea desde el principio.
takehomeexigen bastante esfuerzo no solo al postulante, sino también al entrevistador que las evalúa.Después de hacer incluso la revisión, creo que sí existe un derecho a recibir retroalimentación.
Pero en la práctica, cuando eliges a una sola persona entre decenas de postulantes excelentes, ser rechazado no significa necesariamente "te faltó nivel".
Incluso legalmente, una respuesta oficial a "¿por qué elegiste a A y rechazaste a B?" muchas veces termina reduciéndose a buscar defectos.
Varias empresas manejan esto bastante bien.
Cuando el malentendido de requisitos es grande, la discusión misma puede llegar a omitirse.
La empresa quería a alguien autónomo y capaz de fijarse sus propios objetivos.
La ambigüedad estaba ahí para ver la capacidad del postulante de explorar respuestas desde varios ángulos y resolverla.
Como no todas las personas encajan en una empresa orientada a prototipos, algún candidato probablemente pensó 10 minutos y luego construyó en 60 minutos el mejor resultado posible.
Pero para un desarrollador, la capacidad de hacer esas preguntas es una virtud muy importante. Por eso es inevitable esperar más de este método de contratación y terminar decepcionado.
En realidad muchas veces el problema es una explicación ambigua.
Un gran profesor logra que la mayor cantidad posible de gente entienda. Si hay muchos alumnos confundidos, el problema es del autor de la prueba.
Los universitarios no deberían tener que resolver koans como si fueran monjes zen.
Antes Vlad evaluaba personalmente a los postulantes, y las tareas eran de este estilo.
A medida que la empresa creció, parece que ahora otros hacen la evaluación.
Vlad tiene una inclinación tipo HN y quiere trabajar con postulantes que le parezcan "cool".
Por ejemplo, si escribes un documento de diseño largo diciendo "voy a usar Galactor y el proyecto está flop-ready", el efecto será totalmente el contrario.
Cuando piden algo "inspirado en terminal", tienden a esperar detalles reales de apps de terminal, como atajos de teclado y cosas por el estilo.
Se puede discutir si ese criterio es un buen filtro, pero si entiendes ese contexto y tienes la capacidad de pasar, la tarea probablemente te parecerá fácil.
Ojalá Kagi comunicara mejor ese contexto. Es una pena el tiempo perdido, pero espero que encuentres una empresa más alineada con tu forma de ser.
Un equipo sin diversidad puede terminar estancado porque todos chocan con la misma pared.
Creo que este fenómeno es especialmente común en startups, y tiene relación con por qué 9 de cada 10 fracasan.
Creo que una tarea que se califica sin criterios claros es injusta.
Al final no es tan distinta de una tarea implícita de "adivina la respuesta que tengo en mi cabeza".
Da la impresión de que falta consideración por las personas.
No sé si, en una cultura así, todo el mundo tenía que investigar de forma encubierta para enterarse.
Incluso para postulantes "no cool" como yo, sería mejor recibir señales claras y poder pasar rápido a buscar otra empresa.
Por este tipo de carencias en los detalles, dejaría de revisar ahí mismo.
Desde una propuesta de diseño sencilla hasta una tarea de implementación, todo se hacía con un límite de tiempo claro.
Al final no quedé, y no me dijeron una razón específica.
Parece que había demasiados postulantes, pero aun así fue una experiencia que me dejó una huella emocional fuerte durante mucho tiempo. Entiendo cómo se siente el OP.
takehomeconsumen mucho tiempo y aportan poca información.Pero incluso si yo hubiera sido quien contrata, creo que también habría rechazado al autor.
Las startups quieren gente que trabaje con rapidez y pragmatismo.
En el pasado tuve colegas que pasaban días encerrados por su cuenta después de juntar opiniones de los demás, y para entonces los requisitos ya habían cambiado, lo cual no fue bueno para nadie.