Programar es un acto creativo: conversación con Joan Travé
A Joan Travé lo conocí gracias a Twitch, en un directo donde me explicó algunas cosas que estaba haciendo mal con operaciones de bits en python.
Estudió en Barcelona, ha trabajado como frontend y backend, escribe ficción, y desde pequeño tiene claro que quiere dar clases en la universidad.
Cómo empezó: un libro de HTML
Durante mi etapa del instituto yo leía muchos libros, y no es que me interesara especialmente la programación ni la informática. Pero cayó en mis manos, de la biblioteca, un libro de HTML —que si bien no es programación porque es un lenguaje de etiquetas, es una manera de iniciarte.
Maquetó alguna página web y ahí se quedó la cosa. Años después aprendió algo de python para un trabajo del instituto.
Sobre su etapa escolar es directo: sólo había una o dos materias que me iban bien, física y matemáticas, y en lo demás sacaba suficiente en todo prácticamente.
Yo creo que ahí hay un patrón: si te gustan las matemáticas y entiendes la lógica que hay detrás, la lógica de la programación es muy parecida.
Y de hecho eso le cambió la carrera. Entró al grado de matemáticas, donde desde el primer curso hay varias materias de programación —en C, que ya es complicado para empezar—, y:
Me gustó mucho más la asignatura de programación que la carrera. Por eso dejé matemáticas y me cambié a ingeniería informática.
La beca que no sabía que existía
Le pregunté por una beca de colaboración que ganó, y la historia de cómo se enteró me pareció tan reveladora que le di su propio texto.
La eligió para colaborar en algorítmica: es mi asignatura favorita, pero de calle. Quiere hacer el máster y el trabajo de fin de grado de algorítmica.
Cómo empezar con algoritmos
Su recomendación:
Aprender python. Y no hace falta que sepas mucho, pero sí tener una base. Los algoritmos son muy bonitos de estudiar y de saber cómo funcionan, pero hasta que no te subes las mangas y no te pones a programar un algoritmo —una búsqueda informada o lo que sea— no puedes tocarlos. Y es muy importante poder tocar los algoritmos.
Su primer algoritmo, como casi todos: quicksort. En C, durante la carrera de matemáticas.
Cómo se entra al mercado laboral
Un compañero de clase trabajaba en una consultora. Le pasó el correo y le dijo que dijera que iba de su parte.
Joan pidió prácticas extracurriculares. Le dijeron que el periodo estaba cerrado.
Y entonces hizo lo que hizo la diferencia:
Y dije: "¿y contrato laboral?", para lanzar un poco. Y me dijeron: bueno, ven y te entrevistamos. Fui, me entrevistaron, les gusté, y entré con contrato laboral y periodo de prueba de tres meses.
Backend, datos, frontend, y el COVID en medio
Quería entrar a inteligencia artificial. Le dijeron que en esa empresa era muy difícil entrar directo ahí, pero que como le gustaba python, tenían un web service con backend en Flask. Duró unos tres meses.
Después pidió el departamento de ingeniería de datos: python, la librería pandas, muchos gráficos.
Y entonces el coronavirus. Muchos clientes cerraron o pararon proyectos. Y ahí una observación que dice bastante sobre cómo se valoran las cosas cuando aprieta:
Los proyectos de ingeniería de datos, muchos de ellos son cosas muy experimentales que a lo mejor no les aportan tanto, y fueron de los primeros proyectos que cerraron.
Sobrevivió un cliente de web services, pero la vacante era de frontend. La aceptó por curiosidad, y estaba aprendiendo React y servicios de AWS.
El pique Front contra Back
Cuando entré haciendo backend, había el pique. Los de Back les decíamos a los de Front que lo suyo era lo más fácil. Y ahora que he entrado en esto, estoy viendo que no. Tiene su chiste.
Le agregué la explicación estructural: como el frontend es lo que el cliente toca directamente, es lo que más cambios va a tener, y eso sube la complejidad.
Joan lo conectó con algo más grande: en relación a esto está el diseño del software, el preparar el código para que luego los cambios sean lo más baratos posible.
Lógica contra creatividad
Le planteé la separación habitual entre gente lógica y gente creativa, porque él tiene las dos cosas: programa y escribe. (Su página web me sacó varias carcajadas.)
Escribe desde antes que programar: desde muy pequeño. Casi ni recuerdo cuándo empecé a escribir historias, porque es algo que me gusta: imaginar, le doy mucho al coco, ideas locas, y luego las escribo.
Y rechazó la premisa:
Es algo que no lo acabo de ver así, porque yo creo que para programar uno necesita ser creativo: necesita imaginarse las soluciones y pensarlas de cero muchas veces.
Gente me ha dicho que no se pensaban que se necesitaría imaginación para programar.
De ahí salió también algo que a mí me parece una prueba de comprensión: si no puedes dibujarlo, no lo has entendido.
Su motor
Le pregunté por qué querer resolver un problema difícil. Su respuesta abre el episodio:
Una vez resuelves un problema que te estaba rompiendo la cabeza, que no sabías por dónde tirar, y luego se te ilumina y lo resuelves... el hecho de terminarlo, de cerrar el ciclo y decir "vale, ya está hecho, ésta es la solución, y además funciona para todos los casos"... para mí eso te da una satisfacción que es un incentivo de sobras para buscar otro problema más complicado incluso.
Y tiene uno que sigue sin resolver, que me parece la mejor parte de la conversación.
Cómo aprende
Cursos de Udemy —le gustan los profesores, y en esas semanas había ofertas buenísimas, no sé si era por esto del COVID—. Ir a un profesor de una materia parecida y pedirle una recomendación de libro.
Y defiende los libros:
Es difícil a veces terminar un libro que te enseña a hacer cosas, porque estamos muy acostumbrados a que nos las expliquen y es más entretenido. Pero si consigues concentrarte en ese libro, leerte bien las páginas y reflexionar... es que aprendes mucho.
Ahí discrepamos abiertamente. Yo aprendo mejor con videos, y generalmente les aumento la velocidad. Los libros los uso para temas específicos, no de principio a fin.
¿Todos deberíamos aprender a programar?
Su respuesta es sí, y su argumento sale de ver a gente abandonar:
Hay mucha gente que entra en la carrera de ingeniería informática sin saber programar, se desanima, y lo deja. Y es completamente comprensible. Para mí, entrar en la carrera de informática sin saber programar lo comparo a entrar a matemáticas sin saber matemáticas, o a filología sin saber descomponer una oración.
Su propuesta: que los fundamentos se enseñen como asignatura en la escuela, aunque sea sólo para que la gente sepa de qué va.
Y su consejo final
Si en lugar de interesarte los resultados te interesa el procedimiento, y eres una persona que busca hacer las cosas siguiendo unas instrucciones... la gente que piense de esta manera ya se dará por aludida: vale para programar, y muy posiblemente le guste mucho y le llene.
Empezar con python, o con lenguajes que se concentren en la lógica y no en las formas del lenguaje. Y algo que agradezco viniendo de alguien que acaba de recomendar cursos de pago:
No hace falta que se gaste dinero en un curso de Udemy, porque hay magníficos tutoriales en YouTube, o si no, un libro que le enseñe las bases.
Este texto sale del episodio 019 del Podcast Algoritmos, una conversación con Joan Travé.