Uploaded avatar of iHiD

Entrevista con Erik Schierboom

@iHiD
hace Más de 7 años

Una entrevista con Erik Schierboom en la que él y Jeremy Walker hablan sobre programación funcional, el mantenimiento de tracks de Exercism y el próximo análisis estático de las soluciones de Exercism.

Hola, Erik. ¡Gracias por aparecer en el primer reconocimiento a los colaboradores de Exercism! Queríamos destacar tu trabajo porque sentimos que contribuyes a cada parte de Exercism y que tienes muy buenas ideas gracias a trabajar en todo el proyecto.

Y para dar un poco de contexto, ¿cómo te involucraste por primera vez en Exercism?

En 2014 hice un curso de programación funcional que usaba Scala como lenguaje. Al terminar el curso, busqué recursos para seguir mejorando mis habilidades con Scala y encontré Exercism. No pasó mucho tiempo antes de que me enganchara y empezara a hacer también otros tracks de lenguajes en Exercism. Como me beneficié mucho de los comentarios que la gente dejaba en mis soluciones, empecé a comentar soluciones en el track de C#. En algún momento me pidieron que me convirtiera en mantenedor del track de C#, y lo acepté con gusto. Cinco años después, hoy soy mentor en los tracks de C# y F#, mantenedor de los tracks de C#, F# y Scala, y ayudo a trabajar en las especificaciones de problemas entre tracks.

Qué bueno. Entonces te involucraste en Exercism cuando estaba dando sus primeros pasos. Para quienes no lo saben, ¿podrías explicar qué significa ser mantenedor de Exercism?

Claro. En términos abstractos, un mantenedor de Exercism es responsable de la «salud» de un track. En la práctica, eso puede significar muchísimas cosas, como implementar ejercicios nuevos, actualizar ejercicios existentes o revisar pull requests de otros mantenedores. Otro aspecto importante es ordenar correctamente los ejercicios de un track, para asegurar que los estudiantes tengan la mejor experiencia de aprendizaje posible. Ojo: ser mantenedor no significa tener que participar en todas las actividades que mencioné; es perfectamente válido que un mantenedor se concentre solo en una o dos actividades.

¡Gracias! Entonces, además de tu enfoque en C#, F# y Scala, has trabajado prácticamente en todos los tracks de lenguajes de Exercism. ¿Tienes algunos favoritos desde el punto de vista de quien aprende?

Aunque he aprendido muchísimo en cada track en el que he trabajado, mi track favorito tiene que ser el de Haskell. No solo es un gran lenguaje con muchos conceptos interesantes, sino que la calidad de sus mentores era realmente impresionante. Otros favoritos son los tracks de Kotlin y F#, ya que Kotlin y F# son lenguajes muy bien diseñados y pragmáticos en los que me encanta programar.

Sí, he oído muchas cosas buenas sobre los mentores de Haskell. Me imagino que trabajar en tantos tracks te dio muchísimas ideas interesantes sobre cómo programar. ¿Hubo algo en particular que aprendieras de esa experiencia?

Ah, sí, ¡un montón de cosas! Trabajar con una gran variedad de lenguajes te expone a muchas formas distintas de abordar los problemas. Todas esas formas diferentes han influido de alguna manera en mi estilo de programar, aunque los lenguajes funcionales probablemente han sido los que más me han influido. Ahora me doy cuenta de que uso conceptos funcionales siempre que puedo, incluso en lenguajes que no son funcionales (que poco a poco van incorporando características funcionales).

También he aprendido que, aunque cada lenguaje es diferente, muchos en realidad son bastante parecidos. Como resultado, aprender un lenguaje nuevo es mucho más fácil una vez que conoces un par de ellos. Por ejemplo, saber Haskell significa que probablemente puedas aprender F# o Scala con relativa rapidez. Aprender lenguajes nuevos también podría ser una buena jugada para tu carrera, porque te permitirá cambiar de un lenguaje a otro con más facilidad.

Por último, he aprendido que contar con mentores que te guíen mientras aprendes un lenguaje hace todo el proceso mucho más agradable y efectivo.

A mí me pasa lo mismo. ¡Aprender de otras personas multiplica muchísimo! Desde un punto de vista práctico, ¿cómo te las arreglabas con toda la configuración de los distintos lenguajes? A menudo me da un poco de miedo la idea de aprender un IDE nuevo. ¿Te mantenías con un editor que ya conocías mientras trabajabas en los lenguajes, o lo variabas para intentar tener una experiencia más idiomática?

