Gabriel Nelle vive en el sur de Alemania, cerca de Baden-Baden. Comparte el departamento con su novia y dos gatos. Estudió para ser profesor de matemáticas y alemán en la universidad de Siegen, donde se graduó en 2008.
Jonathan: Bueno, hola a todos. Mi nombre es Jonathan. Es un placer ser tu anfitrión esta noche. Tengo un invitado que me siento muy privilegiado de tener en el programa de hoy. Me gustaría presentarte a Gabriel Nelle. Gabriel es uno de nuestros colaboradores principales en Exercism. Ha estado muy involucrado en el track de Go en particular, pero dejaré que él se presente con más detalle en un momento. Pero solo decir, Gabriel, es genial tenerte. Gracias por acompañarnos y esperamos que te diviertas tanto como todos los oyentes del programa de hoy. Entonces, Gabriel, ¿por qué no tomas la palabra? Cuéntame un poco de dónde eres y cómo terminaste donde estás ahora.
Gabriel: Sí. Hola. Soy Gabriel. Gracias por invitarme. Soy del sur de Alemania, ahí crecí, y ahí estoy ahora, no en el mismo lugar, pero sigue siendo el sur de Alemania. Sí, crecí en... a ver, empecemos: soy de principios de los ochenta, así que crecí, nací en el 81. Y creo que mi punto de partida es más o menos a finales de los ochenta, cuando mi papá trajo a casa su primera computadora. Creo que ahí es donde empieza la historia. Al menos la historia del texto.
Jonathan: Sí.
Gabriel: Tenía MS-DOS instalado, no estoy seguro de qué versión exacta era. Creo que era una versión antigua, también porque, si recuerdo bien, mi papá la trajo a casa porque básicamente la estaban tirando en esta empresa y recibieron computadoras nuevas, así que él la tomó, pudo llevársela a casa y sí, esa fue mi primera impresión de las computadoras. MS-DOS. Es interesante y extraño.
Jonathan: ¿Las, las líneas, las líneas de colores en la pantalla negra? ¿Eso era bastante...?
Gabriel: Sí, era solo blanco sobre negro. Sí, básicamente. Y básicamente podías, en su mayoría era solo la línea de comandos, que fue lo primero que conocí. Y luego, después, con mi papá, básicamente en el, en el 90, alrededor de 1991, mi papá nos enseñó nuestros primeros bucles for en QBasic. Yo tenía 10 años en ese entonces, y también estaba el aprendizaje de vocabulario. Así que mi papá compró un programa para aprender vocabulario y creo que tenías que hacer clic con un mouse, pero no estoy cien por ciento seguro. Quizá fue más tarde. Así que definitivamente fueron esos tiempos en los que empecé a hacer cosas con computadoras y las rompí varias veces. Mi papá tuvo que arreglarla varias veces. Definitivamente me interesaba aprender sobre esto. No realmente de una forma en la que me sentara y me dijera: necesito aprender sobre esto. Me interesaba mucho y entender qué podías hacer con eso me intrigaba.
Jonathan: Y, y tu, ¿tu papá trabajaba específicamente en computadoras o estaba en, en el mundo de los negocios y le tocó traer una computadora a casa, o había una razón específica por la que la trajo? Razones de computadoras o razones técnicas.
Gabriel: Sí, en realidad él es electricista de oficio, eso fue lo que estudió. Pero en ese entonces trabajaba en Bosch y trabajaba en el departamento de electrónica, donde se desarrollaban chips nuevos o cosas nuevas para autos. Y ahí, por supuesto, estaban las computadoras y él en realidad fue responsable bastante temprano de todo lo relacionado con computadoras, impresoras de red y todo ese tipo de cosas. Así que básicamente así entró en esto. Era básicamente el que hacía todo lo necesario para que las cosas funcionaran ahí. Y como no tenía un doctorado como la mayoría de los demás en su departamento, básicamente se encargaba de ese tipo de cosas y aprendió muchísimo sobre estas cosas, sobre computadoras. Sí.
Jonathan: Sí. Ok, genial. Perdón, acabo de interrumpirte. Así que decías que estabas jugando con ella, la rompiste varias veces, esa fue tu introducción a las computadoras, al hardware y todo ese tipo de cosas. ¿Y luego qué? ¿Qué pasó a partir de ahí? ¿Cuál fue la progresión?
Gabriel: Creo que el siguiente gran paso fue que tuve mi propia computadora, eso fue, diría, quizá cinco o seis años después, cuando era joven. Y me interesaban más las computadoras y también tuve algunas clases en la escuela. Empecé a hacer mis tareas en la computadora y todo ese tipo de cosas. Y eso fue ya en las épocas de Word, MS Word y esas cosas. Y diría que empezó un día, mi compu... mi papá siempre estaba haciendo trabajo de literatura para nuestra iglesia. Crecimos en una iglesia muy pequeña y teníamos esta literatura que básicamente usábamos, y mi papá estaba digitalizando o ayudando a digitalizar esa literatura. Al principio era un proyecto paralelo, con datos sobre eso. Se convirtió en mi primer trabajo de tiempo completo, trabajando para... A ver, ¿puedes mirar eso? Trabajando para la editorial en Estados Unidos que era responsable de esa literatura.
Jonathan: Mm.
Gabriel: Básicamente mi papá me preguntó: sí, tengo todas estas macros, las escribí en un script antiguo que básicamente estaba basado en una versión de Word, se podría decir, pre-Word, y ahora quiero cambiarme a Word y necesito todas mis macros en Word. Y yo dije, ok, ok. Y así fue como empecé a programar en Word. O sea, Visual Basic for Applications. Primero podías grabar las macros. Podías mirar el código y ver qué hacía, y podías mejorarlo y básicamente mejorar la macro tanto que podían, básicamente... Antes era como que ponías el cursor aquí, presionabas una tecla y hacía algo en las siguientes líneas. Y al final era como que procesaba todo el documento de Word de arriba a abajo, completamente automatizado. Y básicamente esa fue la entrada a un montón de macros que escribí para eso. Creó algunas olas importantes y la persona, las personas que le dieron a mi papá este tipo de tarea para hacer en su tiempo libre, dijeron: wow, esto es genial. Hagamos más y automaticemos esto cada vez más. Sí. Así fue como entré en...
Jonathan: él, le ahorraste mucho tiempo a tu papá
Gabriel: Sí.
Jonathan: en ese sentido, a una edad temprana,
Gabriel: Podría decir eso. Y así, la escritura de macros en Word, y más tarde en Excel, escribí un sistema basado en Excel para... ¿qué dirías? Un sistema para una tienda pequeña. Era una tienda pequeña de alimentos orgánicos y demás, y básicamente anotaban todos los precios y luego los calculaban de cabeza o en papel. Y así funcionaba al principio. Y yo escribí un sistema para eso con lectura de códigos de barras y con una balanza donde podías poner... pesar algo y obtener el recibo, y luego escanearlo cuando vas a pagar y todo ese tipo de cosas. Así que básicamente todo eso estaba basado en Excel. Entonces era... Sí, definitivamente lo haría diferente. Excel era la base de datos al mismo tiempo que la impresora. Formateaba todo en Excel, en una hoja de Excel, y luego se imprimía en la impresora de recibos, todo ese tipo de cosas. Por supuesto, sí, pensé que ese fue el comienzo de mi carrera, por así decirlo.
Jonathan: ¿Dónde estabas cuando, cuando hiciste todo eso y, y qué llevó de ahí? ¿Fue antes de la universidad, más o menos durante la secundaria, y luego eso influyó en tu trayectoria profesional, por así decirlo? Bastante significativamente.
Gabriel: Sí, todo eso fue antes de la universidad. El sistema para la tienda fue cuando tenía alrededor de 2021, hice mi servicio civil más o menos en esa época.
Jonathan: ¿Eh?
Gabriel: La escritura de macros fue cuando tenía como 16. En el medio también escribí un sistema basado en Access para imprimir etiquetas para cartas y que pudieran enviarse. O sea, direcciones y demás. Y luego llegó el estudio y, sorpresa, no estudié informática.
Jonathan: Ok.
Gabriel: En realidad estudié para ser profesor de matemáticas y alemán, para edades... déjame calcular eso. Edades de 10 a 19. Esas son las edades. O sea, de quinto
Jonathan: así que tú
Gabriel: a decimotercer grado.
Jonathan: ¿Tu trayectoria profesional...? O sea, empezaba a encaminarse y ¿en qué se basó esa decisión, algo así como...?
Gabriel: En realidad probablemente habría ido por el camino de la programación. Pero durante mi servicio civil aprendí mucho más que solo cosas técnicas, diría. Estaba a cargo, o formaba parte de un equipo pequeño que estaba a cargo de un hogar de ancianos, por así decirlo. Había como 5, 5, 6 habitaciones ahí. Y había personas distintas y yo estaba a cargo sobre todo de una. Ella tenía quizá 55, 60 años y tenía Alzheimer. Y eso me causó una gran impresión porque, si te enfrentas a esa edad con ese tipo de cosas, podrías decir, sí, ella tenía 60 y sonaba viejo para alguien de 20, pero aun así me quedaba claro que esto le podía pasar a cualquiera y también me podía pasar a mí. Y eso me interesó mucho más en las áreas sociales de la vida y
Jonathan: Fascinante.
Gabriel: en las trayectorias profesionales sociales. Y en realidad ahí... Básicamente esa es la razón por la que en ese momento elegí ser profesor. Quería programar, era muy bueno enseñando o ayudando a mis compañeros de estudio, sobre todo en la escuela. Y matemáticas. Las matemáticas eran mi área más fuerte y siempre me gustaron. Sí, siempre me gustó ayudar a otros a mejorar sus habilidades, o siempre me encantaba cuando de repente lo entendían. Cuando veía que... ahora sí lo entendían. Sí. Y entonces yo... En realidad me hice profesor.
Jonathan: Ah, qué bien. Y solo cuéntame, mencionaste eso del servicio, tu servicio civil, por así decirlo. En Alemania, ¿es obligatorio que cada estudiante o joven lo haga antes de ir a la universidad? ¿Cómo encaja todo eso en la cultura alemana?
Gabriel: En ese entonces era una alternativa, una alternativa a ir al ejército. O hacías nueve meses, nueve meses de servicio militar, o hacías 11 meses de servicio civil. Ese era el requisito.
Jonathan: Ok.
Gabriel: Para los hombres, no para las mujeres.
Jonathan: ¿Sigue siendo así en Alemania?
Gabriel: No, ya no es así. No. No.
Jonathan: Ok. Sé que lo es en Suiza, que es de donde viene mi esposa. Así que era solo... Esa estructura sigue vigente. Ok. Así que ahora hiciste matemáticas y estudiaste para ser profesor, y obviamente la programación jugó un papel bastante importante en tu vida. ¿Cuándo...? O sea, ¿tuviste un momento en el que dijiste: en realidad estoy en la docencia, lo estoy disfrutando, pero no, pero sigue estando esta parte de la programación que está activa y comprometida? ¿Cómo se equilibraron esas dos cosas, la docencia y la programación?
Gabriel: ¿Cómo volví a la programación? Sí.
Jonathan: Sí
Gabriel: Sí. Durante mi época, durante mi época de estudiante, básicamente hacía dos cosas como trabajos paralelos. Una era enseñar. Enseñaba en una agencia de tutorías. Enseñaba en la universidad, a los más jóvenes, o sea en matemáticas, sobre todo en el primer y segundo semestre. Y al mismo tiempo tenía un trabajo en una empresa de tecnología. Era sobre todo, era sobre todo basado en Access.
Jonathan: mm.
Gabriel: Era una empresa que hacía hardware y software para autos compartidos y para empresas que tenían muchos autos y se los alquilaban a sus empleados. Y ahí básicamente empecé como redactor de documentación primero, y luego se dieron cuenta de que yo también podía programar. Así que rápidamente pasé al área de programación. Sí. Y luego diría que las cosas cambiaron sobre todo cuando, en las últimas partes de las... que eran partes del estudio en las que tenías que ir, tenías que hacer seis semanas en la escuela y qué sé yo, y una vez cuatro semanas y demás. Y creo que... Se me hizo claro y evidente, también por hablar con profesores muy experimentados y muy, muy dedicados, profesores realmente dedicados, que básicamente los tiempos han cambiado mucho. Los estudiantes han cambiado mucho. Una profesora me dijo, ella siempre enseñaba quinto y sexto grado, y básicamente me decía: hace cinco años tenía un estudiante en mi clase que era un niño problema, en el sentido de que la escuela no era completa, que había divorcio o había problemas en casa, y demás. Y ahora tiene más del 50%,
Jonathan: Claro.
Gabriel: Y eso fue hace 10 o 15 años. 2000... seis o siete, eso debió haber sido, así que hace 15 años. Y eso mostró cuánto han cambiado las cosas. Y también me quedó muy claro que muchos estudiantes hoy en día simplemente ya no quieren aprender. Y el profesor siempre es el, básicamente el profesor siempre es el último. El último eslabón de todo el... Los padres y el director y los estudiantes. Básicamente todos son los amos del profesor. Sí. El profesor siempre es el último eslabón, por así decirlo, o no estoy seguro de cómo lo expresarías en inglés. Siempre es el que tiene que asumir toda la responsabilidad pero no tiene derechos, básicamente.
Jonathan: autoridad para, sí. Para actuar. Sí.
Gabriel: Sí.
Jonathan: Entonces, ¿tu decisión...? Bueno, perdón, te estoy interrumpiendo. Sigue, sigue.
Gabriel: Ese tipo de cosas, al menos me hizo pensar mucho. Y después de que terminé la universidad, simplemente volví a caer en la programación porque un amigo mío, él fue el que le dio a mi papá este trabajo de literatura. Básicamente me preguntó si podía ayudarlo con un proyecto. Y ese proyecto, que al principio se consideraba un proyecto de cuatro o seis semanas, se convirtió en un proyecto de dos años y medio o tres años y medio. O tres años y medio. Proyecto
Jonathan: El scope creep. El scope creep era real
Gabriel: Sí. Primero me pidió que lo ayudara con algo. Y luego siempre estaba en contacto con una persona de esta editorial en los... Y la editorial siempre decía: quiero una página pública para esto con la literatura. Quiero que la gente lea los libros completos en línea.
Jonathan: Ah, wow.
Gabriel: En un momento le dije a mi amigo, él estaba hablando con él por teléfono y dijo... yo dije que podría imaginarme haciendo eso. No tengo realmente nada que hacer ahora. Y él dijo: ah, Gabriel lo hace. Y así empezó. Así que
Jonathan: Wow.
Gabriel: Tuve un proyecto, sí, y luego trabajé tres años y medio en ese proyecto. Poniendo miles de libros en línea, toda la biblioteca de contenido
Jonathan: Wow.
Gabriel: el índice. Diferentes idiomas se conectan entre sí. Sí, el sitio web sigue en línea. Es egwwritings.org. Así que si a alguien le interesa mirarlo, tiene un diseño nuevo ahora. Lo vi alrededor de diciembre del año pasado, cambiaron el diseño, pero el código que hay debajo es...
Jonathan: Todo el mismo.
Gabriel: Casi todo mío, porque puedo verlo, porque era sobre todo basado en JavaScript.
Jonathan: Sí.
Gabriel: El código se ve muy... está organizado de manera diferente en archivos y todos los estilos diferentes siguen siendo los mismos.
Jonathan: Tendrás que enviarme el enlace y lo publicaremos en las notas del programa en el momento adecuado. Pero ahora tú, hiciste tres años y medio, qué, tres años de este proyecto. Pusiste, indexaste todo esto. ¿Usabas JavaScript como tu lenguaje principal en ese momento? ¿Cuál era tu, digamos, tu configuración técnica? ¿En qué te enfocabas?
Gabriel: Así que ese fue básicamente el gran paso de dejar atrás el software basado en Windows, que antes era Visual Basic y Visual Basic .NET. Y ahora era solo jQuery, JavaScript y PHP por detrás.
Jonathan: Ok.
Gabriel: También teníamos un acuerdo de que cada vez que yo investigaba, tenía una tarifa por hora más baja,
Jonathan: Mm-hmm.
Gabriel: era un tercio de cuando estaba realmente programando. Y sí, eso me dio la libertad de básicamente aprender sobre la marcha. Sí.
Jonathan: Genial. Entonces, ¿dónde, dónde...? Exercism. Y ahora haces un montón de cosas. ¿Es correcto decir que Go es como una característica principal de lo que haces? Mentorizas mucho y has estado, bueno, has estado involucrado en Exercism en Go y ayudando con ese lado de las cosas. ¿Cuándo empezó eso a entrar en escena y por qué te interesó? Adelante.
Gabriel: Sí, en 2016, ese fue mi primer trabajo después de ese gran proyecto. En realidad, hacia el final de eso, empecé a cambiarme a Go. En ese trabajo hice sobre todo algo de PHP y Python. Y eso se convirtió muy rápido en mi lenguaje favorito, mi lenguaje favorito porque tiene esa simplicidad. Básicamente intenta... De ese mundo loco de cada vez más funcionalidades y lenguajes y hacerlos cada vez más complejos y complicados y con mucha más carga para el desarrollador, porque tiene que elegir. De qué manera hacerlo. Y también tiene que entender todas las otras maneras en que otras personas lo hacen. Así que toda esa carga y Go de repente trajo esta tranquilidad y esto... De simplificar otra vez. Y eso muy rápido se convirtió en mi cosa número uno. Construí un prototipo en esa empresa como medio año antes de irme, porque querían cambiarse a Go y al principio, por supuesto, estaban esas cosas iniciales en las que tropiezas con cosas que no puedes hacer en el lenguaje, y luego entiendes por qué no tiene sentido hacerlo de esa manera, o por qué es mejor hacerlo así. Me interesaba mucho aprender a hacer estas cosas. Y así empecé a escuchar el pódcast Go Time. Ese es de Change Log.
Jonathan: Ok.
Gabriel: Y Katrina Owen estuvo en ese pódcast, creo que dos veces. Al menos dos veces la escuché, creo. Sí. Y así empecé a investigarlo. Creo que en 2017 me registré en Exercism. No estoy cien por ciento seguro, tendría que buscarlo y
Jonathan: Me lo imagino. ¿Sería justo?
Gabriel: Sí, creo que podría haber sido incluso la versión uno todavía, porque al principio no había, no recibí realmente, no recibí ninguna retroalimentación. Hice algunos ejercicios, pero nunca recibí retroalimentación, y podía dar retroalimentación a otros, y lo hice. Pero nunca recibí retroalimentación. Así que no había, no había un proceso para recibir realmente retroalimentación. Y era si quieres y si no, déjalo. Por así decirlo. Sí. Creo que esa era la versión uno, ¿no?
Jonathan: Me lo imagino. O sea, creo que ha habido bastantes cambios de la versión uno a la versión tres.
Gabriel: Sí. Sí.
Jonathan: La uno era poca retroalimentación. La versión dos requería cantidades extremas de retroalimentación, y luego la versión tres quedó en algún punto intermedio, un poco tal vez del lado de menos, pero no. Y tú, ¿estuviste involucrado en construir la versión tres y cómo, cómo...? Sí. ¿Cuál fue tu participación ahí? O sea, no lo tengo del todo claro, pero me encantaría entenderlo.
Gabriel: Quizá un paso atrás, si me permites. Básicamente volví después de la segunda entrevista. Escuché a Katrina en Exercism,
Jonathan: Ok.
Gabriel: ahí fue cuando existía la versión dos. Y cuando había mucho trabajo y estaba esto de que se necesitaba muchísima retroalimentación. Me metí en eso y me gustaba mucho dar esa retroalimentación. Y,
Jonathan: Mm-hmm.
Gabriel: básicamente empecé a pensar en cómo podría hacer esto más rápido. Sí. Porque me di cuenta rápido de que, sobre todo en los primeros ejercicios, era claro que iba a dar la misma respuesta una y otra y otra vez.
Jonathan: Sí.
Gabriel: Y por otro lado, por supuesto, a veces, estos dos problemas y a veces estaba este problema y otro. Así que básicamente empecé a optimizar esto. Empecé a escribir un pequeño programa en Go, que usa análisis estático porque quería entrar en el análisis. No lo había hecho antes. Quería conocerlo. Así que me interesaba probarlo de todas formas y parecía una buena idea. Porque seguía siendo código muy común o muy similar todo el tiempo. Las soluciones de un ejercicio, sobre todo las primeras, son muy similares. Así fue como entré en el análisis estático y simplemente buscaba diferentes patrones en el código y luego agregaba automáticamente bloques de respuesta o bloques predefinidos a la respuesta. Y básicamente empecé eso localmente y así fue como pude hacer alrededor de 100 a la semana, 102 a la semana. Y ni siquiera lo hacía a tiempo completo. Era además de mi trabajo. Y sí. Y luego empezó a, a Pitfield creo que fue el primero. John Arun, creo que es su nombre real. Él fue como el primero en decir: wow, esto es genial. Esto es súper. Y así fue básicamente como empezó a conocerse el trabajo que hacía y con el análisis estático. Y creo que eso fue una gran parte de la versión tres porque empezamos a pensar en cómo podemos básicamente reducir el trabajo de un tutor teniendo estas herramientas, este automático, este análisis estático o las herramientas que básicamente revisan el código automáticamente y dan retroalimentación automáticamente. Incluso completamente automáticamente sin que un mentor esté involucrado o tenga que estarlo. Y porque los mentores, estaba bastante claro que tenemos mentores y no son suficientes para el trabajo. Teníamos la herramienta de inversión y también veíamos que muchos mentores se estaban agotando, desaparecían y sí, era simplemente demasiado. Demasiado para muchos mentores. Sí. El trabajo era algo con rachas, tenían 500 o más soluciones por mentorizar o, y a veces había tiempos de espera de un mes o más. Y por supuesto esas eran condiciones en las que también los estudiantes simplemente se iban en algún momento. Sí.
Jonathan: Mmm. Es curioso porque creo que Jeremy decía el otro día que de todas, de todas las soluciones que se envían, algo como el 75% son totalmente únicas, lo cual también me parece fascinante. O sea, vas a un ejercicio como Hello World, obviamente es muy simple. Seguro que es un patrón estándar que se implementa con regularidad, y él dijo: la gente está probando todo tipo de cosas diferentes. Y es curioso cómo se da ese cruce, porque a medida que la programación se vuelve más popular y más gente se dedica al desarrollo y a la programación, uno se pregunta: bueno, ¿dónde va a empezar esa automatización a anular el papel del desarrollador? Yo me pregunto, no sé si lo hará. Creo que todavía se requiere demasiado, pero en términos de, no sé, no sé qué piensas tú sobre eso, pero sí siento que con Exercism últimamente hay un empujón enorme hacia la mentoría que es realmente fascinante porque, como decías, toma todas esas lecciones repetitivas que tienes que seguir dando y las pone de una manera que es manejable para que la gente las gestione. Al mismo tiempo, ¿se cruza con el hecho de que en realidad necesitas la interacción humana, un humano que realmente... con el contenido? Así que no sé si tienes alguna idea al respecto, pero me parece un espacio interesante en este punto.
Gabriel: Sí, no creo que los desarrolladores vayan a ser reemplazados muy pronto. Eso va a tomar bastante tiempo todavía. En el desarrollo, en las aplicaciones en general, en la mentoría, creo. Creo que el análisis estático y también la mentoría automatizada y la mentoría automatizada en general en Exercism pueden ser una gran ayuda. Pero se necesitan mentores para la mentoría de verdad, diría. Sí. Por ejemplo, tengo a alguien a quien mentorizo, como cada dos o tres meses tenemos una llamada, a veces más. Y lo mentorizo en su carrera, por así decirlo. Sí. Y también técnicamente, muy profundamente técnico, pero es una manera completamente distinta de mentorizar que solo mirar la solución y decirte qué puedes mejorar. Y creo que para eso siguen siendo necesarios los mentores que existen y definitivamente seguirán siendo necesarios, y creo que eso es algo en lo que podemos enfocarnos. Por otro lado, creo que no podemos reemplazar a los mentores por completo en, en las soluciones, y no creo que debiéramos. Podemos automatizar muchas cosas, pero aun así un mentor es alguien que puede señalar la dirección. Ahora pueden ver los problemas con los que estás luchando y pueden decirte: entiende esto y esto, no solo: necesitas mejorar tu código de esta manera.
Jonathan: Sí. Sí.
Gabriel: Y, para ser honesto, me gustaría tener más mentoría de vuelta en Exercism. Así que me pregunto si deberíamos
Jonathan: ¿Te refieres a la interacción cara a cara?
Gabriel: Sí. Me pregunto si deberíamos... Antes teníamos este camino de 10 ejercicios, y al menos eran 10, por los que tenías que pasar y solo podías continuar cuando te hubieran mentorizado.
Jonathan: Sí.
Gabriel: Y creo que con la automatización que tenemos ahora, en realidad podríamos volver a activar eso. O quizá no ahora, pero sí en el futuro. Y creo que me gustaría eso.
Jonathan: Definitivamente podríamos, deberíamos mencionarlo en una, en una llamada de la comunidad, porque creo que sería, sería genial retomar eso, traer eso de vuelta al foco. Entonces, Gabriel, una de las preguntas que a menudo hacemos y, y esta no es la que te mencioné antes, pero. Una de las preguntas que, que me gusta hacer porque siempre es muy interesante y diferente es: ¿la programación hizo clic para ti? Hay gente que diría que tuvo una experiencia en la que de repente todo tuvo sentido. Yo uso a menudo mi historia. Doy un ejemplo de la escuela cuando estaba aprendiendo química y en el Reino Unido, donde yo estudiaba. Tienes estos exámenes en... Y todo confluye en esos exámenes durante los tres años previos a esos exámenes. Así que tienes tres años de estudio y eso culmina en tu examen final. Y eso en todas las materias. Y uno de los temas obviamente era química. Y pasé unos tres años sin tener ni idea de química. Simplemente no podía, no lograba entenderla. Y luego, una semana antes del examen, fue como si se me hiciera la luz, la expresión de que la cosa simplemente tenía sentido. Y yo dije: Dios mío. Puedo obtener todo de la tabla periódica. Si conozco los números de la tabla periódica, puedo entender esto, aquello y lo otro. Y las cosas se volvieron muy simples, y fue como... ¿Tuviste un momento así con la programación o fue algo que simplemente... te pareció natural, y cuándo fue ese momento, si es que aplica?
Gabriel: No estoy seguro de haber tenido ese momento tan definido. Creo que ayudó mucho tener esa grabación de macros y simplemente mirar el código muy temprano con Visual Basic for Applications. No estoy seguro de si eso sigue existiendo hoy. Creo que todavía puedes... Word y hacerlo. Pero no es muy común tener algo así, donde puedes grabar y luego mirar el código y aprender de esa manera. Creo que eso me lo hizo mucho más fácil porque al principio me costaba mucho. Creo que hubo un tipo de momento en el que diría, bueno, no es que entendiera las cosas, sino que me di cuenta de algo. Si realmente estaba haciendo las cosas bien o mal fue cuando me uní a esa empresa, cuando era estudiante, fue básicamente la primera vez que trabajé. Trabajé junto con otros desarrolladores. Antes de eso, siempre estaba solo y básicamente tenía que hacer todo. Y siempre era una gran pregunta. ¿Normalmente se hace así? Se siente extraño. Se siente complicado. Se siente como si funcionara, pero ¿es correcto? Y ese tipo de cosa quedó respondida cuando me uní a esa empresa y empecé a ir ahí y. Definitivamente había mucho que necesitaba aprender y aprendí mucho. Por ejemplo, los recordsets de Access. Nunca los había entendido realmente antes. Trabajaba con ellos, pero
Jonathan: Mm.
Gabriel: sí, funcionaba
Jonathan: Sí. Algo
Gabriel: Luego realmente empecé a entenderlos. Así que puede que eso fuera algo donde hizo clic para mí, porque tenía una compañera de trabajo y ella me lo explicó, y realmente hizo clic. Un día entendí cómo funcionan y
Jonathan: Mm-hmm.
Gabriel: cómo se supone que funcionan y cómo usarlos correctamente y demás. Así que sí, quizá ese fue uno de esos puntos. Pero creo que esos puntos llegan muy seguido en nuestro trabajo. No creo que haya ese único punto, quizá ese sea uno, un punto inicial. Pero también con Go, hay tantos lugares donde puede hacer clic para mí, donde entiendo por qué algo es de esa manera y cómo se supone que debe usarse. Y, por ejemplo, context.
Gabriel: Sí. Por ejemplo, context.
Jonathan: Sí.
Gabriel: Sí. Por ejemplo, el paquete context se agregó en, no estoy seguro, en la 1.6 o 1.7 quizá. Por esa época, no los miré. Para ser honesto, no los necesitaba realmente al principio. Y luego llegué a uno... era como un meetup y alguien presentó sobre context, cómo usarlos, cómo, y demás. Y ese pensamiento
Jonathan: Hmm.
Gabriel: debería mirarlo. Pero aun así pasaron unos meses hasta que realmente los miré y entendí por qué están ahí. Y por ejemplo el canal cerrado, no estoy seguro si conoces a mucha gente que todavía propone en internet que cierres una goroutine con un canal cerrado y no deberías. Para eso está el context. Sí. Usas un context, cancelas el context y luego puedes cerrar la goroutine con eso. Si usas un canal cerrado, básicamente estás haciendo manualmente lo que un context hace internamente, y hay muchísimas trampas que evitar, muchísimos problemas que evitar, y por lo general la gente lo hace mal.
Jonathan: Seguro que tuviste un live, hiciste una transmisión en vivo y mencionaste algo sobre eso. Creo, sí, creo que recuerdo dónde mencionaste, ya sabes, simplemente usa context porque
Gabriel: Sí.
Jonathan: tiene mucho sentido.
Gabriel: Recuerdo haber mencionado esa parte.
Jonathan: Sí. Pero bueno, entonces en términos de, cuando has mentorizado a personas en el pasado, ¿cuáles son algunas de las...? ¿Puedes identificar... acciones o comportamientos o cosas que las personas que captan las cosas rápidamente, puedes ver qué hacen ellos que les permite posicionarse para aprender rápido o más eficazmente? ¿O es mucho de los mentores que, o personas que has mentorizado, que simplemente de forma natural están enganchadas de esa manera? ¿O hay personas que dices: wow, hacen cosas, hacen cosas que les permiten acelerar su...?
Gabriel: No estoy seguro de poder decir eso de otras personas. Definitivamente puedo decirlo de mí mismo. Aprendí, creo, de mis padres. Ellos aprendieron muchas cosas por su cuenta y eso es lo que también aprendí de ellos, a aprender cosas por mi cuenta. Así que aprendí programación completamente por mi cuenta. Estaba mi papá al principio. Había algunas cosas en la escuela. La mayoría del tiempo, en los últimos grados de la escuela, yo era en realidad, o éramos, casi todos nosotros éramos mejores que el profesor de todas formas, así que no había realmente aprendizaje. Había más bien algún tipo de aprendizaje entre nosotros. Pero
Jonathan: Sí.
Gabriel: en general, aprendí todo por mi cuenta. Y eso es algo que creo que necesitas en programación. Porque constantemente necesitas ahondar en cosas que no has visto antes. No sabes de ellas, necesitas leer sobre ellas. Así que, ¿cuál es la palabra? Esta. Habilidad. Sí. Esta habilidad de poder ahondar en algo y aprenderlo por tu cuenta, creo que es clave en programación para aprender. Y por supuesto puedes aprender mucho más rápido si encuentras a alguien que te hable de eso. Así que no quiero decir que no debas buscar un mentor, que no debas ir a Exercism, y demás. Eso te ayuda a crecer mucho más rápido, pero aun así eso es. Eso es lo que diría.
Jonathan: Me parece que tu aprendizaje vino a través de intentar resolver problemas de manera práctica. Así que ya fuera crear macros para hacer las cosas o para hacerlas más eficientemente, me da la impresión de que ese fue como un tema central que se ha repetido en, en, en tu vida en términos de aprendizaje, lo cual creo que probablemente se alinea mucho. En general, con lo que Exercism también intenta hacer en términos de ayudar a la gente a hacer cosas de manera práctica.
Gabriel: Sí. Totalmente.
Jonathan: Así que sí. Eso está muy bien. Entonces, Gabriel, ya no nos queda mucho tiempo, pero tengo dos finales... Bueno, no preguntas para ti. Una es una pregunta y te voy a pedir que compartas una opinión tuya, y luego la otra será, bueno, es una opinión que podrías... Te voy a pedir que le des una recomendación a la comunidad de algo que necesiten probar esta semana. Pero lo primero es que hemos hablado con muchas de las personas que hemos entrevistado antes, y si has escuchado este pódcast o esta transmisión en vivo por algún tiempo, sabrás que normalmente hacemos una gran pregunta hacia el final de, de, de nuestra transmisión en vivo. Y la pregunta es: ¿cuál es la colina por la que darías la vida en la tecnología? O sea, ¿cuál es la única opinión que sostienes con mucha firmeza, por la que te gustaría pararte y...? Y ten en cuenta que tienes que dar una buena razón para esto. No puedes simplemente decir: esta es mi opinión y ya. Tienes que poder defenderte en ese sentido. Pero ¿cuál sería esa opinión, si...? Y puede ser tan, tan, tan intensa o tan trivial como quieras. ¿Cuál sería?
Gabriel: Diría que era un proverbio. Tenemos un dicho en Go o alguien lo dijo en la comunidad de Go, y es que el código aburrido es mejor que el código ingenioso.
Jonathan: Me gusta. ¿Qué significa eso?
Gabriel: ¿Qué significa eso? Sí, básicamente resume una gran parte de la filosofía de Go en torno a la simplicidad y la legibilidad. Así que si en código Go piensas: wow, eso es ingenioso, en realidad es mal código. Aunque la persona que lo hizo fuera muy inteligente y lo hiciera de una manera muy ingeniosa. Y a veces siento que si de verdad sigues la simplicidad y los modismos de Go, no tienes realmente código en toda tu base de código que quieras señalar o puedas señalar: mira ese código, qué bueno es, porque todo tu código es en realidad aburrido y muy simple, y todos los que miren tu código dirán: ¿qué tiene de especial? Sí, pero el punto es que llegaste a la simplicidad porque eres un buen programador y es un proceso de iteración, y el código complicado, escribir código complicado es muy fácil. Escribir código simple es... Porque primero necesitas hacer el problema simple en tu mente, y luego necesitas escribir el código correctamente, y luego necesitas iterarlo y hacerlo simple. Y ese es un proceso mucho más largo y necesita desarrolladores mucho mejores que simplemente escribir código complicado, que cuando lo miras, es difícil de entender. Es difícil de leer y es difícil de mantener, y es difícil de cambiar.
Jonathan: Es lo, es esta cosa constante de los trade-offs, ¿no? Yo soy bastante joven en el mundo tech, tres años, y no vengo de una perspectiva de desarrollo. Vengo más del lado de producto, del lado de producto de las cosas. Más de la perspectiva de negocio. Y podrías decir. Y una de las cosas que fue realmente interesante fue que se hizo cada vez más evidente que todo se trata de trade-offs. Así que dices, es como el trade-off es código simple versus código complicado, mientras que el código complicado podría ser más engorroso y complicado después. El código simple podría tomar más tiempo y requerir más energía y esfuerzo por adelantado. Y ese es el trade-off que se hace constantemente. Así que esa fue una de las... No sé qué piensas sobre eso, pero me da la impresión de que, de que realmente, o sea, esa parte de la simplicidad, porque recuerdo que mi mamá tenía, tenía un amigo en la universidad y él solo escribía ensayos para sus tareas que eran de dos páginas. Porque podía condensar todo en dos páginas, y obtenía las mejores notas por eso. Así que creo que, se alinea con todo el concepto de, de simplicidad, que creo que es realmente difícil escribir código simple porque requiere un pensamiento claro, claro, no solo programar. Así que creo que esa es una, esa es una colina digna, y creo que lo has iterado. Lo has, lo has explicado muy bien. Genial. Entonces, Gabriel, la pregunta final de esta semana. Y ahora puedes dar un poco de consejo a la comunidad de Exercism. Y puede ser cualquier cosa. Puede ser consejo de salud, consejo dietético. Es tu oportunidad de compartir un consejo que le darías a la comunidad y puede ser cualquier cosa que quieras. Entonces, ¿cuál sería tu recomendación para la comunidad de Exercism esta semana? ¿Qué una cosa necesitan probar o hacer, desde tu pers...?
Gabriel: Ah, esa es difícil. Ok, ahora que dices que puede ser cualquier cosa, ¿puedo darte dos cosas?
Jonathan: Te dejo, te dejo hacer dos
Gabriel: Ok. Una, una recomendación. En realidad soy vegetariano. Crecí vegetariano. Nunca he comido carne, y en realidad crecí vegano, la mayor parte, la mayor parte de mi infancia y juventud. Así que prueba una semana sin ningún producto lácteo. Y esa sería una. Y otra recomendación sería, no estoy seguro de si puedas hacerlo en una semana, pero si eres un buen desarrollador, puedes, es muy interesante y muy valioso intentar construir memoria compartida, compartida entre múltiples servicios, el mismo servicio, memoria compartida. Intenta implementar una memoria compartida usando el protocolo Raft. Puedes usar una biblioteca. No necesitas implementar Raft en sí, pero
Jonathan: Raft Vas a tener que darme, vas a tener que enviarme el enlace para que pueda publicarlo. Así que ese es el desafío de Gabriel... Bueno, quizá deberíamos llamarlo el desafío de Gabriel para la semana. Quizá no tanto recomendación. Quizá necesitamos
Gabriel: Sí. Es más bien algo para probar.
Jonathan: Tú envías, tú envías un desafío. Eso podría ser, podría ser divertido. Pero genial. Entonces, semana de cero productos cárnicos. A ver cómo te va, y construir un servidor de memoria compartida. ¿Qué dirías? Servicio, compartido
Gabriel: Sí, podrías llamarlo el almacén de clave-valor en memoria.
Jonathan: Ok.
Gabriel: Así que múltiples servicios, una base de datos o un servicio. Sí.
Jonathan: Genial. Eso es
Gabriel: Porque te enseña mucho sobre cómo funcionan las bases de datos. Sí. Por debajo. Sobre todo las de modelo compartido, que son compartidas, sí, no estoy seguro. Sí. Cassandra / Skylar, no estoy seguro de si tienes Skylar. Es como Cassandra, pero en C++ y ahora se están cambiando al protocolo Raft. O... Es una base de datos clave-valor. Una compartida es una base, no, no es una base de datos. Es return management. Sí, Be degraff de Degraf Beja. Ese, creo que también usará Raft por debajo para distribuir los datos. No puedo decirlo con seguridad, tendría que buscarlo de nuevo. Pero hay muchas bases de datos que lo usan. Sistema distribuido. Así que el sistema distribuido es básicamente un gran desafío, diría, de nuestros tiempos modernos. Estamos en el proceso de resolverlo, pero todavía hay muchos desafíos por superar y sí, siempre es bueno poder pensar en ese sentido, porque si puedes, entonces se abren muchas posibilidades.
Jonathan: Mmm.
Gabriel: Si necesitas algo. En mi última empresa en realidad iba por ese camino, tener memoria compartida entre múltiples servicios al mismo tiempo. Sí.
Jonathan: Quizá, quizá necesitamos alinear esto como una clase magistral. Les daremos a las personas un par de semanas para intentarlo. Y luego, Gabriel,
Gabriel: ese es el... esa es la clase magistral
Jonathan: Sí,
Gabriel: cuando termines con Exercism y hayas hecho todos los ejercicios.
Jonathan: Ese es el grande. El grande. Lo une todo, lo une todo. Gabriel, muchísimas gracias por tu tiempo. Ha sido un verdadero placer charlar contigo esta noche. Si quieres quedarte después de que, después de que terminemos la grabación, solo un momento, pero solo quería decirte un enorme gracias y apreciar mucho todo lo que aportas a Exercism y no solo para nosotros, sino toda la mentoría que haces más allá y que ayuda a la gente a escribir mejor código. Estoy seguro de que se aprecia enormemente en todas partes. Así que gracias por tu tiempo y. Escríbele a Gabriel. Si estás en Exercism, mándale un mensaje, pídele mentoría y estoy seguro de que la pasarás bien con Gabriel. Genial.
Gabriel: Muchísimas gracias.
Jonathan: ...terminar la grabación. Sí, no, gracias por, gracias por acompañarnos y nos veremos pronto en alguna forma de plataforma en algún lugar
Gabriel: Gracias.
Escucha, aprende e inspírate con los miembros de nuestra comunidad.