Traducción al español
Documento Original Publicado por Lars Brünjes el 4 de Abril de 2019
Mujeres de Etiopía y Uganda se enfrentan a Haskell
Cuando bajé del avión en el aeropuerto de Bole en Addis Ababa la noche del 4 de enero, no sabía qué esperar. Era mi primera vez en Etiopía, y todo lo que sabía era que mi colega canadiense, la Dra. Polina Vinogradova, experta en métodos formales de IOHK, y yo íbamos a enseñar un curso de Haskell de tres meses de duración a una clase de jóvenes etíopes y ugandesas.
Cuando nuestros estudiantes se graduaron tres meses después, el 22 de marzo, fue el momento culminante de mi vida profesional. Las palabras no describen lo orgulloso que estoy de estas valientes jóvenes que sacrificaron tanto para asistir a la clase, que trabajaron incansable y arduamente, ansiosas por comenzar a abordar algunos de los problemas más apremiantes que enfrentan sus países.
Me siento humilde, no sólo por su feroz inteligencia y pasión, sino también por su gentileza y amabilidad.
El curso fue organizado por John O’Connor, director de operaciones africanas de IOHK, en cooperación con elMinisterio de Innovación y Tecnología de Etiopía y el gobierno de Uganda. Tuvimos 22 estudiantes, 18 de Etiopía y cuatro de Uganda. Todos los asistentes habían estudiado una asignatura relacionada con las tecnologías de la información en la universidad, algunos se acababan de graduar, otros habían trabajado durante varios años en el desarrollo de software o impartiendo clases en la universidad.
La mayoría de los estudiantes etíopes eran de Addis Ababa, pero algunos eran de lejos y tuvieron que dejar a sus familiares y amigos para asistir al curso. Los cuatro estudiantes ugandeses vivían en un hostal, pasando tres meses en un país extraño y ajeno a ellos, sin hablar el idioma.
Las cuatro estudiantes de Uganda estaban muy lejos de casa.
Enseñar a estudiantes con tan diversos antecedentes suena desafiante, pero el hecho de que ninguno de ellos tuviera experiencia en programación funcional en general o Haskell en particular lo hizo más fácil: conocer otros lenguajes de programación no ayuda mucho cuando se aprende Haskell, e incluso puede ser contraproducente.
Haskell es el lenguaje de programación más importante utilizado por IOHK. Es un lenguaje funcional, mientras que la mayoría de los lenguajes más conocidos son imperativos y están orientados a los objetos. Haskell es de alto nivel, matemático, extremadamente flexible y expresivo, no realmente dominante; un lenguaje ideal para establecer nuestros complicados protocolos y algoritmos criptográficos de manera eficiente y de una manera probadamente correcta.
Haskell es difícil de enseñar y aprender - no porque sea intrínsecamente más complicado que otros lenguajes, sino porque obliga al programador a aprender una nueva forma de pensar, a abordar los problemas de una manera desconocida para los desarrolladores acostumbrados a Java, Python o JavaScript. Aprender Haskell es una experiencia alucinante (¡y alucinante!). Después de aprenderlo, incluso si nunca vuelves a usar Haskell, tienes una perspectiva mucho más amplia y has aprendido a ver los problemas desde una perspectiva diferente. Serás un mejor desarrollador, pase lo que pase.
Bethelhem Teka con su familia
Esto es lo que uno de nuestros estudiantes etíopes, Bethelhem Teka, dice sobre Haskell y el curso:
A pesar de haber codificado en lenguajes de programación imperativos durante más de seis años, no conocía la base de programación funcional de Haskell. Inicialmente fue emocionante internalizar sus promesas de ser funcional, perezoso, puro, sin efectos secundarios, y así sucesivamente.
Hay conceptos orientados a objetos que se usan en Haskell, pero se implementan de manera diferente, y fue raro escuchar algunos hechos como, sin herencia y sin objetos.
Obviamente, hubo muchos momentos difíciles en el curso, especialmente al interpretar conceptos en código. Siendo un elemento crucial del lenguaje, la comprensión e implementación de la mónada para lograr la funcionalidad de pureza fue aún más difícil.
Hubo muchas preguntas tontas que me vinieron a la mente en diferentes momentos, como preguntarme cómo Haskell mantuvo su pureza y evitó los efectos secundarios antes de descubrir la mónada, pero pronto fueron respondidas por Lars o Polina o sus amigos.
También hay otros puntos que necesito tener en cuenta en mis propias tareas y profundizar en el futuro.
Finalmente, me siento afortunada de haber aprendido el paradigma del lenguaje de programación funcional como un todo y encuentro todas sus nociones sorprendentes y prometedoras.
No puedo decir que he entendido todos y cada uno de los conceptos que se tratan en el curso, pero me ha dado la confianza para empezar a trabajar en él y leer más.
Las circunstancias no eran las ideales, y nos enfrentamos a problemas todo el tiempo. El tráfico era horrible y algunos de los estudiantes pasaban tres horas cada mañana para llegar a clase.
Internet no era confiable, y la mayoría de nuestros estudiantes no tenían acceso en casa, lo que les obligaba a quedarse hasta tarde después de clase para trabajar en sus tareas. Incluso en el aula, sufrimos muchos fallas en Internet y nos vimos obligados a distribuir material en pen drives USB de un ordenador portátil a otro.
A 2.500 metros sobre el nivel del mar, Addis Ababa se mantiene fresca.
Una noche, recibí mensajes frenéticos en Telegram de aquellos estudiantes que se habían quedado hasta tarde para trabajar en sus tareas: ¡habían sido encerrados! Un guardia de seguridad había decidido que era hora de su cena, los encerró y se fue. Se necesitaron algunas llamadas telefónicas frenéticas, recoger a un empleado del ministerio con las llaves y conducir hasta el edificio para liberar a los estudiantes. Pero mantuvieron su buen humor.
Libres al fin! Las estudiantes habían trabajado hasta tarde y habían sido encerradas en el edificio.
Algunos de nuestros estudiantes tuvieron problemas con sus computadoras portátiles - memoria insuficiente, procesadores intolerablemente lentos o teclados defectuosos. Después de un comienzo lento y doloroso, IOHK finalmente proporcionó mejores máquinas.
A los estudiantes ugandeses no les gustó el clima frío, ni estaban contentos con la comida etíope que no conocían. Addis está a 2.500 metros sobre el nivel del mar y es la segunda capital más alta del mundo, por lo que el clima es más fresco de lo que cabría esperar de una ciudad africana. Polina y yo sentimos tanta lástima por los cuatro durante las primeras semanas, ¡siempre se veían tan miserables!
Comida etíope: desconocida para el equipo de IOHK y los estudiantes ugandeses.
Otro problema, al menos al principio, era el hecho de que los estudiantes estaban acostumbrados a un sistema educativo en el que hacer preguntas “estúpidas” estaba mal visto y en el que los profesores eran a menudo inaccesibles. Se necesitó paciencia y ánimo para convencer a los estudiantes de que se abrieran, para mostrarles que estaba bien hacer preguntas e interrumpirnos cuando había algo que no entendían.
Las estudiantes también parecían estar acostumbradas a un estilo de enseñanza y aprendizaje que se centra en la teoría. Al principio, siguieron nuestras conferencias lo suficientemente bien, pero les fue bastante mal cuando se trataba de ejercicios prácticos y de aplicar lo que habían aprendido al código real.
Una vez que nos dimos cuenta de esto, proporcionamos más ejemplos y ejercicios, y les pedimos que escribieran código tan a menudo como fuera posible. Repita el flujo de trabajo de Haskell una y otra vez. Escribe algún código. Compilar. Corregir errores. Prueba. Repetir.
Es un curso desafiante y va mucho más allá de una mera introducción a Haskell. Se cubren muchos temas y conceptos avanzados y se incluye mucho material. Esto pone presión sobre las estudiantes y les exige que trabajen duro. Pero vale la pena! Después de completar el curso, las estudiantes pueden estar orgullosas de una sólida comprensión de Haskell y están preparadas para trabajar en problemas reales.
Almuerzo con las estudiantes.
Para un proyecto, las estudiantes tuvieron que implementar un protocolo de par a par, y estaban muy entusiasmadas de ver cómo se podían aplicar los conceptos abstractos que habían aprendido. En palabras de Belén:
Trabajar en tareas era la tarea favorita entre todas las actividades del curso.
Estaba tratando de entender y trabajar en cada pregunta. Aunque se trataba de trabajo en grupo, cada tarea tenía algo que ver con puntos prácticos y me incomodaba perderme una.
Por lo tanto, si no lo codifiqué, al menos hablé con el grupo para visualizarlo algorítmicamente. Trabajar en equipo fue divertido! Me ayudó a conocerme, y aprecio las diapositivas bien organizadas y limpias. Las grabaciones de pantalla también ayudaron mucho.
Philip Wadler en su disfraz de Lambdaman con Charles Hoskinson a su lado.
Una novedad en este curso fue una sección de dos semanas sobre Plutus, impartida por el profesor Philip Wadler, uno de los creadores de Haskell. Plutus es el lenguaje de contratos inteligente desarrollado por IOHK para su uso en la cadena de bloques (blockchain) Cardano; ha sido implementado en Haskell y es muy similar a Haskell, por lo que nuestros estudiantes estaban en una posición ideal para aprender sobre él.
Otra estudiante, Bethel Tadesse, tenía sugerencias para el curso y la parte de Plutus:
Sobre el curso me gusta mucho y es muy interesante y útil para mí, también me inspira a trabajar más y más. Es realmente óptimo que podamos llevar esta tecnología relevante y eficiente a nuestro país en desarrollo, Etiopía, y también a África. También me enorgullece decir que tengo la suerte de aprender esto, una infraestructura que cambia la vida y crea soluciones.
Me permite ver el futuro más brillante. Es realmente útil y bien organizado, excepto que el tiempo se acorta y lo hace estresante y se necesita más esfuerzo por nuestra parte. Y en la sesión de contratos inteligentes, honestamente hablando, tomamos sólo lo básico, no los detalles, y en mi conclusión necesitamos un poco más de aclaración para trabajar más en ello. Y en lo básico me pareció realmente interesante y poderoso para asegurar diferentes áreas que necesitan ser manejadas por esta tecnología.
Como sugerencia, quiero decir que podría ser mejor con la sesión de contrato inteligente si tenemos más tiempo para interiorizar y ver más de antemano cómo funciona con el poderoso lenguaje Haskell que tratar con él aparte del Haskell.
Después de casi tres meses de arduo trabajo, muchas luchas, innumerables fallos en Internet y en el suministro eléctrico, después de aprender conceptos esotéricos como las mónadas y el razonamiento ecuacional y aplicaciones prácticas con servidores web y bases de datos, después de decepciones por los malos resultados de las pruebas y la euforia por las continuas mejoras y momentos 'aha!, después de aprender y estudiar y trabajar y comer y tomar café juntos, después de emergencias médicas, tragedias y enfermedades familiares, después de muchos triunfos pequeños y grandes, muchas risas y mucha alegría, después de tener miedo de los fantasmas en los tejados por la noche (no bromees…) y evitar a innumerables lustrabotas, finalmente culminó con una hermosa ceremonia de graduación en el Hotel Sapphire de Addis Ababa.
Lars rodeado de las graduadas.
Observados por familiares y amigos orgullosos, diplomáticos y expertos de la industria, periodistas y filántropos, los estudiantes recibieron sus certificados del Dr. Getahun Mekuria Kuma, ministro de innovación y tecnología, y de Charles Hoskinson, director ejecutivo y cofundador de IOHK.
Lars, Polina y Getahun Mekuria Kuma, el ministro de tecnología.
Nadie estaba más orgulloso que yo. Todas las mujeres llevaban vestidos etíopes, brillaban de emoción y alegría; se veían tan hermosas que tuve que luchar contra las lágrimas. Según mi esposa, ``Siempre han sido hermosas, pero el éxito las ha hecho hermosas’'.
Leer el blog de Polina Vinogradova - Dentro y en lo profundo de Addis