Buenas y ¡MALAS! experiencias con Tech Tests

Buenas y ¡MALAS! experiencias con Tech Tests
Imagen representativa de cómo me siento haciendo "retos técnicos".

Tengo un trabajo estable (por los momentos, uno nunca sabe) en una compañía que nos ha tratado bastante bien, pero nunca está de más mirar otras oportunidades. Incluso, estoy donde estoy justamente por eso, por mirar qué hay más allá del horizonte. Y si, sé que lo último sonó muy sentimental, pero el hecho es que si hubiera esperado que alguna oportunidad o algún evento se moviera sólo o sucediera espontáneamente donde estaba antes, tal vez nunca hubiera tomado o visto si quiera esta oportunidad donde he aprendido más de lo imaginado y me han dejado experimentar y probar nuevas tecnologías, siempre en busca innovar.

Ahora, como les venía contando, he visto unas ofertas bastantes buenas, donde por primera vez siento que cumplo los requisitos:

  • Experiencia mayor a 5 años en alguna tecnología.
  • Haber trabajado o conocer de servicios de cómputo en la nube.
  • Soft-skills que he madurado completamente.

Antes, cuando me presentaba, no era nunca la primera opción porque no cumplía con la experiencia, pero trataba de compensarlo con un rápido aprendizaje y demostrar unas ganas increíbles de sacrificarme para cumplir con sus objetivos, siempre estudiando mucho más allá de lo que pedían en los requisitos.

Pero ahora que la experiencia me ha quemada bastantes pestañas, he aprovechado para presentarme a uno que otra postulación, y como este es mi blog, quiero expresar mis buenas y malas (¡súper frustrantes!) experiencias. Ok, seré sincero, les hablaré de 1 experiencia buena que tuve y otra mala (muy mala). No se si esto es deshago, o tal vez quiero dejar saber a los demás o a mi futuro yo de cómo prepararse para afrontar estas situaciones.

TLDR; Quiero redactar acerca de mis experiencias en entrevistas y pruebas tech para oportunidades de trabajo en las que me he presentado, de manera que pueda dejar por acá algo de la frustración (todos sabemos lo negativo que es el rechazo, no importa sobre qué tema sea) y si es posible, que esas empresas puedan ver el impacto que generan, lo mal que nos hacen sentir, los errores que están cometiendo para seleccionar personal y puedan cambiar su proceso en lo posible, pero también dejarles saber como otras compañías si parecen entender que tratan con seres humanos y tienen muy bien planteado qué hacer y retos poner para sacar lo mejor de uno durante las entrevistas y pruebas.

NOTA: Ahora, sé que no soy experto en selección y no tengo la teoría o el know-how, pero quédate conmigo en esta lectura y dime si de verdad estoy interpretando mal lo sucedido o de verdad estas empresas no tienen ni la menor idea de las pruebas de selección que están poniendo a sus vacantes.

Buena experiencia: Sentí que di lo mejor de mi y más que una entrevista, me dieron la oportunidad de lucir mis conocimientos

Mi última experiencia, o mejor dicho, el último proceso de selección que presenté fue muy bueno y me sentí cómodo. De todas maneras también tengo sentimientos negativos porque, spoiler alert: no quedé seleccionado; ese rechazo me hizo sentir mal, pero igual les contaré que siento que fue bueno para mi salud mental.

NOTA: Si quieres leer mi mala experiencia y saber quién fue que me hizo sentir mal y no tengo problemas en decir su nombre acá, podemos adelantarnos o scrollear hasta la sección 'El "proyecto demo" más estúpido...', la segunda parte de este post.

¿Cómo fue el proceso y qué tanto me preguntaron?

Todo empezó con una oferta en LinkedIn (no se en qué otro sitio uno consigue ofertas de trabajo hoy en día) y envié el correo con mi hoja de vida. No pasó mucho tiempo para indicarme que próximamente, otra persona que no es la del correo, se iba a comunicar conmigo, por lo que supongo que una persona mira y "aprueba" hojas de vida y otra hace la primera entrevista.

