Cómo hacer mejores chuletas (cheatsheets)

Texto original escrito por Hillel Wayne, experto en m√©todos formales y testeo de software de alta complejidad, que ofrece consultor√≠a, charlas, workshops y textos de gran inter√©s, de los cuales hemos elegido este, que traducimos aqu√≠ al Espa√Īol para su divulgaci√≥n.

cheetsheetschuletastraduccion
25 agosto, 2021
25 agosto, 2021

Traducci√≥n de Ingl√©s a Espa√Īol realizada por Jose, traductor profesional de Ingl√©s con m√°s de 20 a√Īos de experiencia traduciendo textos de todo tipo para la agencia de traducci√≥n Ibidem Group.

Texto original escrito por Hillel Wayne y publicado en su web https://www.hillelwayne.com/post/cheatsheets/

 

* * *

Ahora que me gano la vida impartiendo talleres, dedico mucho tiempo a mejorarlos. Una de las mejoras que realic√© fue la creaci√≥n de ¬ęprogressive cheatsheets¬Ľ o chuletas progresivas. M√°s adelante hablar√© de la motivaci√≥n y la implementaci√≥n, pero este ser√≠a el aspecto que tendr√≠an:

Progresiones #1 y #2 de la chuleta (haz click para ver a tama√Īo completo).

Asumo que sabes ¬ępor qu√© usar chuletas¬Ľ… Es mucho mejor consultar una p√°gina que resume todo lo esencial, que buscar en un libro entero. Pero las chuletas tienen problemas y podemos hacerlas mucho mejor.

Punto de partida

Actualmente dirijo talleres para 2 lenguajes de programaci√≥n, TLA+ y Alloy, y necesito chuletas para ambos. Ambos tienen chuletas p√ļblicas, pero aunque puedo utilizar la de Alloy tal cual, la chuleta de TLA+ tiene varias p√°ginas. Las hojas de trucos deber√≠an tener como m√°ximo una p√°gina. Si pasan de dos, nadie las mira. Primer paso: hacer una versi√≥n de una p√°gina.

Mi herramienta preferida es LaTeX, un DSL de composici√≥n tipogr√°fica que creci√≥ mucho m√°s all√° de su nicho original. Es la mejor herramienta para el control de dise√Īos. Esto se debe menos a su propia calidad intr√≠nseca y m√°s que nada a que el resto de alternativas son mucho, mucho peor.

He encontrado una plantilla de chuleta aqu√≠. Divide el cotnenido en secciones y el dise√Īo en columnas. LaTeX calcula c√≥mo distribuir el contenido en las columnas por m√≠. Esto es bueno porque al principio no sab√≠a cu√°nto contenido necesitaba o c√≥mo agruparlo mejor. Pod√≠a reordenar las secciones y hacer que todo se redistribuyera autom√°ticamente. Desgraciadamente, LaTeX es muy quisquilloso y a menudo acababa con el contenido desbordando las columnas. Pero arreglar los errores extra√Īos de LaTeX sigue siendo mejor que intentar maquetar todo manualmente.

Las chuletas b√°sicas me sirvieron durante un tiempo, pero luego empec√© a tener problemas. No los que hacen que las chuletas sean in√ļtiles, sino los que las hacen m√°s lentas.

Teoría de la chuleta

Las chuletas deben ser densas. Cuanta m√°s informaci√≥n se incluya en una sola p√°gina, m√°s probable ser√° que alguien encuentre lo que necesita… si es que ya sabe lo que necesita.

Si un estudiante no sabe lo que necesita exactamente, puede intentar aplicar la idea equivocada. Cosas como usar con cuando en realidad necesitan ELEGIR, cambiar la notación de función y conjunto de funciones, cosas así.

Este es un problema mucho mayor cuando todav√≠a est√°n aprendiendo el material. Todav√≠a no tienen un modelo mental, as√≠ que no saben qu√© material es relevante y cu√°l no. La mayor parte de la chuleta es material que a√ļn no hemos cubierto. Esto tiene dos modos de fallo:

  1. No se dan cuenta de que es material de futuro e intentan utilizarlo en el lugar equivocado. Ejemplo: escribir set SUBSET set2 en lugar de set1 \subseteq set2.1
  2. Saben que no es relevante, pero a√Īade tanto ruido que les cuesta localizar lo relevante.

Mis talleres son largos y abarcan material exigente. Ya estoy metiendo toda una disciplina en el cerebro de mis alumnos, no hace falta a√Īadir m√°s dificultad encima. As√≠ que busqu√© formas de solucionar este problema.

Primera aplicación

La soluci√≥n m√°s directa es ocultar todo lo que a√ļn no he cubierto. En lugar de dar a los alumnos una sola chuleta, les doy siete. Despu√©s de la primera lecci√≥n, reciben la chuleta n¬ļ 1, que s√≥lo cubre la primera lecci√≥n. Despu√©s de la segunda lecci√≥n, reciben la ficha n¬ļ 2, que cubre tanto la primera como la segunda lecci√≥n. As√≠ hasta llegar a la versi√≥n final de la chuleta, que lo tiene todo.

