CodeGym /Cursos Java /Module 6. Career Center /Lo bueno, lo malo y el LiveCoding

Lo bueno, lo malo y el LiveCoding

Module 6. Career Center
Nivel 4 , Lección 3
Disponible

LiveCoding... Es como uno de esos exámenes difíciles en los que tienes que resolver un problema en el acto frente a una audiencia de extraños. O, como improvisar en el escenario: ¡sólo pensarlo puede resultar aterrador! Sin embargo, algunas personas realmente prosperan con ello. Y para aquellos que no lo hacen, bueno, se trata de aprender a recibir el golpe. Como todo lo demás en este mundo, dominar LiveCoding viene con la práctica.

¿Qué es LiveCoding?

Se trata de resolver una tarea de programación en vivo, para ver cómo codificas bajo presión y, básicamente, cómo codificas en general. Esto puede suceder en la oficina o en casa durante una llamada. Si estás en casa, es probable que te pidan que te unas a una plataforma en línea y codifiques en vivo. En la oficina, es posible que alguien se pare a tu lado. Suena un poco aterrador, ¿no? Sin embargo, las tareas asignadas durante la codificación en vivo suelen ser más sencillas que las de una tarea de prueba. La mayoría de las empresas prefieren uno sobre el otro, pero nuestro trabajo es estar preparados para ambos.

A veces, es posible que recibas una combinación de una tarea de prueba en la oficina y LiveCoding. Por ejemplo, te asignan una tarea dividida en sprints. Te preguntan qué harías, te dan una hora para trabajar en ello, luego revisan lo que has hecho, analizan el código, te dan la siguiente parte, etc.

¿Dónde codificar durante LiveCoding?

  • En persona: es posible que le proporcionen una computadora con un IDE o le pidan que escriba soluciones en papel o en Google Docs. Esté preparado para cualquier cosa.
  • Remoto: O compartes tu pantalla y muestras tus habilidades en tu IDE configurado, o es posible que se te solicite que utilices un IDE en línea como Codility.

El algoritmo LiveCoding

LiveCoding puede ser remoto (compartiendo su pantalla) o en persona. Imagínate esto: te presentan un problema, una computadora se enciende, alguien se para detrás de ti (o se conecta a tu pantalla) y comienzas a escribir código con dedos temblorosos... Espera, no te apresures. Primero, deténgase y comprenda la tarea.

Comprender la tarea

Primero, asegúrese de comprender completamente la tarea. Haga preguntas aclaratorias para confirmar su comprensión. Siempre habrá alguien ahí para responder a sus consultas válidas.

Piense en la mejor solución

Considere varias soluciones, no solo una. Evalúa la complejidad temporal y espacial de cada uno y elige el más óptimo que puedas implementar de forma rápida y eficiente. Verbaliza tu proceso de pensamiento. Incluso si algo sale mal debido a los nervios, al menos queda claro que empezaste por el buen camino.

¡Empiece a codificar!

Mientras escribe su código, intente cumplir con los principios de SOLID/KISS/DRY. Asegúrate de explicar cada línea de código; a veces, incluso puedes obtener sugerencias útiles a través de preguntas capciosas.

Cree una prueba unitaria para su solución

Es mucho más genial que simplemente usar System.out.println. Pero eso ya lo sabías, ¿verdad?

No lo olvides durante LiveCoding:

¡Habla en voz alta! LiveCoding es 50% codificar y 50% verbalizar tus pensamientos. Normalmente, nadie intenta fallarte; Los entrevistadores te evalúan. Si ven que estás pensando de la manera correcta, pero te estás desviando, es probable que te ayuden y te orienten correctamente.

Si estás escribiendo un código deficiente debido a limitaciones de tiempo, díselo. Entonces el entrevistador sabrá que no sueles meter todo en un método principal gigante; simplemente estás presionado por el tiempo. Del mismo modo, si no puedes encontrar nombres adecuados para clases o variables, es mejor mencionarlo.

El objetivo durante una entrevista es escribir código rápidamente. Aun así, intenta escribirlo bien, de acuerdo con los estándares de la industria, no solo los académicos. Escribe bien lo que puedas y comenta lo que no puedas con los entrevistadores.

Como referencia, consulte el documento oficial de Oracle: Convenciones de nomenclatura de Java de Oracle

Considere siempre los casos límite (especialmente en problemas algorítmicos), las validaciones y el rendimiento.

No pruebes tu código ejecutando la aplicación. Utilice pruebas unitarias siempre que sea posible.

Ejemplos de tareas de LiveCoding

Pueden ser muchos y variados. Pero los ejemplos siguientes dan una dirección general. Por lo general, estos son problemas académicos que has encontrado en tus estudios.

Tareas sencillas

A menudo se solicita que se escriban en un archivo doc o incluso en una hoja de papel.

Los ejemplos incluyen:

  • Invertir una matriz (Entrada: [1,4,3,9,0], Salida: [0,9,3,4,1])
  • Calcular factorial (iterativamente o recursivamente)
  • Comprobar si una palabra se puede formar a partir de otra
  • Programación de un tablero de ajedrez

Tareas en Plataformas Online como Codility

Como tareas de algoritmos (búsqueda binaria, algoritmos de clasificación) o el uso de Streams API

Tareas complejas durante una visita al consultorio

Probablemente la variante más estresante. En este caso, podría ser cualquier cosa, como programar un tablero de ajedrez o escribir un administrador financiero mediante sprints.

Cosas en las que pensar antes de LiveCoding (y antes de una prueba)

  • Cómo probar código con valores aleatorios
  • Cómo debe comportarse el programa cuando un sistema externo no está disponible (por ejemplo, acceder a GitHub cuando está inactivo)
  • Piensa en el patrón "Comando" y cómo aplicarlo.

Consejos:

  • Prepare un proyecto Gradle o Maven con anticipación.
  • Utilice los atajos de IntelliJ IDEA. Aquí hay un par de artículos sobre el tema:

Plataformas para la práctica

  • Codility: busque un curso sobre algoritmos básicos. Concéntrese en iteraciones y matrices, clasificación, búsqueda binaria y pilas y colas.
  • Planes de estudio de Leetcode: aquí hay muchas tareas, pero no es necesario que las resuelvas todo. Utilice su Plan de Estudio para resolver una determinada cantidad de tareas cada día. El más interesante es LeetCode75, que consta de 75 problemas esenciales para dominar LiveCoding.
  • Codeforces: un recurso interesante con explicaciones y buenas soluciones para cada problema. Si no puede resolver un problema, verifique la solución y luego intente resolverlo nuevamente por su cuenta.

Plan de preparación

  • Utilice las plataformas de preparación mencionadas anteriormente.
  • Vea ejemplos de LiveCoding en YouTube.
  • Resuelve una tarea cada dos días.
  • Verbaliza tu proceso de pensamiento mientras resuelves.
  • Grábate resolviendo cada décima tarea y luego revisa si hay errores.
  • Siempre vuelva a trabajar las tareas después de resolverlas.
  • A veces, es posible que se te pida que resuelvas una tarea sencilla "en una hoja" (ya sea en un documento real o en Google Docs). Puede resultar un desafío, ya que estamos acostumbrados al resaltado de sintaxis y la autocorrección. Asegúrate de practicar este ejercicio cada pocos días.

Confía en nosotros, si te esfuerzas, ¡te lo agradecerás durante la sesión real de LiveCoding!

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION