Una entrevista con Ryan Potts en la que él y Jeremy Walker hablan de Delphi, de las cosas que ha aprendido siendo colaborador de Exercism y de sus experiencias programando en industrias que todavía están «offline».
Hola, Ryan. Gracias por dedicar un rato a charlar conmigo. Eres el responsable del track de Delphi en Exercism. ¿Cómo te adentraste en Delphi?
Trabajo en una empresa que fundó mi padre, que lleva desarrollando software desde los años 80, empezando con Microsoft Pascal y usando después el Turbo Pascal de Borland. Me incorporé a la empresa en el 96, más o menos cuando esta empezaba a recibir peticiones para crear software que funcionara en Windows, en lugar de DOS. Y, casualmente, Borland acababa de lanzar Delphi 1. Nos venía como anillo al dedo, porque la mayoría de las unidades que se habían desarrollado a lo largo de los años se podían seguir usando. 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 I+D y pruebas de lotes pequeños en el sector de la automoción: se prueban neumáticos, asientos de coche, infladores de airbag, además de realizar ensayos de choque. Todos los sistemas que se producen los usan varios fabricantes de automóviles de todo el mundo, así como sus proveedores.
El software en el que trabajo sirve para controlar estos distintos tipos de máquinas. Yo desarrollo la interfaz de usuario, determino las secuencias de prueba para las partes automatizadas de los ensayos e 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 formación mínima se sienta cómoda usándolo.
El trabajo que hago no requiere nada de programación web. Todo lo que hago es en Delphi sobre Windows. De vez en cuando tengo que preparar rápidamente un pequeño «comando personalizado» en C++ que luego subo a la placa procesadora de adquisición de datos, que es un ordenador paralelo alojado en una ranura PCI del ordenador; 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 resulta bastante inusual, pero me pregunto si eso es solo la relación señal/ruido de la que oigo hablar a diario, y no un reflejo de la industria.
Sí, participar en Exercism me ha permitido ver un poco cómo vive la «otra mitad» de la industria informática. He aprendido mucho sobre el desarrollo guiado por pruebas (TDD), a moverme por GitHub y a trabajar en un proyecto de código abierto. Mucho de lo que he aprendido ha mejorado la calidad del trabajo que hago en mi empleo.
Me alegra mucho oírlo. 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 responsable de un track ha potenciado aún más ese aprendizaje, ¿no?
Sin duda. Escribo más pruebas que antes. No siempre es TDD como tal, a veces las pruebas llegan después en lugar de antes. Aun así, ha influido en cómo estructuro el código, eliminando dependencias innecesarias para que sea más fácil probarlo.
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 propuesto 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 enfoques posibles para los problemas técnicos del trabajo.
También he aprendido más sobre mentoría; en particular, la importancia de conocer el porqué de fondo y no solo el cómo. Trabajo con un puñado de programadores más. 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 el funcionamiento de una máquina o explicar por qué algo hay que hacerlo de una manera concreta.
Más allá de Exercism, también eres MVP de Delphi, ¡lo cual es impresionante! ¿Cómo surgió? ¿Formas parte de una comunidad fuerte de Delphi?
Durante las primeras fases de la creación del track 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 dejar que la gente contribuyera mediante pull requests. Jim me invitó a unirme al Programa MVP de Embarcadero durante nuestra correspondencia.
Delphi Praxis es una comunidad en línea que conozco. Hay mucho tráfico en Google+, pero está en declive, así que tenemos que ir a otro sitio.
¿Has creado alguna aplicación de código abierto en Delphi que otros puedan ver?
¡Pues 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 y luego descarga la CLI, la extrae y la coloca en el sitio correcto. El instalador se ha descargado 15.000 veces, ¡y estoy bastante orgulloso de ello!
¡Es un logro fantástico! Como alguien que no hace mucha programación para internet (si es que hace alguna), ¿qué dificultades encontraste al crear el instalador en Delphi?
El instalador estaba escrito inicialmente en C#. Se había quedado obsoleto 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 entre bastidores y luego intentar 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 encadenar correctamente los componentes disponibles para crear un cliente REST. También descubrí una utilidad muy práctica que viene con Delphi llamada REST Debugger. Me permitía introducir y, por tanto, probar las distintas llamadas HTTP necesarias para que el instalador funcionara. Una vez que funcionan, el depurador crea copias de los componentes necesarios para que yo pudiera pegarlas en el código.
Para alguien que quiera implicarse más en Exercism, quizá alguien que espera convertirse en responsable, ¿puedes contarnos cuál fue tu recorrido?
Formo parte de un grupo local de MeetUp llamado Akron Code Club. Nos reunimos aproximadamente una vez al mes y normalmente nos emparejamos para resolver una kata de código que alguien ha propuesto al grupo. En la quedada de agosto de 2016 empezamos a trabajar con ejercicios de Exercism. Mientras usaba Exercism y otros sitios de aprendizaje, pensé que estaría bien que más de estos sitios de programación en línea ofrecieran Delphi o Pascal como opción. Tras echar un vistazo al sitio de Exercism y a los repositorios de Exercism en GitHub, descubrí que Exercism siempre está interesado en añadir nuevos tracks de lenguajes. No tenía muy claro cuál era la mejor forma de contactar con Katrina. Creo que usé Gitter para escribirle en agosto del 16 proponiéndole añadir Delphi. Recibí una respuesta disculpándose unos dos meses después, y fue entonces cuando me di cuenta de que ella no usa Gitter. En cualquier caso, me preguntaba si seguía interesado en trabajar para añadir un track de Delphi Pascal y, de ser así, lo pondría en marcha.
Ahora hay un repositorio que puedes usar para solicitar un nuevo track de lenguaje, y siempre puedes abrir issues en el repositorio exercism/exercism para ponerte en contacto con los responsables del proyecto.
Genial. ¡Gracias por charlar conmigo y por todo tu trabajo en Exercism!
¡Un placer! Ha sido divertido. Me gusta participar y hacer lo que puedo por Exercism. ¡Aprender haciendo!