Podemos hacerlo con el paquete etoolbox de LaTeX. Definimos un interruptor con newtoggle, como \newtoggle{lógica temporal}. Luego creamos un nuevo archivo main.tex que importamos a cheatsheet. En el documento raíz, hacemos

\newtoggle{topic A} 
\newtoggle{topic B}
\newtoggle{topic C}

% ...

\input{main}
\toggletrue{topic A}
\input{main}
\toggletrue{topic B}
\input{main}
\toggletrue{topic C}

Esto significa que cada instancia de main tendr√° activos todos los interruptores anteriores. Ahora podemos escribir:

\iftoggle{topic B}{content}{}

Si la conmutaci√≥n es verdadera, se procesa normalmente. Si la conmutaci√≥n es falsa, nos saltamos la renderizaci√≥n de toda la secci√≥n. Ahora puedo estar seguro de que las √ļnicas cosas que el estudiante est√° viendo son cosas que ya hemos cubierto.

Esto resuelve muy bien el problema. Sin ruido y sin rodeos. Pero podemos hacerlo mejor.

Segunda aplicación

Los temas de la chuleta están ordenados por temas, no por lecciones. Piensa en algo como las funciones de Python: pondrías la sintaxis de los argumentos variados justo después de la sintaxis regular, aunque uno sea un tema para principiantes y el otro sea un tema avanzado.

Así que la chuleta final podría tener este aspecto:

columna columna
A C
B D

¬ŅC√≥mo deber√≠a ser la chuleta que s√≥lo cubre A y D? Si eliminamos C y B, LaTeX recalcular√° el dise√Īo de la p√°gina como

columna columna
A
D

En la chuleta anterior, el alumno ve la A en la parte superior izquierda y la D en la parte inferior izquierda. Pero en la chuleta con los cuatro temas, la parte inferior izquierda es ahora la C. Si el alumno se acostumbr√≥ a ver la D en la parte inferior izquierda, tendr√° que romper su h√°bito y volver a aprender la nueva ubicaci√≥n. El problema se agrava a medida que a√Īadimos m√°s temas y progresiones a la hoja.

Esto puede parecer un problema menor, pero no me gusta. Es una sobrecarga mental adicional para los estudiantes que no tiene nada que ver con el material real. Dificultad accidental, no esencial. Lo quiero fuera. Cada parte del contenido debe estar en el mismo lugar en cada chuleta.

Pensé que esto sería bastante difícil. Tendría que decirle a LaTeX que maquetara el documento como si todo el contenido estuviera allí, pero que no mostrara trozos de texto. Eso parecía una técnica de LaTeX de nivel experto.

Así que hice trampa.

 \newenvironment{requires}[1] 
{
\iftoggle{#1}{
% We've passed this point, show normal
}{
\color{white} % Hide text
\rowcolors{2}{white}{white} % Hide tables
}
}

En lugar de utilizar \iftoggle, he creado un nuevo entorno. Si el toggle es verdadero, procedemos normalmente. Si es falso, sin embargo, hago que todo el texto en el entorno sea blanco. El texto se sigue renderizando, lo que significa que el dise√Īo es consistente entre las hojas. Pero nadie puede verlo, as√≠ que no distrae. As√≠ se hace el trabajo.

El principal inconveniente es que no funciona dentro de las tablas. Algo sobre los entornos anidados vuelve loco a LaTeX. Pero puedo envolver toda la tabla en un bloque requires, así que al dividir las tablas puedo obtener más o menos los beneficios aquí. La estética es peor pero eh.

Si quieres hacer tus propias chuletas progresivos, aquí tienes una plantilla de ejemplo que produce esta salida de muestra.

Resultados

Lo probé por primera vez en un taller de Facebook en noviembre. Funcionó de forma espectacular. Las personas que utilizaron las progresiones desde el principio lo tuvieron mucho más fácil para encontrar el material correcto que las personas que sólo utilizaron la versión final de la chuleta. El primer grupo también tuvo menos falsos negativos, cuando intentaron utilizar el concepto equivocado. Lo considero un gran éxito. Sin embargo, hay que hacer tres apuntes:

  1. Al principio, daba la siguiente progresión antes de los ejercicios de la mitad de la lección. La gente intentaba entonces utilizar el material de la segunda mitad del módulo. Rápidamente pasé a repartirlas antes de los ejercicios de final de módulo, después de haber cubierto todo.
  2. Es muy f√°cil olvidarse de repartir las progresiones. He a√Īadido nuevas diapositivas a los apuntes de clase en cada nuevo punto de reparto.
  3. No cotejes.

Espero que hayas disfrutado de este vistazo a mi proceso de dise√Īo. Si est√°s pensando ¬ęwow esta persona realmente da una mierda sobre la ense√Īanza¬Ľ no dude en ponerse en contacto si usted est√° interesado en un taller corporativo, o unirse a mi bolet√≠n de noticias aqu√≠ para los anuncios sobre nuevos talleres p√ļblicos!

Gracias a Lito Nicolai y a Greg Wilson por sus comentarios.

Valora este artículo