La pandemia y su extensión inaudita nos hizo pensar más de una vez hace un año que…, diversas cosas (hace un año que no piso mi oficina, hace un año que no veo a tal persona, hace un año que no me subo a un colectivo, etc). Sumado a que mi condición laboral además había cambiado en marzo del 2020, esta primera mitad del año estuvo plagada de esta sensación de rememoración más típica de fin de año. Pero lo que más me llamó la atención fue lo siguiente: hace un año empecé a aprender R. Estas son las cosas que aprendí en el camino.
1. La comunidad de R es bellísima.
Yo sé que esto no es nuevo y que lo dicen todo el tiempo, pero no puedo no dejar de mencionarlo. Para una persona que siempre quiso meterse en tecnología de forma autodidacta pero que nunca antes lo había podido sostener en el tiempo (ni profundizar demasiado), lo primero que tengo que decir es que alrededor de R y de RStudio hay una red de contención mutua que no vi en ningún otro lugar.
2. La comunidad de R está organizada alrededor de un objetivo claro: enseñar a la mayor cantidad de gente posible a usar R.
De nuevo: parece una obviedad. Pero no lo es. Si bien hoy en día Internet tiene infinitos recursos para aprender casi cualquier cosa de forma autodidacta, no siempre esos recursos están pensados de forma explícitamente didáctica. He leído cientos de páginas de documentación de CSS y aún así no logro usar bien flexbox; pero el problema justamente es ese: la mayoría de los recursos que se encuentran a mano, por lo menos de forma gratuita, son páginas de documentación y no materiales pensados desde una mirada educativa (a excepción, claramente, de freeCodeCamp). Son listas de funciones, definiciones y ejemplos, pero no son tutoriales, secuencias didácticas, ejercicios con respuestas.
Mi experiencia con R es justamente la opuesta: en el momento en que puse un pie adentro, me encontré con muchísimo material que estaba pensado para gente como yo, que estaba empezando desde cero y que necesitaba una enseñanza gradual, jeraquizada, amena. Esto por supuesto que no fue siempre un camino fácil: a un mes de haberme descargado RStudio leí en algún blog o en Twitter que tenía que empezar por el libro R4DS y, sin ofender, es un terrible consejo para alguien que sabe 0% de R. Es un libro para alguien que sabe, digamos, un 1.5% de R, pero no para alguien que todavía no sabe diferenciar R base de Tidyverse. Por suerte no desistí en ese proceso de aprendizaje; supe elegir otros caminos y volver a ese libro cuando ya tenía una base un poco más sólida.
Otro hermoso ejemplo de cómo la comunidad busca activamente construir espacios didácticos es #TidyTuesday: un proyecto dedicado explícitamente a acercarles datos a las personas para que puedan practicar sus habilidades de análisis y de visualizaciones. A pesar de que participé pocas veces, puedo decir que el 100% de esas veces recibí comentarios positivos y constructuvos (y nunca me voy a olvidar de que uno de ellos me llevó a entender cómo reordenar factores). El proyecto #TidyTuesday es un punto clave para quienes no tienen datos propios, o para quienes sus datos propios no están preparados para analizar o para mostrar.
3. La comunidad de R sabe que, a pesar de ser global, el acceso al conocimiento no es homogéneo.
A lo largo de todo el mundo hay comunidades de R con distintos cortes: Rladies, LatinR, MiR, RForTheRestOfUs, por mencionar algunos. Creo que no hubiera llegado a donde llegué si no hubiera sido por Rladies: no solamente por la calidez y dedicación con la que organizan los encuentros y los materiales, sino sobre todo por la mirada didáctica con la que encaran la tarea. Cada vez que necesito profundizar sobre algo, mi primera acción siempre es ir a Youtube y poner “rladies + " el tema que me interesa. Y, por ahora, siempre encontré material muy valioso.
La organización en capítulos radicados en ciudades a lo largo del mundo tiene un impacto positivo en la expansión del conocimiento, porque la barrera idiomática es real. Aunque se utilice de forma más o menos natural el inglés, cuando uno está en instancias muy básicas del aprendizaje hay un esfuerzo extra que se debe sumar al esfuerzo de estar aprendiendo la nueva herramienta. No significa que no se pueda aprender: significa que va a costar un poco más. No había notado este impacto hasta hace pocas semanas, cuando participé de un tutorial en español en el marco de la UseR!2021: la confianza y seguridad con la que podía realizar preguntas en ese contexto no era igual a la que podía llegar a sentir en otro contexto. Es decir, si bien puedo realizar preguntas en otros contextos de habla no-hispana, el filtro con el que chequearía y re-chequearía la pertinencia de la pregunta es doblemente mayor; esto, inevitablemente, me pone en un estado de alerta constante que no es necesariamente el óptimo para el aprendizaje.
Y que sean ladies también es importante. Me gustaría poder decir que no existen diferencias de género en tecnología, pero todxs sabemos que no es lo que ocurre. No se trata de que la comunidad de R, específicamente, aporte a esta desigualdad, pero sí hay algo que le excede, que es que las mujeres en general tendemos a tener que esforzarnos más para llegar a los mismos lugares que los hombres. Y eso tiene consecuencia que no sean igualmente bienvenidas nuestras participaciones, que nuestros errores y dudas tengan distintas connotaciones. Las mujeres aprendemos rápidamente lo que significa intentar entrar a mundos en su mayoría compuestos por hombres, y esa tensión está siempre presente como mediadora entre nosotras y el objeto de estudio. El hecho de aprender en un grupo de ladies quita esa tensión. Es un poco como manejar un auto: las mujeres tenemos la responsabilidad de manejar bien, porque si lo hacemos mal corremos el riesgo de colaborar en el estereotipo de que las mujeres manejan mal. Y no queremos arrastrar a nuestras compañeras.
En fin. Sigamos:
4. Con R se puede hacer todo. Pero todo, de verdad.
Empecé a trabajar con R por el procesamiento estadístico; terminé haciendo diapositivas y sitios web. La flexibilidad de R y de RStudio es muy desafiante y confieso que varias veces me pregunté si podía hacer tal tarea de mi vida cotidiana en R (las listas de compras todavía las anoto en un papelito).
A veces me pregunto si verdaderamente necesito usar Rstudio para determinadas cuestiones, si tal vez no sería mejor hacerlas de otra forma (como este sitio web, por ejemplo). Pero lo que entendí es que para realizar determinadas cosas desde cero unx necesita saber todo acerca de esa cosa; en cambio, la integración en RStudio permite delegar algunas cuestiones y enfocarnos en las que queremos aprender o profundizar en ese momento. Seguramente mis slides se verían más lindas en PowerPoint, pero si quiero trabajar en la accesibilidad de mis materiales necesito poder tener control acerca de determinadas cuestiones, que PowerPoint no me permite. Lo mismo ocurre con el sitio web: si mi objetivo es mantener un sitio activo, escribir, tal vez no quiero tener que hacer el HTML o pelearme con el flexbox de CSS constantemente, pero tampoco quiero perder el acceso a estas herramientas como podría pasar con un sitio prearmado. Armar el sitio con RStudio (más específicamente, con el paquete blogdown y la configuración de Hugo Academic) me permite sostenerlo de forma fácil, al tiempo que me enfoco en el uso de (r)markdown y en la organización jerárquica de la información.
Con R se puede hacer prácticamente todo, pero justamente por eso…
5. R puede ser bastante apabullante por momentos.
Para alguien como yo, que tenía un trasfondo de programación muy básico, aprender R no fue solamente aprender R: fue también perfeccionar mis conocimientos rudimentarios de Git, fue manejar los códigos de comunicación de StackOverflow, fue aceptar que no podía aprender todo al mismo tiempo. Mi gran frustración del momento es Shiny: si bien me muero de ganas de aprenderlo bien, la verdad es que me conviene concentrarme en profundizar el análisis estadístico, que es para lo cual más voy a usar R. Cuando ya sepa todo lo que necesito saber de estadística, puedo dedicarme con tranqulidad a Shiny… ¿no?
El problema del apabullamiento es una consecuencia directa de algunas de las cuestiones mencionadas anteriormente: con R se puede hacer muchas cosas diversas, lo cual aumenta la probabilidad de encontrar mucha documentación diversa acerca de una temática; por otro lado, al ser software libre se multiplica la variedad para hacer lo mismo de distinta forma, lo cual puede ser muy confuso cuando unx todavía está empezando. Pero, para mí, lo que más dificulta mi proceso de aprendizaje es otra cosa:
6. Hay una brecha importante, en cuanto a disponibilidad de materiales educativos, para un nivel de conocimientos principiante y uno intermedio-avanzado.
Disclaimer: no me considero una usuaria intermedia-avanzada; creo que recién estoy a la mitad de ese intermedio, pero a medida que me acerco en determinadas temáticas al polo avanzado, me encuentro con que todos esos hermosos tutoriales y videos educativos ya no son tan frecuentes. Esto hace que al intentar aprender sobre cuestiones ya no tan básicas, la sensación vuelve a ser la misma que con otros lenguajes que he intentado aprender en el pasado. Desde ya que esta situación no es responsabilidad de nadie, pero sí me parece que evidencia un cuello de botella importante en términos de aprendizaje (y, tal vez, un nicho donde trabajar para aportar a la comunidad y devolverle todo lo que me ha dado). Y creo que esta brecha puede estar relacionada con el siguiente punto:
7. En algunos resquicios de la comunidad, hay gente que odia el Tidyverse.
Nunca pensé que podía ser posible, pero lo es. Es decir, entiendo por qué les pasa: cuando yo empecé a aprender R, con la poca experiencia en programación que tenía, no entendía que se pudiera programar en R más allá de los paquetes, sino que los paquetes conformaban R. Mis primeros encuentros con baseR fueron ni más ni menos que en las respuestas de StackOverflow a preguntas similares a los problemas que yo tenía, y durante semanas sentí que estaban hablando de otra cosa: ¿qué eran esos signos $, esos corchetes en lugares extraños?
Con el correr de las semanas y los meses fui entendiendo la lógica de baseR (para lo cual me ayudó mucho un curso de estadística aplicada en R, el primero que tomé después de diez meses de aprendizaje autodidacta), y lo que noté es que muchas cosas se realizaban de forma más fácil, más compacta y con menos código que con Tidyverse. Este es justamente uno de los argumentos de lxs haters del Tidyverse.
Pero lo que me gustaría decirles a esxs haters es que yo pude comprender algunas cosas de baseR justamente porque antes había aprendido a hacerlo en Tidyverse. Si bien hay cosas que son efectivamente más cortas en baseR, su propia condensación de información en pocos símbolos lo vuelve un código mucho más opaco que el que usaríamos con Tidyverse. Por más que ocupe más líneas de código, las funciones del Tidyverse son más transparentes para aquellas personas que no traen conocimientos previos de otros lenguajes, y esto es lo que hace al Tidyverse un entorno ameno, amigable e inclusivo.
Yo no creo, como dicen algunxs que he leído por ahí, que haya gente que pueda programar en R sin usar una sola línea de baseR: creo que el propio camino que toman las personas las llevan a necesitar incluir por lo menos algunos de sus elementos. Hay que dejar de lado la oda a la dificultad: todavía hoy sigo sin entender cómo armar un for loop, pero si no lo necesito, ¿por qué tengo que sentirme mal por no entenderlo? Los lenguajes de programación tienen ciertos puntos en contacto con los lenguajes humanos (y a mi juego me llamaron): la comunidad elige aquellos aspectos del lenguaje que necesita para comunicarse y funcionar como sociedad; el cambio lingüístico es parte inherente en este proceso. No existe una forma de hablar más pura que otra; no existe una forma de programar más pura que otra. Existen, eso sí, buenas y malas prácticas de programación, pero eso tiene que ver con la forma de utilizar los elementos disponibles, y no con la elección de esos elementos.
Y, hablando de loops, este punto me vuelve a llevar al primer punto: yo no sé cómo era la comunidad de R previo a la explosión del Tidyverse, pero sí sé cómo es ahora, una comunidad cálida, tremendamente diversa, que recibe con los brazos abiertos a personas con distintos recorridos y distintos objetivos. No sé si todxs, pero muchxs de quienes odian al Tidyverse tal vez no ven que justamente la transparencia de ese lenguaje ayuda a muchas personas como yo que no llegamos a R ni del mundo de la programación, ni de la ingeniería del software ni de la matemática o estadística. Las cosas no tienen que ser difíciles para poder funcionar: esa idea del ritual de iniciación, en el que todxs deben primero aprender baseR para ser dignxs de ser consideradxs programadorxs en R es una idea tremendamente excluyente, que no concuerda con el espíritu de la comunidad.
¿Qué me espera para el próximo año?
Me gustaría poder escribir un nuevo post en julio de 2022 contando que aprendí a usar Shiny, que publiqué un paquete o que creé un issue en algún repositorio de Github. Lo más probable es que de ese primer objetivo solo haya hecho dos tutoriales y medio, que del segundo solamente tenga un borrador en alguna carpeta perdida de mi computadora, y que del tercero ni noticias. Pero igual está bien: cuando descargué Rstudio en junio de 2020 no tenía idea de que iba a llegar a donde llegué. No tengo dudas de que el camino seguirá siendo espectacular.