Al cabo de un par de días me contactan, me preguntan si tengo un espacio para hablar de 30 mins, y llega el momento: una entrevista simple de mis estudios y mis experiencias, nada muy profundo y sólo una corrobación de datos. Incluso me preguntaron sobre mis experiencias como Ingeniero Mecánico, lo cuál es inusual en este campo de la informática. No faltaron las 2 preguntas en inglés para saber si decía mentiras o la verdad acerca de mi nivel, por lo que respondí todo y me sentí bien, aunque mi esposa dice que debo mejorar mi pronunciación.

Al final de la llamada me indican que recibiré un correo con una pequeña prueba a realizar. Esto de pruebas en LeetCode o TestGorilla es bastante molesto. Muchas empresas se han mudado a esta modalidad y dejan toda la responsabilidad en ellas, lo cual siento que no es una fuente confiable de capacidades de la persona a evaluar, ya que solo reflejan si la persona sabe algún método eficiente para hacer alguna lógica o algoritmo, y no el cómo afrontar y resolver problemas. Pero lo que me impactó es que esta prueba fue super corta, 2 preguntas y 1 desarrollo de código que literal era súper sencillo.

Entonces le vi sentido a la prueba: no es para dejar todo en su responsabilidad y de aquí seleccionar al mejor programador (al que se memorizó todo de YouTube), sino descartar esos que de verdad se están presentando sólo por presentarse.

Finalicé la prueba y al cabo de 1 día llegó un correo para una segunda entrevista, que va a tener un tono más técnico, y que adicional los ayude con unos datos míos. El correo llegó con otra sorpresa, no sólo me pidieron mi experiencia y mi rol, sino que nombrara todos los proyectos en los que he trabajado, junto con su Tech Stack y asignación de equipo. Un poco laboriosa esta tarea ya que era recordar en detalle todo lo que había hecho.

Avisé que iba a tardar más de lo esperado y para mi sorpresa, respondieron en un tiempo considerable (creo que en 2 horas) indicando que no había problemas, que tenía chance hasta un par de días antes de la otra entrevista y que agradecía la comunicación (creánme, yo también).

Llegó el día de la entrevista, y más o menos lo que imaginaba: me entrevistaba alguien con bastante experiencia en programación y me hacía preguntas pre-formuladas para saber si conocía o no. Bien, acá empieza todo a decaer. Soy un programador auto-aprendido o self-thought programmer, lo que significa que aprendí por mis propios medios y no a través de métodos tradicionales. Esto traduce que conceptos básicos o definiciones teóricas, normalmente me las salto o las desconozco porque simplemente sé como funcionan en la práctica y sé que funcionan así y punto. No me fue del todo mal, pero les dejaré el resumen (que era para una entrevista para un rol en Node.js):

  • "¿Sabes qué es el Event Loop y lo puedes definir?" → Esto lo respondí bien, pero necesito aprenderlo o saber definirlo en mejor detalle.
  • "¿Sabes qué son bases de datos SQL y NoSQL?" → También se bastante de esto y creo que me lucí acá.
  • "¿Cómo funcionan las promesas en Node.js?" → También sin mucho inconveniente, pero me falta mejor definición técnica.
  • "¿Cómo funciona el async/await en Node.js?" → Parecido a las promesas, pero obviamente resalté las diferencias.
  • "¿Qué es un REST API?, ¿Qué significa cada palabra o acrónimo?, ¿Cómo está compuesto una llamada de este tipo?" → Acá empecé a salir mal. Sé cómo funciona y cómo se usa, pero no puedo responder bien cómo se define técnicamente.
  • "¿Puedes nombrarme los Patrones de Diseño o Design Patters de JavaScript? → Primera respuesta totalmente errónea o que no sabía, de verdad creo que esto me lo he saltado en mi aprendizaje.
  • "¿Puedes explicarme la diferencia entre programación funcional y programación orientada a objetos?" → Otras preguntas donde no tenía la respuesta, simplemente salí mal.

Habían muchas otras preguntas, pero vamos a dejar esta lista hasta acá. Uds. creerían que iba a salir bien tomando en cuenta que el grueso de las preguntas y otras de servicios en la nube me iban a dejar bien parado, y más aún tomando en cuenta que el feedback del entrevistador es bueno.

