Entrevista de código
Símbolos
- ✅ = Hacer
- ❌ = No hacer
- ⚠️ = Situacional
Consejos generales para una entrevista de código
¿Que hacer antes de la entrevista?
Sobre los problemas
- ✅ Crea una lista con diversos ejercicios.
En el peor caso tu entrevistado ya habrá previamente resuelto el problema que tenías preparado,
por lo cual tener un repertorio de problemas es ideal para afrontar esta situación, pueden ser
3 problemas inicialmente y con el paso del tiempo puedes incrementarlo, esto también ayudará
a que no pierdas tiempo buscando otro problema y puedas iniciar tan rápido como sea posible la
entrevista. Tu problemario lo puedes crear utilizando diferentes plataformas. Te recomendamos
ampliamente el uso de leetcode como plataforma para resolver y buscar
problemas. Adicionalmente si quieres filtrar de una forma bastante rápida los problemas que
puedes utilizar puedes acceder al servidor en discord cscareers.dev
y entrar al canal #leetcode-bot
en el cual podrás obtener una lista de problemas filtrados por
compañía escribiendo !problems <company>
.
- ✅ Busca diferentes soluciones para los problemas que hayas recopilado.
Recuerda que hay una infinidad de posibles soluciones para resolver un problema. En el caso de que estés utilizando leetcode es recomendable revisar la sección de discusión en la que podrás revisar soluciones de diferentes personas. Es altamente probable que encuentres el uso de un algoritmo, estructura de datos, etc. completamente diferente a lo que habías pensado, o bien, con la que solucionaste el problema. El conocer una gran variedad de soluciones te permitirá encaminar a tu entrevistado a una solución correcta.
- ✅ Selecciona problemas de diferentes temas.
En el caso de que estés utilizando leetcode puedes revisar los temas relacionados a los problemas solo debes dar click a la pestaña "Related Topics", de esta forma puedes evitar repetir temas sin querer.
Sobre ti
- ✅ Prepara una breve introducción.
No es necesario que prepares algo muy complejo, podrías mencionar:
- ✅ Tu nombre.
- ⚠️ Si deseas simular aún más una entrevista real, dónde trabajas.
- ⚠️ En qué área trabajas.
- ❌ Mencionar algo que esté clasificado como confidencial.
Sobre el entrevistado
- ✅ Revisar el curriculum/resume
Solicita con anticipación el curriculum/resume del entrevistado, te permitirá saber un poco sobre lo que ha hecho, que conoce y que no conoce. También podrás elegir una forma más apropiada el problema que le pedirás que resuelva.
- ⚠️ Revisa si existe retroalimentación de entrevistas anteriores
Si el entrevistado ya ha tenido entrevistas anteriormente con la retroalimentación podrás saber qué puntos debes de tomar más en cuenta, esto con el fin de conocer si el entrevistado ha mejorado comparado con entrevistas previas.
Preparándote para entrevistar
- ✅ Prepara todo lo necesario
Si harás uso de un editor de código colaborativo, un documento de texto online o alguna otra herramienta ten a la mano todos los enlaces y herramientas que utilizarás. En caso de que requieras de algún editor de código online te recomendamos utilizar:
- ⚠️ Espera un tiempo razonable a que llegue el entrevistado.
Considera que podría ocurrir algo inesperado a tu entrevistado y podría llegar tarde o incluso no asistir a su entrevista de prueba, recomendamos esperar 10 minutos por si ha ocurrido algo de forma espontánea.
- ⚠️ Avisa si te ocurre algo
Al igual que al entrevistado podría surgirle algo inesperado tú podrías estar en el mismo caso. Si esto sucede avisa a tu entrevistado que no será posible que hagas la entrevista de prueba y, si es necesario, reagendar la entrevista es una buena idea.
- ⚠️ Herramientas específicas
Si quieres que la experiencia de la entrevista de prueba sea lo mas similar a una entrevista real puedes utilizar las herramientras y/o plataformas que suelen utilizar las compañías a la hora de realizar las entrevistas técnicas.
Durante la entrevista
Todo el tiempo
- ✅ Retroalimentación
Debes de escribir notas sobre el desempeño del entrevistado, para esto puedes utilizar feedback-helper o alguna otra herramienta de tu preferencia
- ⚠️ Comunicación
Si es necesario debes incentivar la comunicación entre tu y el entrevistado ya que debes saber que es en lo que está pensando y en caso de ser necesario podrías darle alguna pista sobe como resolver parte del problema o bien ayudarlo a pensar en diferentes aspectos que pasó por alto durante el análisis.
Introducción
- ✅ Presentate
Recuerda que anteriormente preparaste una breve presentación sobre ti, es el momento ideal para utilizarla.
- ✅ Pídele al entrevistado que se presente
Evalúa lo que mencione tu entrevistado, toma especial atención si menciona proyectos, que hizo en sus proyectos, que resolvió, si optimizó algo, que tecnologías utilizo, etc.
Entrevista técnica
- ✅ Preparando el terreno
Ahora es momento de que tu entrevistado solucione un problema técnico, primeramente envía el enlace de la herramienta/plataforma que utilizarán para escribir el código.
- ✅ Introducción al problema
Brevemente presenta el problema al entrevistado mencionando de forma general que hay que hacer.
- ❌ Restricciones
No des las restricciones del problema en la introducción, el objetivo de la entrevista es conocer el proceso de pensamiento del entrevistado. El entrevistado debería preguntarte sobre el problema para tener una idea general de como debe resolverlo.
- ⚠️ Ejemplos
Si el problema es bastante complejo puedes proveerle al entrevistado un ejemplo sencillo de lo que debería hacer el problema, es decir si recibes como entrada cierta información, cual debería ser la salida esperada.
- ⚠️ Soluciones
En caso de que el entrevistado te de una o varias soluciones puedes preguntar si existe algo mejor o bien que solución piensa que es la mas adecuada para el problema y el porqué.
- ⚠️ Pistas
Si tu entrevistado se atasca o no tiene idea alguna de como resolver el problema puedes darle una pista sobre que debería analizar o bien si pasó por alto algo importante del problema.
Hora de programar
- ⚠️ Lenguaje de programación
Si la herramienta que utilizarás para evaluar el código que será escrito para el problema técnico permite elegir la síntaxis pregunta a tu entrevistado con que lenguaje de programación se siente cómodo para plasmar su algoritmo.
- ✅ Código
Tu entrevistado debe de programar la idea con la cual pretende resolver el problema, debes considerar que el entrevistado haga uso de buenas prácticas de programación, considera cosas como identación, los nombres de variables y/o funciones, si el código esta bien modulado (en caso de ser necesario), etc. Si quieres aprender mas sobre buenas prácticas de programación puedes revisar el contenido de los siguientes enlaces:
- ✅ Complejidad
Pregunta a tu entrevistado cual es la complejidad espacial (en memoria) y temporal de su algoritmo. Opcionalmente puedes cuestionar si es posible mejorar la solución.
- ⚠️ Revisar
Pídele a tu entrevistado que revise su código, especialmente si tú detectas un fallo, esto puede darle a entender que hay algo mal. Adicionalmente, existe un concepto llamado guide me through your code, que implica revisar el código pero fijándose detenidamente en cada línea, explicando que hace e inspeccionando que realmente lo escrito cumpla lo que desea hacer.
- ✅ Pruebas
Pídele a tu entrevistado que pruebe el código, esto con la finalidad de verificar que lo plasmado en código concuerde con el algoritmo que pensó previamente. Recuerda que probar no implica ejecutar el código, puede ser simplemente ejemplificar el funcionamiento en el editor compartido.
- ⚠️ Bugs
En caso de que detectes que existe algún bug en su código debes hacerselo saber a tu entrevistado, debes evaluar si resuelve el problema y como lo hace.
Preguntas y respuestas
En esta sección el entrevistado puede preguntar cosas sobre ti, sobre la compañía o cualquier otra cosa, siendo las dos primeras las mas importantes a evaluar ya que demuestra el interés del entrevistado por trabajar en algún lugar específico.
- ⚠️ Respuestas
Dependiendo de ti, puedes o no responder sus preguntas simulando una entrevista real o bien solo puedes darle retroalimentación sobre que tan buenas o malas son sus preguntas.
Sumario
A continuación presentamos un pequeño resumen de lo que debes evaluar a grandes rasgos durante la entrevista técnica, este resumen está basado en coding-signals
- Comprensión del problema
- Clarificaciones
- Solución o soluciones
- Mejora de la solución (si es necesario)
- Análisis de las diferentes soluciones dadas (si es necesario)
- Velocidad de implementación de su solución
- Precisión al implementar la solución (Que tenga pocos bugs y la solución programada funcione adecuadamente)
- Análisis de complejidad
- Dominio del lenguaje de programación utilizado
- Buenas prácticas de programación (Identación, nombres de variables/funciones, etc)
- Que se haya probado el código
- Prueba de casos borde
- Autocorrección (Si detectó algún error que sea capaz de solucionarlo por si mismo)