Una entrevista con Ryan Potts en la que él y Jeremy Walker hablan sobre Delphi, lo que ha aprendido al ser colaborador de Exercism y sus experiencias programando en industrias que todavía están «offline».
Hola Ryan. Gracias por tomarte el tiempo de charlar conmigo. Eres el mantenedor de la pista de Delphi en Exercism. ¿Cómo llegaste a Delphi?
Trabajo para una empresa que fundó mi padre, que desarrolla software desde los años 80, empezando con Microsoft Pascal y más tarde con Turbo Pascal de Borland. Empecé a trabajar en la empresa en el 96, más o menos cuando estaba recibiendo solicitudes para producir software que corriera en Windows en lugar de DOS. Y dio la casualidad de que Borland acababa de lanzar Delphi 1. Nos venía perfecto, porque la mayoría de las unidades que se habían desarrollado a lo largo de los años todavía se podían usar. Ya no teníamos que empezar de cero en VB o VC para dar soporte a Windows.
¿Y sigues usando Delphi en tu día a día?
Sí, donde trabajo se producen máquinas para pruebas de investigación y desarrollo (I+D) y pruebas de lotes pequeños en la industria automotriz: se prueban llantas, asientos de auto e infladores de bolsas de aire, además de hacer pruebas de choque. Todos los sistemas que se producen los usan varios fabricantes de autos de todo el mundo, así como sus proveedores.
El software en el que trabajo se usa para controlar estos distintos tipos de máquinas. Desarrollo la interfaz de usuario (UI), determino las secuencias de prueba para las partes automatizadas de las pruebas y integro los distintos puntos de entrada y salida, tanto analógicos como digitales. Tiene que ser lo más fácil de usar posible, para que una persona con una capacitación mínima se sienta bastante cómoda usándolo.
El trabajo que hago no requiere nada de programación web. Todo lo hago en Delphi sobre Windows. De vez en cuando tengo que escribir un pequeño «comando personalizado» en C++ que después subo a la tarjeta procesadora de adquisición de datos, que es una computadora paralela que va en una ranura PCI de la computadora; tiene su propia CPU, memoria y sistema operativo.
Es fascinante charlar con alguien que no hace nada de programación web. Hoy en día eso se siente bastante inusual, pero me pregunto si será solo la relación señal/ruido de la que oigo hablar día tras día y no un reflejo de la industria.
Sí, participar en Exercism me ha permitido ver un poco cómo vive la «otra mitad» en la industria de la computación. He aprendido mucho sobre el desarrollo guiado por pruebas (TDD), sobre cómo moverme en GitHub y sobre trabajar en un proyecto de código abierto. Gran parte de lo que he aprendido ha mejorado la calidad del trabajo que hago en mi empleo.
Me da mucho gusto oír eso. Una de las cosas que más me gustan de Exercism es esa sensación de «cómo vive la otra mitad»: darte cuenta de todos tus puntos ciegos y aprender sobre cosas que no sabías ni que existían. Imagino que ser mantenedor de una pista ha potenciado aún más ese aprendizaje, ¿no?
Así es. Escribo más pruebas que antes. No siempre es TDD como tal; a veces las pruebas vienen después en lugar de antes. Sin embargo, ha influido en cómo estructuro el código, eliminando dependencias innecesarias para facilitar las pruebas.
Paso mucho tiempo revisando issues y PRs en el repositorio problem-specifications, que es donde definimos los ejercicios de Exercism de forma independiente del lenguaje. He aprendido mucho de las discusiones. A veces un cambio sugerido parece sencillo a primera vista, pero la conversación que sigue saca a la luz problemas. He desarrollado más paciencia. Me ha enseñado a buscar otros ángulos posibles en los problemas técnicos del trabajo.
También he aprendido más sobre mentoría; en particular, sobre la importancia de conocer el porqué de fondo en lugar de solo el cómo. Trabajo con un puñado de otros programadores. Aunque soy más joven que la mayoría de ellos, llevo más tiempo en la empresa que ellos, y a menudo puedo señalar un enfoque más eficiente para secuenciar la operación de una máquina o explicar por qué algo debe hacerse de una manera concreta.
Más allá de Exercism, también eres MVP de Delphi, ¡lo cual es genial! ¿Cómo surgió eso? ¿Formas parte de una comunidad fuerte de Delphi?
Durante las etapas iniciales de la creación de la pista de Delphi, me puse en contacto con el señor Jim McKeeth, de Embarcadero, para ver si podíamos conseguir una licencia de código abierto para Delphi. Eso nos permitiría usar Delphi para desarrollar nuevos ejercicios y permitir que la gente colaborara mediante pull requests. Jim me invitó a unirme al Programa MVP de Embarcadero en el curso de nuestra correspondencia.
Delphi Praxis es una comunidad en línea que conozco. Hay mucho tráfico en Google+, pero está de salida, así que tenemos que ir a otro lado.
¿Has creado alguna aplicación de código abierto en Delphi que otros puedan ver?
¡Sí! El instalador de la CLI de Exercism para Windows es de código abierto y está escrito enteramente en Delphi. Determina automáticamente la versión correcta (32/64 bits) de la CLI de Exercism que necesita el estudiante, luego descarga la CLI, la descomprime y la coloca en el lugar correcto. El instalador se ha descargado 15.000 veces, ¡y estoy bastante orgulloso de eso!
¡Eso es un logro fantástico! Como alguien que no hace mucha (o ninguna) programación para internet, ¿qué desafíos enfrentaste al crear el instalador en Delphi?
El instalador estaba escrito inicialmente en C#. Estaba desactualizado y decidí ver si podía mejorarlo. Nunca había intentado algo así, pero sabía que Delphi tenía las herramientas para hacer el trabajo. Empecé estudiando el código original en C# para entender qué secuencia de eventos ocurría detrás de escena y luego tratar de lograr las mismas tareas en Delphi. Encontré código de ejemplo en el sitio de documentación de Embarcadero que ayudaba a explicar cómo armar correctamente los componentes disponibles para crear un cliente REST. También descubrí una utilidad práctica que viene con Delphi llamada REST Debugger. Me permitía introducir y así probar las distintas llamadas HTTP que se necesitan para que el instalador funcione. Una vez que funcionan, el depurador crea copias de los componentes necesarios para que yo pudiera pegarlas en el código.
Para alguien que quiere adentrarse más en Exercism, tal vez alguien que espera convertirse en mantenedor, ¿puedes contarnos cómo fue tu recorrido?
Soy miembro de un grupo local de Meetup llamado Akron Code Club. Más o menos una vez al mes nos reunimos y por lo general nos emparejamos y resolvemos una kata de código que alguien ha sugerido al grupo. En la reunión de agosto de 2016 empezamos a resolver ejercicios que ofrece Exercism. Como usaba Exercism y algunos de los otros sitios de enseñanza, pensé que sería bueno que más de estos sitios de programación en línea ofrecieran Delphi o Pascal como opción. Después de mirar el sitio de Exercism y los repositorios de GitHub de Exercism, descubrí que a Exercism siempre le interesa agregar nuevas pistas de lenguaje. No estaba muy seguro de cuál era la mejor manera de contactar a Katrina. Creo que usé Gitter para escribirle en agosto del 16 proponiéndole agregar Delphi. Recibí una respuesta con disculpas unos dos meses después, y fue ahí cuando me di cuenta de que ella no usa Gitter. En fin, se preguntaba si todavía me interesaba trabajar en agregar una pista de Delphi Pascal y, de ser así, pondría todo en marcha.
Ahora hay un repositorio que puedes usar para solicitar una nueva pista de lenguaje, y siempre puedes abrir issues en el repositorio exercism/exercism para ponerte en contacto con los mantenedores del proyecto.
Genial. ¡Gracias por charlar conmigo y por todo tu trabajo en Exercism!
¡Con gusto! Ha sido divertido. Disfruto participar y hacer lo que puedo por Exercism. ¡Aprender haciendo!