¿Y el resultado final?, ¿Me seleccionaron?

Lamentablemente, al día siguiente, recibí el correo con que mi postulación llegaba hasta ese punto y agradecían mi tiempo y compromiso. Se que lo estoy poniendo acá en simples palabras, pero este proceso es uno de los que más fuerte me ha pegado a mi autoestima, a mi ego y mi ser; de verdad lo recibí mal. Y pasé todo el día deprimido, perdón esposa, perdón compañeros.

Decidí preguntar, uno nunca sabe, y de nuevo, en menos de 2 horas, el chico encargado del proceso de selección, el de la entrevista sencilla, me dejó saber que en realidad salí bien, que sólo me quedó por mejorar "JS Design Patterns" y "Functional Programming", pero decidieron ir por otros postulantes con mejor resultado que yo para la siguiente fase.

Feedback recibido acerca de mi rendimiento en la última entrevista técnica.
Leyendo esto de nuevo, creo que es un buen feedback, no me hace sentir "tan mal".

¿Por qué creo que fue buena la experiencia?

Creo que fue bueno porque en ningún momento me hicieron sentir mal por no saber algún tema o no cumplir, simplemente me dijeron que habían mejores postulantes, y creo que es una respuesta formal y bastante amigable (no sé que tan cierto sea, pero la sentí sincera).

Pero sobre todo siento que fue buena porque no fue una prueba tonta o el despliegue de un "proyecto demo" (¡Uy! ya vamos a hablar de este tipo de pruebas en la mala experiencia) para demostrar mis habilidades, fueron unas pruebas y preguntas técnicas para descartar y filtrar de forma correcta, incluso si no sabía la definición técnica, el evaluador me dice que lo podía decir con mis propias palabras y la valía, sólo que de verdad esos temas que dije se me van mucho de las manos (al menos el origen y el porqué se usan).

También siento que fue buena porque me deja un roadmap sincero para seguir mejorando e intentando, cosa que veremos que los demás no dejan claro. Ya sé cuáles fueron mis puntos débiles y sé que voy a hacer para mejorar, pero continuemos con nuestro siguiente tema, qué es donde quiero dejar toda mi frustración.

El "proyecto demo" más estúpido que he hecho, la evaluación más sin sentido, sin dirección, sin explicación, sin respuesta a dudas oportuna y el feedback más mentiroso que haya visto

Como les dije, acá es donde quiero descargarme, así que empecemos. Nombre de la empresa: Alegra, ofrecen un SaaS para solucionar temas de contabilidad a otras empresas (B2B).

¿Cómo fue el proceso?, ¿Por qué no lo vi venir antes?

Esto sucedió antes que la buena experiencia, que para el momento de esta redacción, es la última que entrevista que he realizado. Fue muy parecido, vi una oferta, vi que cumplía y me presenté. Al poco tiempo me escriben y creo que en este caso me envían un enlace para agendar la próxima llamada.

También que la otra, una entrevista de experiencias y conocimientos, pero muy por encima, ya que la persona entrevistando es de perfil administrativo, entonces no sabe mucho de tecnicismo, de cómo es esto de la tecnología. De nuevo, un par de preguntas en inglés y todo bien por acá. Se termina la llamada y me indica que me va a llegar un correo con una pruebita a realizar.

Ok, nada mal, una prueba en TestGorilla. Me envían el enlace, la hago, y acá empiezan las cosas negativas, no tengo respuesta ni al siguiente día ni a la siguiente semana. Le escribo un correo a la chica de selección que me hizo la entrevista y nada, sin respuesta por un mes completo.

Para este momento ya había dejaron como terminada la prueba. Probablemente había salido mal o ya habían seleccionado a la otra persona (sinceramente creo que no me había ido mal). Pero al cabo de un mes me llegó un correo felicitándome e indicando que podía continuar con la segunda fase que era hacer un reto técnico.

