Entrevista a Óscar Ramírez, autor de “Python a fondo”

Hoy tenemos con nosotros a Óscar Ramírez. Es habitual de las PyConES y acaba de escribir un libro sobre Python en español titulado “Python a fondo” y publicado por Marcombo, lo cual es un hito en sí mismo ya que no tenemos muchos materiales de este tipo en nuestra lengua madre.

Portada del libro (imagen reproducida con permiso del autor).

KC: Hola, Óscar. Enhorabuena por tu libro y muchas gracias por ofrecerte a responder unas cuantas preguntas.

KC: ¿Nos puedes contar algo sobre tí?

OR: Hola, Kiko. Gracias por invitarme a esta entrevista. Mi nombre es Óscar Ramírez, soy ingeniero técnico e ingeniero en Informática por la universidad de Málaga y desde 2013 llevo trabajando en proyectos tanto públicos como privados.

Siempre he sido una persona que me gusta probar muchas cosas diferentes y experimentar. Estuve 8 años en el conservatorio tocando el piano pero, a su vez, en los últimos años hacia break dance y gimnasia deportiva hasta que entré en la universidad.

KC: ¿Cuánto tiempo llevas usando Python?

OR: En el curso 2011-2012 me fui a estudiar un año a Dinamarca (erasmus), y me tomé ese año para aprender nuevos proyectos, mejorar mi nivel de inglés y probar nuevos lenguajes de programación porque dejaban libertad de elección en lenguajes orientados a objetos. Desde entonces no he parado de usarlo. 

