Example of a Junior technical test applicable to any language
Kotlin Cola Prioridad Sin Repetidos
Ejemplo de una prueba técnica Junior aplicable a cualquier lenguaje.
El problema
Tenemos un proceso, que tiene un identificador, un nombre y una prioridad. Queremos manejar una cola de prioridad, sin repetidos. Sabremos que un elemento es repetido si tiene el mismo id. La prioridad es de 1 a 9 siendo 9 la más alta. Por otro lado queremos un controlador que nos centralice el proceso de acceso a la cola. Se pide resolver el problema, justificando tu solución y testear las operaciones críticas a nivel de la cola y controlador.
Hazlo en otros lenguajes
Si quieres hacerlo en otros lenguajes, crea un directorio con el nombre del lenguaje y mete el proyecto de tu solución. Es importante que muestres que todo se testea a nivel unitario y usando algún mock. Una vez hecho hazme un pull-resuqetes y pasame el color del logo del lenguaje que quieres que salga en la cabecera ¿Te atreves? ?
Acerca de
Este ejercicio de clase, tiene como objetivo mostrar aspectos de programación para la realización de una prueba técnica.
La idea principal es que puedas resolverlo con cualquier lenguaje de programación. Pero son los sutiles detalles lo que marcan la diferencia. Hay infinitas soluciones. Aunque está centrada en Kotlin, parcialmente tienes un directorio con la solución parcialmente en Java vista en clase. Aunque lo importante es que puedas resolverlo con cualquier lenguaje de programación y sigas los pasos indicados siempre que puedas. No es tanto el qué resuelvas si no el cómo lo resuelvas y lo que expliques, comentarios o técnicas que utilices.
Te dejo algunos consejos.
Antes de programar
Hazte un esquema de cómo vas a sacar la solución. Abrir el IDE y picar sin ton ni son aunque lo tengas claro no ayuda. Empezar a escribir, borrar, corregir, borrar, cambiar, noe stá muy bien visto.
5 minutos de diseño, ayudan a más de una hora de programación.
Haz un repositorio
Al crear el proyecto, crea el repositorio GIT. No se trata de dar con la solución, si no de mostrar todas las habilidades técnicas para el desarrollo de software. Haz commit en cada punto importante. Si te equivocas puedes volver atrás.
Piensa primero en los test
¿Te he dicho que es una prueba técnica? De que me sirve una solución, si no sabemos si funciona bien. Antes de programar piensa y escribe los test, aplica algo de tDD, demostrarás que conoces su filosofía. El ejemplo es suficientemente sencillo para no complicarte la vida. A partir de aquí, crea el código que necesites pasando el test.
Recuerda: Un test también es programar. No se hacen solos ?
Ahora implementa la solución
Mira lo que has avanzado antes de programar:
- Has hecho un diseño, tienes las ideas de qué tienes que hacer.
- Has hecho el repositorio.
- Tienes unos test que te aseguran tu solución.
¿No está mal?
Ahora toca programar. Intenta aplicar todo que conozcas pero de una manera elegante. No meter por meter. Aplica programación funcional y cuestiones de inmutabilidad. Elige y justifica los TDAs que vas a usar. Hay varias formas y todo depende de lo que justifies o expliques. Aplica algunas interfaces, inyección de dependencias de forma manual, algún patrón, y conocimientos de Programación Orientada a Objetos etc.
Como te he dicho, el ejemplo es lo suficientemente sencillo para que lo resuelvas siguiendo tu propio camino. El mérito está en haber realizado los puntos anteriores, no tanto en este.
Documenta tu solución
Es importante que algunos aspectos del código estén documentados, ya sea usando comentarios, documentación de clases, documentación de interfaces, etc. Pero lo más relevante es que su tu código es “limpio” muchas de las cosas estarán autodocumentadas.
Finalmente, haz un README.md con todo lo que has hecho y justificando tus elecciones y soluciones.
Tiempo
Piensa que el tiempo no es infinito, esto no te debería llevar las de 75 minutos y mucho me parece ? Intenta no pasar más de 60 minutos. Si no lo consigues, no te preocupes, puedes volver a empezar y seguir practicando.
Autor
Codificado con ? por José Luis González Sánchez
Contacto
Cualquier cosa que necesites házmelo saber por si puedo ayudarte ?.
Licencia
Este proyecto esta licenciado bajo licencia MIT, si desea saber más, visite el fichero LICENSE para su uso docente y educativo.