No recuerdo si tuvimos una segunda llamada o no, pero esta vez le mencioné a Andrea, la seleccionadora, que justo esta semana era mi mudanza y probablemente no iba a tener mucho tiempo el fin de semana para hacer la prueba, pero iba a hacer mi mayor esfuerzo. Esta vez si me respondió y me dijo que no había problema, que avisara y con gusta me aplazaban el momento de la entrega.

Bueno, al menos me respondieron eso. Listo, hora de revisar la prueba: me pedían hacer un pequeño software para una situación ficticia donde quería que usara mis conocimientos en desarrollo de una solución en microservicios. Viendo la prueba por encima, uno podría pensar que no tiene nada malo, pero acá les cuento mi opinión de la misma luego de leerla a detalle:

  • Algunos errores de redacción que confunden el cómo hacer o definir ciertas lógicas.
  • No indican qué tipo Patrones de Diseño de Arquitectura (req/resp o pub/sub).
  • No piden pruebas unitarias o de integración (detalle más adelante de porqué no se implementó).
  • Piden desplegar el aplicativo por sus propios medios. La mayor estupidez del mundo, uno incurriendo a gastos porque ellos no son capaces de desplegar un servidor para esto, pero no importa, existen algunos servicios gratuitos (con sus grandes limitaciones) que podemos usar.
  • Piden que la solución soporte peticiones masivas, pero son tan estúpidos para indicar que la dependencia del rendimiento es de la infraestructura en vez del código y capas. O sea, yo apliqué una cola de mensajes o Queue (aparte del Message Broker para la comunicación de servicios) para demostrar que conozco sobre estas implementaciones para estos problemas, pero ellos esperaban que pagara un servidor de súper alto rendimiento de múltiples núcleos y mucha RAM. De nuevo, que requisito tan idiota en la vida.
  • El mayor requisito de desarrollo, el principal que decida por donde iniciar o qué framework elegir, literal es la última línea del documento dentro del título "Consideraciones" (título que indica que son apenas una observación adicional).
Captura de pantalla de la última resaltando dónde hay un requisito principal mal ubicado en la sección de "Consideraciones".
El requisito principal del "proyecto demo" dejado como última línea en una sección simplemente de observaciones o consideraciones.

De nuevo, una total estupidez de redacción. ¡Este último texto debe ser la primera línea de toda la prueba!

Por culpa de ellos debo pedir una semana adicional

Ok, decidí comunicarles este pequeño detalle, ya que todo mi aplicativo estaba en Nest.js, y este framework no es considerado "Nodejs puro". Por suerte, luego de un par de correos (sí, más de uno porque no me respondían) me dicen que si, que puedo tomarme un tiempo adicional para ello.

De inmediato empiezo a trabajar en la traducción a Node.js puro con Express, pero tomen en cuenta que este no es un trabajo fácil y requiere un esfuerzo. De repente no el mismo esfuerzo de crearlo desde cero, pero es un desgaste adicional al primero que tuve, porque si pueden leer la prueba, piden un demo que tenga 3 microservicos (4 en total si tomamos en cuenta el API Gateway).

También es algo desmoralizante trabajar en algo que ya has resuelto, pero bueno, otra semana más de acostarme hasta tarde (soy un adulto funcional con responsabilidades fuera de mi horario laboral), pero se logró, y a que no adivinan: Resulta y acontece que el texto de la prueba estaba incompleto y deciden enviarme un texto corregido con tareas adicionales... xD!

¡¿Qué?! O sea, ¿Debo acomodar mi proyecto ya reacomodado a los nuevos requerimientos de la prueba?

Si, debo ajustar la prueba, y este error recae en uno de los primeros puntos mencionados: la prueba no tiene un definición a detalle o no saben qué es lo que quieren ver o medir. Estos son errores humanos y es entendible, pero lo que no es entendible es que uno tenga que pagar en vez de ellos, eso está completamente mal, ellos son los que deberían tomar la prueba con los requisitos como están en vez de pedirme más esfuerzo para ajustarme a ellos.

Pero no importa, al menos no es un cambio radical, pero si me piden cosas nuevas como añadir pruebas unitarias, que no fueron añadidas por tema de tiempos, esfuerzos y lo principal, en ninguna sección mencionaron esto o que era parte de la evaluación, pero bueno, nada que no se pueda hacer.