Junto con un compañero comenzamos a desarrollar una app de software libre para hacer intercambios de objetos llamada Mutualismo (https://github.com/tuxskar/mutualismo), más que nada por tener un proyecto en el que enfocar lo que estábamos aprendiendo. El proyecto se cerró, pero aprendimos mucho.

Así es que en 2013 me presenté y fui elegido como alumno en el programa Google Summer of Code 2013 (https://sourceforge.net/p/apertium/svn/HEAD/tree/branches/apertium-annotatrix/web/) y estuve contribuyendo a crear un anotador de corpora online para el proyecto Apertium usando Python y Django.

Tras ese verano, estuve usando Python en todos mis proyectos, en https://pypi.org/project/ordenley/ (side-project probando pygtk), en un proyecto que presentamos para telefónica usando FiWare (https://blogthinkbig.com/quickparking-localizacion-reserva), con el que quedamos finalistas y fuimos a Brasil (a la campus party) a presentarlo.

A principios de 2014 ya entré en el mundo de la empresa privada y mis contribuciones al software libre han sido más pequeñas. He contribuido al desarrollo de esta aplicación para ayudar a encontrar pisos en alquiler (https://github.com/tuxskar/classifieds-to-telegram). Por suerte, pude encontrar y arreglar un pequeño bug en el proyecto de Django, el cual es un proyecto que conozco bien y un framework que uso a diario.

KC: ¿Por qué Python?

OR: En la universidad aprendí diferentes lenguajes de programación más comunes como Java, C++, C o .net (en Dinamarca), y menos conocidos como ensamblador, Common Lisp, Pascal, Haskell o Prolog, pero desde la primera vez que probé Python no podía dejar de usarlo.

Python presenta muchísimas ventajas y muy pocos inconvenientes, es un lenguaje multiplataforma, interpretado, fuertemente tipado pero de tipado dinámico, con sintaxis super clara y gramatica simple.

Con estas características permite que se pueda ejecutar en casi todos los dispositivos disponibles, desde ordenadores de sobremesa a dispositivos móviles, permite prototipar con muchísima rapidez, lo que reduce los costes de desarrollo de aplicaciones y el testeo de módulos independientes y la gramática hace que te enamores del lenguaje al quedar un código muy legible y elegante con poco esfuerzo.

Los mayores inconvenientes que presenta son principalmente que es “lento” (en comparación con C++) y que al ser dinámicamente tipado no se pueden hacer comprobaciones estáticas de código que den garantías en tiempo de compilación de posibles errores en tiempo de ejecución.

Pero estos problemas son fácilmente salvables si se saben las técnicas específicas y cómo solventarlos, pudiendo hacer que python sea muy rápido de ejecutar, añadiendo comprobadores de tipos o incluso un Just in time compiler, o minimizando la aparición de errores en tiempo de ejecución con una batería de tests apropiada.

Uno de los principales motivos del auge de uso que se está experimentando en el lenguaje es que con Python se pueden hacer desarrollos en tiempo record, que en otros lenguajes serían muchísimo más caros y que gracias a su sintaxis, cada vez más sectores lo están adoptando como lenguaje principal (por ejemplo la ciencia).

KC: ¿Cuánto de tu trabajo diario es hacer cosas relacionadas con Python?

OR: En mi dia a dia como Senior Software Engineer especializado en Python, diría que cerca del 80% del tiempo lo paso escribiendo y analizando en los proyectos en los que participo, o enseñando Python a compañeros más junior o que lo necesiten de otros departamentos.

KC: ¿A qué te dedicas?

OR: Desde 2014 me dedico al desarrollo de aplicaciones web con Python, tanto con Django como con Flask, principalmente.

Siempre desde un enfoque transversal en el que las tareas que se me encomiendan son ideas de productos que tenemos que llevar a cabo en el equipo. Por tanto se hace desde el diseño de las bases de datos hasta el diseño del front-end, pasando por la arquitectura de cada tarea encomendada.

KC: ¿Cómo ha sido el proceso que te ha llevado a elegir entre ‘estoy en mi sofá tocándome el ombligo muy a gustito’ y ‘voy a escribir un libro’?, ¿de dónde surgió la motivación inicial?

OR: Desde hace unos años que terminé la segunda carrera (ingeniería Informática) he tenido esa mosca detrás de la oreja de “¿y ahora qué? ¿Cómo avanzo en mi carrera vital?” y siempre se me ocurrieron dos ideas a largo plazo: escribir un libro sobre una temática que controle o hacer una tesis doctoral en Informática.

Bien es cierto que siempre estoy liado con proyectos personales para probar nuevas tecnologías ya que me encanta programar, diseñar e implementar ideas y, claro, retos como hacer un libro o una tesis me ocuparían todo el tiempo libre disponible del que dispongo por lo que nunca realmente me lo había planteado seriamente.

Pero la chispa surgió en octubre de 2019 vi en uno de los grupos de meetup de python españa que Marcombo estaba buscando un escritor para un libro sobre python de alrededor de 500 páginas y sin pensarlo mucho me lancé a la piscina. Tras un par de semanas me confirmaron que entre los candidatos me habían elegido a mí y desde entonces ha sido todo una vorágine de eventos que han culminado en la publicación del libro Python a fondo.

KC: ¿Han cambiado los contenidos iniciales con respecto al resultado final?, ¿por qué?

OR: El índice inicial eran ideas de capítulos que tenía la editorial pero que desde el primer momento y antes de firmar el contrato del libro se ajustaron con mi planteamiento.

Hay que tener en cuenta que este libro tenía una fecha de realización de 8 meses (desde noviembre 2019 hasta julio 2020), por lo que en ese tiempo ha habido innumerables cambios en los apartados, capítulos que se han unido y otros que se han añadido completamente. Es cierto que no se ha quitado ninguno de los iniciales y solo se han ido añadiendo conforme se ha profundizado en cada tema.

Me gustaría remarcar que en esos 8 meses ha habido una pandemia de por medio y he realizado 2 viajes (pre-pandemia), a Marruecos y a Nueva York, dado que aunque estés escribiendo también debes de poder cambiar de aires un poco. Estos viajes han sido particulares dado que todo el tiempo disponible para descansar tras ver monumentos o viajando en el avión/AVE lo empleas en escribir o en pensar qué hacer con los siguientes capítulos.

KC: ¿Qué temas te han costado más?

OR: el tema que más me ha costado fue el capítulo de concurrencia, en primer lugar porque es un tema controvertido en Python por el GIL y su implicación en este aspecto y, en segundo lugar, porque quería que los ejemplos fueran muy simples pero potentes para explicar bien el concepto.

Al revisarlo no me terminaba de cuadrar y lo tuve que reescribir casi entero, pero creo que ha quedado muy bien y que los ejemplos explican muy bien cómo hacer paralelismo y concurrencia en Python, tanto con procesos, hilos o asyncio.

KC: ¿De qué temas te sientes más orgulloso?

OR: Esta pregunta es un poco peliaguda dado que tras las 8 revisiones completas que le he hecho al libro (desde julio), me he ido enamorando y mejorando todas sus partes hasta que han quedado como me gustaría haberlas aprendido cuando comencé a estudiar el lenguaje.

Para mí, el tema que más me gusta es el de programación en Python (en general) porque se explica desde una base básica qué son las variables, como se usan en Python, el recolector de basura y mucho más, hasta los tipos de datos, pasando por todos y cada uno de los métodos disponibles con ejemplos prácticos para dominarlos perfectamente. Además, se explican funciones, mutabilidad, paso de parámetros, el intérprete de Python, decoradores, generadores y mucho más.

El siguiente tema sería la programación orientada a objetos, explicando cómo construir las clases, la sobreescritura de métodos y atributos y, sobre todo, los temas de herencia y de creación de clases dinámicamente, que son conceptos avanzados que se explican muy bien.

Después, los temas más prácticos como el diseño de aplicaciones, el manejo de ficheros, uso de ORM y, sobre todo, la explicación de cómo hacer tu app en Django paso a paso con el panel de admin para objetos creo que aportan muchísimo a cualquier pythonista.

KC: Entiendo que escribir un libro es un proceso largo y solitario. ¿Cómo has mantenido la motivación durante todo el proceso?

OR: Es muy buena pregunta y realmente ha sido el reto más grande que he hecho hasta ahora.

Para poner en antecedentes, el reto era crear un libro de alrededor de 500-700 páginas en 8 meses. Como 8 meses se pueden pasar volando y necesitaba una hoja de ruta para saber si iba por buen camino o no, pensé en usar mi conocimiento en ingeniería y hacerlo como cualquier proyecto ágil, estimando, comprobando diaria y semanalmente e intentando gamificar el reto para también divertirme en el camino.

8 meses son 240 días y eran entre 500 y 700 páginas, lo que obliga a hacer entre 2 y 3 páginas al día pero claro, hay que contar que yo ya tengo 40 horas semanales cubiertas por mi trabajo y que no es lo mismo un día laboral, en el que tras 8 horas de trabajo no rindes igual que un fin de semana, pero también hay que contar que tienes que descansar algunas horas a la semana.

Por tanto, me propuse que a la semana tengo que hacer entre 14 y 21 páginas, y cada semana debía evaluar para ver si me había quedado corto o si podía relajarme un poco. 

Y así ha sido como he ido desarrollando, la mayoría de semanas iba peor de lo estimado pero los fines de semana recuperaba. 

Para mi la mejor fórmula era levantarme a las 6:30, y a las 7 empezar a escribir hasta las 9:30 que entraba a trabajar, salir a las 18:30 y a las 19:30 ponerme otro rato hasta las 21:00 o así. Los fines de semana sacaba entre 5 y 6 horas cada día y así durante los 8 meses. Por lo que se puede calcular fácilmente que escribir las originales 620 páginas fueron entre 800 y 960 horas de mi tiempo libre, sin contar las revisiones que he hecho desde julio hasta ahora.

KC: ¿Para quién va dirigido este libro?

OR: Este libro está dirigido a todo el que quiera aprender y profundizar sobre Python. 

Cada sección está escrita de forma que se comienza con nivel básico y se avanza hasta llegar a un nivel muy avanzado, por lo que es apto para cualquier nivel, pero haciendo especial hincapié en desarrolladores medios (incluso de otros lenguajes) o avanzados.

Además, el libro cuenta con muchísimos ejemplos para poder seguir las explicaciones que se pueden encontrar en el repositorio: https://github.com/Marcombo/python-a-fondo

KC: ¿Dónde se puede encontrar el libro?

OR: Toda la información se puede encontrar en mi web en Python a fondo, en la cual voy actualizando los links de compra en cuanto están disponibles, buscando siempre la mejor opción con los menores gastos de envío.

El libro está disponible actualmente en preventa, y la fecha oficial de publicación es el día 15 de febrero de 2021.

Pero muy pronto estará disponible en diferentes plataformas como Amazon, La Casa del Libro, Fnac y librerías locales.

También estará en versión online en Tagus (plataforma de La Casa del Libro), Kindle (Amazon), Kobo (fnac), Apple Store, Google Play y en Latinoamérica en MercadoLibre y en la editorial Alfaomega.

KC: Hoy en día, que tenemos muchas posibilidades para autoeditar un libro, ¿por qué has elegido una editorial al uso?, ¿qué te proporciona?, ¿qué ventajas tiene?, ¿alguna desventaja que se te ocurra?

OR: Esta pregunta es muy buena y creo que aún no te puedo contestar con todas las ventajas que tiene una editorial porque hay gran parte que espero ver en la distribución. Pero, a priori, te puedo hacer una lista de pros que veo en la parte editorial y mi opinión actual sobre la autopublicación:

Pros que veo de sacar un libro con una editorial:

  • El hacerlo con una editorial te da un sello de marca, no solamente en esta industria sino en la discográfica o en la cinematográfica. Cuando hay una editorial o productora detrás, da confianza a los consumidores del libro, canción o película que no es fácilmente igualable.
  • Por otro lado, vivimos en un mundo globalizado, en el que la competitividad es muy agresiva en cualquier sector y tener una editorial que “avale” tu libro puede ser una marca diferenciadora sobre la competencia.
  • En la parte práctica, la editorial ha sido la que ha ido marcando tiempos de entrega y desarrollo del proyecto. Hay que tener en cuenta que mientras se desarrolla el libro, tienes un editor técnico revisandolo y tras entregar la obra pasa por varios procesos de revisiones, ortográficas, gramaticales, estilísticas, maquetación y demás que a día de hoy sí que los conozco al haberlos vivido pero cuando comencé el libro no conocía y son muy importantes.
  • Hay que destacar que las editoriales se encargan de la distribución y de que el libro llegue a librerías y a tiendas en las que como individuos no se podría llegar y se encargan de la distribución en grandes y pequeñas librerías tanto en España como en Latinoamérica.
  • Otro aspecto diferenciador es que al ir de la mano de Marcombo en esta publicación, mi libro aparece en estanterías donde sus libros destacan y en su catálogo online y físico, por tanto, todo el que confía en la editorial confía en tu libro y eso como autor te permite apalancarte en sus años de experiencia y en su posición en el mercado.

Mi opinión sobre autopublicar:

  • El principal beneficio de autopublicar es que el margen para el autor es muchísimo más grande que cuando se hace una publicación con una editorial y que es el autor el que define los plazos de entrega. 
  • Pero hay que tener en cuenta los costes que debes de suplir como la promoción del libro, la distribución, la edición profesional, las revisiones, los diseños y los gastos que no se suelen tenerse en cuenta como son los de las propias imprentas o publicadores de los libros. 
  • Todo esto te obliga a que tengas que gestionar no solo la autoría y escritura del libro, sino marketing, distribución (nacional e internacional), presentaciones y en muchos casos ni siquiera te sería posible publicar en determinadas tiendas muy conocidas que sólo admiten a sus propios libros o a libros de otras editoriales, aparte de el sobrecoste que supondría llegar a librerías locales internacionalmente para que aparezca en sus estanterías.
  • Además debes de tener en cuenta que existe mucha más competencia en ese sector, dado que “cualquiera” puede escribir un libro y auto publicarlo, por lo que aparecerá en listados con mucha más competencia y que no están avalados, en los que es el autor el que debe de ser lo suficientemente conocido como para que el consumidor lo elija frente a otros libros.

KC: Sin saber nada del tema, veo que en sitios como LeanPub te pueden llegar a ofrecer el 80% de la venta. Es cierto que ese valor esconde muchos costes que no son obvios. En tu caso, ¿el rango, publicando de una forma más tradicional, es de ese orden?

OR: En la parte monetaria, creo que existe un claro ganador sobre el papel, dado que las regalías (la ganancia que obtiene el autor de un libro) suele estar entre el 5 y el 12% del valor del libro del libro sin iva por lo que ofrecer un 80% es muy superior pero, como digo, es sobre el papel y realmente estas comparativas pueden tener truco.

Las regalías que se ofrecen en autopublicación suelen ser sobre libros online, en los que los costes son muy inferiores, si se miran en plataformas que ofrezcan distribución de libros físicos caen a cerca del 50% (que sigue siendo mucho más que con editorial).

Pero la clave aquí es la distribución y penetración de mercado. Al realizar la autopublicación, es el autor el que tiene que darse a conocer activamente y que los consumidores confíen en él, y aún así difícilmente llegará a las estanterías de pequeñas librerías ni de grandes plataformas que sólo aceptan libros de editoriales o propios, por lo que es una dificultad añadida a tener en cuenta.

KC: La última pregunta, ¿cuánto dinero tienes en la cuenta? Si es incómoda contesta esta otra, ¿cuántos side-projects tienes entre manos?, ¿y semi-abandonados/algún día/quizás?

OR: Es una pregunta inesperada más que incómoda y me recuerda a un programa famoso de la televisión 😛 Puedo decir que mis ingresos hasta ahora han venido de los años que llevo trabajando como ingeniero Informático y que es una profesión bien valorada en el mercado.

Con el tema de los side-projects, mi principal proyecto de momento es la web de https://elpythonista.com/ y las redes sociales que tiene asociadas con @epythonista tanto en twitter, instagram, facebook y linkedIn, donde estoy añadiendo contenido que llevaba tiempo con ganas de hacer y es desde donde quiero difundir el conocimiento y lo relacionado a Python. También para poder mantener mis redes sociales personales al margen.

Tengo un roadmap bastante amplio que iré desarrollando durante este año para añadir contenido nuevo y también traducir todo a inglés (con nuevas redes sociales si es necesario).

En el cajón tengo muchos proyectos e ideas que iré sacando poco a poco, y quien sabe si quizás incluso nuevos libros o cursos 😉

KC: Óscar, muchas gracias por tu tiempo y por el trabajo que te has marcado escribiendo el libro y espero que tengas mucha suerte con el mismo.

Saludos.

1 comentario en «Entrevista a Óscar Ramírez, autor de “Python a fondo”»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

− one = 1