Cómo sugerir mejoras en los ejercicios

Qué tener en cuenta antes de sugerir mejoras en los ejercicios


Así que has encontrado algo que te gustaría mejorar de un ejercicio. En primer lugar, ¡gracias por preocuparte y por sacar tiempo para contárnoslo! 💙

Cuando cambias un ejercicio hay varias cosas que tener en cuenta, y son un poco distintas para los ejercicios de aprendizaje (los que enseñan temas del temario) y los ejercicios de práctica (el resto). Esas diferencias las vemos más abajo.

Pero antes, hay un par de cosas genéricas que conviene tener en cuenta.

Cambiar un ejercicio tiene consecuencias

Cambiar un ejercicio tiene bastantes consecuencias:

  1. Añadir tests nuevos puede romper soluciones existentes. Esto tiene como consecuencia que el trabajo de miles de personas quede desactualizado, lo cual les resulta frustrante si los tests adicionales no están señalando ningún error existente.
  2. Tenemos que volver a comprobar el trabajo de todo el mundo, lo que tiene un coste tanto medioambiental como económico.
  3. Uno o varios mantenedores tienen que dedicar tiempo a revisar los cambios, lo que significa que durante ese tiempo no pueden hacer otras mejoras en el track.

Por todo esto, procuramos cambiar solo aquellos ejercicios en los que hay un beneficio claro e identificable.

Evita tender hacia la entropía

El objetivo de los conjuntos de tests de los ejercicios no es cubrir todos los casos posibles. Nuestros ejercicios no son software de producción, ni están diseñados para imitar casos de uso del mundo real. Están pensados como problemas de juguete que te ayuden a ganar fluidez en un lenguaje de programación. Por eso evitamos deliberadamente intentar cubrir todos los casos límite, forzar mucha validación de la entrada y otras preocupaciones parecidas del mundo real. Si la mejora que propones consiste en detectar un caso límite o en comprobar la validación de la entrada, es poco probable que se acepte, a menos que suponga una diferencia sustancial para el ejercicio.

Ejercicios de aprendizaje

Los ejercicios de aprendizaje están diseñados con un único objetivo: enseñar conceptos. Cualquier cambio en un ejercicio se valorará ante todo en función de si mejora la enseñanza de los conceptos.

Los ejercicios de aprendizaje no están diseñados (especialmente) para ser exhaustivos en sus tests. Además, a menudo pueden resultar algo forzados o rebuscados, para evitar usar conceptos que el estudiante todavía no ha aprendido o para no abrumarlo.

Si el cambio que propones pudiera distraer del aprendizaje del concepto, probablemente se rechace. Si el cambio facilita el aprendizaje, se estudiará con mucho interés. Si está en un punto intermedio, puede que se acepte, pero es poco probable que se le dé prioridad.

Ejercicios de práctica

Lo más importante que hay que entender sobre los ejercicios de práctica es que casi todos se encuentran en un repositorio central (conocido como «Problem Specifications»). Por lo tanto, hacer un cambio en un ejercicio tiene efectos en cadena sobre todos los tracks. Eso significa que un buen cambio es especialmente potente, porque ayudará a todos los lenguajes. Pero también aumenta la carga del cambio, ya que varios mantenedores de distintos tracks tienen que ponerse de acuerdo para que se acepte y, después, los mantenedores de cada lenguaje tienen que incorporar los cambios en sus tracks.

Los cambios en los ejercicios también pueden hacer que los conceptos con los que están vinculados en los temarios se vuelvan más confusos, o que los ejercicios necesiten características adicionales para resolverse, lo que cambia el punto en el que se desbloquean. Esto también hay que tenerlo en cuenta en todos los tracks antes de aceptar los cambios.

Aunque tenemos mecanismos para que solo algunos tracks tengan determinados casos de test, tendemos a desaconsejarlo, ya que esta bifurcación puede confundir tanto a los mantenedores como a los estudiantes. Así que, cuando propongas cambios en ejercicios de práctica, ten en cuenta el panorama general en todos los tracks.

Cómo conseguir que acepten tus cambios

Aunque hay muchas razones por las que no aceptamos sugerencias, ¡muchas veces la gente propone ideas buenísimas que sí aceptamos!

Además, casi siempre estamos abiertos a cambios de redacción que aporten claridad, sobre todo en los ejercicios de aprendizaje.

Para que tus sugerencias tengan las mejores posibilidades de que se aprueben, escribe tus propuestas dejando claro que has tenido en cuenta lo siguiente:

  • La mejora tangible que aporta el cambio (idealmente, con ejemplos de código de lo que tu cambio permite o impide).
  • El impacto en las soluciones existentes y por qué merece la pena.
  • Cualquier cambio en los conceptos que se enseñan o se utilizan.
  • Una comprensión de por qué las cosas pueden ser como son. (Te recomendamos leer nuestro artículo sobre la valla de Chesterton.)

Y recuerda expresar las opiniones como opiniones y los hechos como hechos. Eso suele dar lugar a las conversaciones más productivas.

¡Gracias de nuevo por tomarte el tiempo de hacer una sugerencia y por leer este documento!