Y casi una semana adicional más de esfuerzos y listo, pude terminar la prueba. ¿Saben qué es lo peor? Que luego de unos correos indicando que estaba usando servicios gratuitos (Render + Vercel + Supabase como excelentes servicios), casi de inmediato como si ya lo tuvieran redactado, me envían un correo indicando que no pasé esta fase y me dan unos puntos a mejorar sacados de ChatGPT.

Esto es lo que más me causó odio, rabia y frustración. La decisión ya estaba tomada, y la justificación era sacado de un texto de ChatGPT donde me indicaron que "debo mejorar" en aspectos que ni siquiera pidieron. Por ejemplo, me piden que mejore en "DevOps y Automatización" añadiendo CI/CD Pipelines y que usara tecnologías como Terraform. Si uds. querían evaluarme en Terraform, era solo cuestión de pedirlo (ni en el Job Description ni en la prueba estaba este requerimiento).

Pero no se preocupen, acá les dejo el texto que me dejaron y mi respuesta (claro que iba a responder, estaba furioso).

Como ven, no podía quedarme callado, tardé 1 hora en escribir todo el texto y en responderles, porque de verdad es un correo bastante ofensivo.

Entonces, ¿Si fue una mala experiencia con Alegra?

¡Claro que si! De verdad no se si es parte de la empresa, del área de selección, de los evaluadores, o de la reclutadora en específico, pero siento que algo está mal o algo fallo. Me gustaría pensar que así como tomé estos eventos para fortalecerme en conocimientos (y como obtener paz mental), espero que si alguien de por allá lee esto, también puedan fortalecer su proceso.

Desenlace: qué me llevo de estas experiencias y qué les puedo dejar

En términos generales, me llevo el conocimiento de cómo pueden ser las próximas entrevistas, qué me pueden preguntar y qué conceptos debo mejorar. Por ejemplo, mi última buena experiencia de verdad me deja motivado a entender las bases de programación web, al menos las de Node.js y JavaScript/TypeScript.

Y les puedo dejar esta experiencia para que, si en algún momento les sucede una parecida (ya sea buena o mala), de pronto puedan tomar la misma iniciativa de escoger los puntos a mejorar para una próxima vez (y tal vez escribir un post acerca de su frustración hacia alguna en específico, no se).

Si quieren conocer las pruebas que dejaron, practicarlas para su futuro, guíarse en qué podrían hacer o qué no deben hacer (o incluso, para presentarse a esta misma), se las dejo por acá en la siguiente lista de enlaces.

También, no es tema mío cómo estén protegiendo sus procesos, pero si sí desean que un futuro sean más segura y no la puedan compartir fácilmente, les voy a dejar una sugerencia de cómo podrían hacerlo de mis propias palabras. Es más, se las regalo (me pueden brindar un café luego):

Como empresa conformada, con riesgos asumidos y disposición de recursos para obtención de resultados, pueden habilitar un repositorio privado desde su cuenta en GitHub (o GitLab, BitBucket, Azure DevOps, o lo que sea) y conectar un CI/CD Pipeline directamente a un servidor en su proveedor de cómputo en la nube (AWS, Azure, Digital Ocean, GCP (?)). De esta manera se aseguran que el repositorio no pueda quedar publicado, que los participantes no tengan que gastar en sus propios recursos, y ajustar el escalamiento vertical (más CPU o más RAM) a cómo uds. lo deseen.

De esta manera uds. controlan el ambiente y la información que se manipulará (repositorio, requisitos, etc).

Pero en fin, no quiero agobiarlos más. Después de escribir mi experiencia me siento un poco mejor y sigo teniendo mi motivación para continuar mi preparación continua, ya sea que quiera seguir donde estoy o quiero buscar campos más verdes. De todas maneras si quieren que hablemos de algún tema distinto o tiene alguna recomendación, sólo déjenme saber en un comentario o en mi perfil de LinkedIn, y con mucho gusto lo discutimos. ¡Que tengan muy buena semana!