Cómo sugerir mejoras en los ejercicios

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


Así que encontraste algo que te gustaría mejorar en un ejercicio. Antes que nada, ¡gracias por interesarte y por tomarte el tiempo de contárnoslo! 💙

Cuando se cambia 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.

Sin embargo, antes hay un par de cosas generales que considerar.

Cambiar un ejercicio tiene consecuencias

Cambiar un ejercicio trae bastantes consecuencias:

  1. Agregar nuevas pruebas puede romper soluciones que ya existen. La consecuencia es que el trabajo de miles de personas queda obsoleto, lo cual les resulta frustrante si las pruebas adicionales no están señalando ningún bug que ya existiera.
  2. Tenemos que volver a probar el trabajo de todas las personas, lo que tiene un costo tanto ambiental como económico.
  3. Uno o más 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 todas estas razones, somos cuidadosos y solo cambiamos ejercicios cuando hay un beneficio claro e identificable.

Evita que las cosas tiendan a la entropía

El objetivo de las pruebas de los ejercicios no es ser exhaustivas con 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 diseñados para ser problemas pequeños y lúdicos que te ayuden a ganar fluidez en un lenguaje de programación. Por eso evitamos a propósito cubrir cada caso límite, forzar mucha validación de datos u otras preocupaciones por el estilo del mundo real. Si tu mejora sugerida consiste en cubrir un caso límite o en comprobar la validación de datos, es poco probable que la aceptemos, a menos que marque una diferencia sustancial en el ejercicio.

Ejercicios de aprendizaje

Los ejercicios de aprendizaje están diseñados con un solo objetivo: enseñar conceptos. Todos los cambios en un ejercicio se evalúan, antes que nada, según si mejoran la enseñanza de los conceptos.

Los ejercicios de aprendizaje no están diseñados (menos aún) para ser exhaustivos en sus pruebas. Además, muchas veces pueden ser un poco forzados o rebuscados para evitar usar conceptos que el estudiante todavía no aprendió, o para no abrumarlo.

Si tu cambio sugerido pudiera distraer del aprendizaje del concepto, probablemente lo rechacemos. Si el cambio facilita el aprendizaje, lo consideraremos con mucho interés. Si queda en un punto intermedio, puede que lo aceptemos, pero es poco probable que lo prioricemos.

Ejercicios de práctica

Lo principal que hay que entender sobre los ejercicios de práctica es que casi todos viven 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 ayuda 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 aceptarlo, y después los mantenedores de cada lenguaje deben llevar los cambios a sus tracks.

Los cambios en los ejercicios también pueden hacer que los conceptos con los que están vinculados en los temarios queden más confusos, o que los ejercicios necesiten funcionalidades adicionales para resolverse, lo que cambia el punto en el que se desbloquean. Todo esto también hay que considerarlo entre todos los tracks antes de aceptar un cambio.

Aunque tenemos mecanismos para que solo algunos tracks tengan ciertos casos de prueba, tendemos a desaconsejarlo, porque esa bifurcación puede confundir tanto a los mantenedores como a los estudiantes. Así que, cuando propongas cambios en los ejercicios de práctica, considera el panorama completo entre todos los tracks.

Cómo lograr que acepten tus cambios

Aunque hay muchas razones por las que no aceptamos sugerencias, muchas veces la gente tiene ideas excelentes 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 darle a tus sugerencias la mejor oportunidad de ser aprobadas, escríbelas mostrando que consideraste lo siguiente:

  • La mejora tangible que aporta este cambio (idealmente con ejemplos de código de lo que tu cambio permite o evita).
  • El impacto en las soluciones existentes y por qué vale la pena.
  • Cualquier cambio en los conceptos que se enseñan o se usan.
  • Una comprensión de por qué las cosas podrían ser como son. (Te invitamos a leer nuestro artículo sobre Chesterton's Fence.)

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!