Ser un Software Engineer se reduce a tener una gran capacidad de resolución de problemas. Y debemos demostrar esa habilidad en la entrevista técnica.

Eliminar ambigüedad

Lo primero que debemos hacer para demostrar nuestra habilidad de resolución de problemas es eliminar la ambigüedad. Nuestro problema técnico comúnmente la tendrá, aunque no lo parezca, y nuestra tarea será hacer las preguntas correctas de clarificación al inicio de la entrevista, ¿qué tipo de entradas debe tener?, ¿debería soportar este caso particular?, ¿debería soportar este caso extremo?, ¿está bien si hago esta suposición?

Lo peor que podemos hacer es empezar a resolver el problema técnico sin hacer ni una sola pregunta. Demuestra que no nos dimos el tiempo en pensar sobre los obstáculos y entender el problema.

Descubrir el problema

Si después de nuestras preguntas de clarificación empezamos a codificar la primer solución que se nos vino a la mente dará la impresión de que no nos detuvimos a entender la dimensión del problema y no consideramos las alternativas.

Así que toma tu tiempo y descubre el problema.

Discutir los trade-offs

Una vez que tengamos una posible solución debemos discutir los pros y cons y hacernos preguntas como ¿cuál es el beneficio de implementar esta solución? o ¿cuál es el riesgo?

Haciendo esto comunicaremos a nuestro entrevistador que somos buenos resolviendo problemas.

Soluciona de forma ordenada

Cuando empecemos a codificar nuestra solución a veces es mejor no empezar desde el inicio, es decir, si en cierto punto de nuestra solución necesitamos implementar algún helper method que no representa algo importante del problema principal podemos comentar a nuestro entrevistador que lo dejáremos expresado, para así continuar con el problema principal y al final regresar a esos helper methods.

También es bueno identificar todas las partes del código que se pueden optimizar para hacer más clara nuestra solución.

Testing

Al finalizar el problema, el entrevistador nos preguntara que tan seguros estamos de nuestra solución, aquí es donde entran los tests, si logramos demostrar y/o implementar una solución robusta de testing, considerando algunos casos particulares, convencerá al entrevistador de que somos buenos resolviendo problemas.