En algunos lenguajes, configurar un entorno de desarrollo nuevo solía ser un poco complicado, pero hoy en día la mayoría de los lenguajes son bastante fáciles de configurar. Después trato de encontrar un IDE que me dé la mejor experiencia para ese lenguaje en concreto. Como trabajo alternando entre Windows y Mac OS, el IDE también debe ser multiplataforma. Un ejemplo de un gran IDE multiplataforma es Visual Studio Code, que uso para los tracks de Haskell, JavaScript, TypeScript, Elm y Elixir. Para los demás tracks uso un IDE de JetBrains: Rider para C# y F#, IntelliJ IDEA para Java, Scala y Kotlin, y por último RubyMine para Ruby (nota: estos también son IDE multiplataforma). Como ves, uso varios editores para obtener la mejor experiencia en cada lenguaje (aunque los IDE de Jetbrains, obviamente, son bastante parecidos).

Consejo: si eres colaborador principal de un proyecto de código abierto, Jetbrains te permite solicitar una licencia gratuita de código abierto!

Eso es súper útil. ¡Gracias! Entonces, eres mantenedor de C#, F# y Scala. ¿Qué te atrae en particular de esos lenguajes?

C# se convirtió de inmediato en mi lenguaje favorito cuando se lanzó en 2002. Es un lenguaje elegante y bien diseñado, con excelentes herramientas y documentación. Además, el lenguaje evoluciona muy rápido, ¡así que siempre hay algo nuevo que aprender! Otro punto a favor es que se ejecuta sobre el excelente framework .NET (Core).

F# también fue amor a primera vista. Con su sintaxis elegante y su amplio conjunto de características (funcionales), descubrí que podía hacer más con menos código, sobre todo al modelar dominios. También es un lenguaje muy pragmático, con características orientadas a objetos y una gran interoperabilidad con el código .NET existente (se ejecuta sobre el mismo framework .NET (Core) que C#). Una fortaleza adicional son sus herramientas, que están entre las mejores que existen para lenguajes funcionales. Y como extra, tiene una de mis introducciones a un lenguaje favoritas de todas: el sitio fsharpforfunandprofit.

Scala fue el lenguaje que me introdujo a la programación funcional, así que por esa razón tiene un lugar especial en mi corazón. Al igual que F#, es un lenguaje pragmático, por razones muy similares. Con su integración al ecosistema de Java, ayudó mucho a popularizar la programación funcional.

Es interesante que empezaras con la programación funcional a través de Scala, que seas mentor de F#, pero que consideres a Haskell el mejor track. Para alguien que quiere lanzarse a la programación funcional en Exercism, ¿cuál de esos le recomendarías probar primero?

¡Muy buena pregunta! Mi voto va para F#, porque siento que es el lenguaje más fácil de aprender. Esto se debe principalmente a que el lenguaje F# es menos complejo que los otros dos. Las excelentes herramientas y documentación de F# también son un gran plus cuando empiezas. Dicho esto, recomiendo mucho que también te unas al track de Haskell cuando termines el de F#, porque Haskell tiene algunas características avanzadas fantásticas que F# no tiene.

Has estado al tanto de bastantes de nuestros planes para el futuro de Exercism. ¿Hay algo del proyecto que te entusiasme en particular?

De todas las mejoras que se están planeando, la que más me entusiasma es el análisis estático de las soluciones. La idea es que armemos un sistema que pueda comentar automáticamente las soluciones enviadas, analizando esas soluciones de forma programática en busca de problemas o sugerencias comunes. Esto debería ayudar mucho a los mentores, porque ya no tendrían que comentar esos problemas o sugerencias comunes y podrían concentrarse en problemas más interesantes.

Si te interesa, mira mi prototipo (todavía temprano) de un analizador para el track de C#, que usa la .NET Compiler Platform para analizar estáticamente código C#.

Sí, el análisis estático es más o menos lo que más me entusiasma a mí también. Es genial ver que ya tienes un prototipo armado. Creo que la mejora de velocidad que nos dará el análisis estático transformará radicalmente Exercism, y me entusiasma mucho cómo podemos extenderlo para enseñarle a programar a personas que recién empiezan. Creo que es un verdadero antes y después.

Última pregunta: ¿tienes proyectos personales o causas que te lleguen al corazón y que quieras mencionar?

Para mí, involucrarme en Exercism, contribuir a su base de código abierto y dar mentoría a otras personas ha sido una experiencia increíblemente gratificante. He aprendido un montón de cosas, he conocido a gente bastante increíble y siento que he podido ayudar a muchas personas.

Me gustaría animar a más gente a ver si también puede involucrarse. Si tienes un lenguaje que te apasiona y quieres ayudar a que otros lo aprendan, regístrate como mentor en Exercism. Si prefieres escribir código, elige un proyecto de código abierto y contribuye. ¡Te prometo que da mucho menos miedo de lo que parece y que te vas a sentir genial haciéndolo!

¡Genial! ¡Gracias por tomarte el tiempo de conversar y por todo tu trabajo en Exercism!

lunes, 21 de enero de 2019 · ¿Te resultó útil?