«Debes elegir el stack con el que te sientas más cómodo, siempre que sea posible. Creer que si desarrollas en tal tecnología tu proyecto va a ser un Ferrari y si desarrollas en otra tu proyecto va a ser un Twingo… Claramente estás equivocado.»
Seguimos en Codemotion con nuestra serie Perspectiva CTO, en la que queremos contaros la trayectoria e inquietudes, el día a día y la historia personal de los mejores CTOs del panorama español. Por eso hoy os traemos otra entrevista a un CTO clave del ecosistema español.
El entrevistado de hoy es Juan Pablo Martín Cobos, ingeniero informático. Su trayectoria empieza en 2007 con Python y Django como sus lenguajes principales. En su primera empresa estuvo rodeado de grandes profesionales que le motivaron y le enseñaron a colaborar en proyectos de Software Libre.
Hace ya siete años, Joinup le dió a Pablo la oportunidad de ser CTO en un gran proyecto de smart mobility, basado en una solución que incluye 3 apps dando servicios de taxi, movilidad de grupos, reservas de parkings, recarga de vehículos eléctricos y kilometraje para empresas en varios países. Un proyecto que es muy destacable tanto en el plano tecnológico como en el plano empresarial.
Podemos trazar el impacto del código de Pablo en proyectos como Django y KDE e incluso encontrarlo en unas cuantas líneas de código que se ejecutan en los servidores de la aplicación de Instagram. “Es una de las cosas bonitas del software libre”.
Juan Pablo, ¿Cómo crees que evolucionará la figura del CTO en los próximos 10 años?*
“Llevo siendo CTO 7 años y medio, cuento el medio ya que cada día cuenta, y no he visto una evolución como tal, con lo que no creo que en los próximos 10 años evolucione demasiado. Donde si veo una evolución clara es en tu rol dentro de la compañía. Un CTO evoluciona conforme va creciendo el producto, conforme va creciendo el equipo, conforme van creciendo las expectativas. Cuando el producto es pequeño lo controlas todo… cuando el producto es pequeño no necesitas una funcionalidad que ahora es indispensable… A medida que el producto va creciendo tienes que ir delegando responsabilidades y el producto va adquiriendo vida.”
¿Qué recomendarías a las personas que quieren orientarse para ser CTOs?*
“Paciencia y ganas, mismo consejo que si te planteas tener un hijo… de igual manera que te recomendaría a los hijos no le recomendaría a nadie dirigir, no le recomendaría a nadie ser CTO, se vive mucho mejor siendo dirigido, y siendo responsable sólo de lo que uno hace. Lo peor de ser CTO, como yo entiendo ser un CTO, es que los verdaderos marrones te los terminas comiendo tu. Al final, tú eres el responsable de todo el trabajo técnico.”
¿Puedes sugerir un libro o libros que te hayan sido útiles para desarrollarte mejor como CTO?*
«Pues la verdad es que no me he leído ninguno… no soy muy fan de los ‘libros de autoayuda’… Si quieres leer algo, además corto, que te haga mejorar como desarrollador y, a su vez, que te haga mejorar como CTO y te diría que hasta como persona, es el ‘Zen de Python’: 20 principios de software y muchos de ellos aplicables a cualquier ámbito de la vida.»
¿Compartirías con nosotros una «batallita»?
Esa vez que todo pintaba a que iba ir fatal… y al final salió bien.
«Mi primera batalla como CTO fue hace 7 años y medio, cuando me contrataron para cambiar la solución técnica que había en la empresa por una nueva desarrollada desde cero: un backend en alta disponibilidad y alto rendimiento… pero nunca había desarrollado algo así. Y para desarrollar unas Apps con tecnología híbrida (Ionic / AngularJS)… y nunca había desarrollado unas Apps y no sabía nada de AngularJS…
A primera vista, no era el candidato idóneo; a segunda vista, tampoco… pero hace 7 años, ¿Cuántas personas cumplían con ese perfil? ¿Se necesitaba tener ese perfil para poder empezar o se necesitaba una buena base para poder llegar a tener ese perfil?
Fueron unos meses muy duros, en los que no había día que no me preguntara… ¿Para qué me he cambiado de empresa? Si no lo consigo, ¿me admitirán en mi anterior empresa? Por entonces, Python/Django no tenía mucha oferta en Sevilla, y el trabajo remoto era una rara avis… Pero 9 meses después, estaba un viernes de octubre de madrugada trabajando para hacer el cambio y poner el sistema nuevo (por entonces) en producción.
Estuve a punto varias veces de tirar la toalla, sufría del síndrome del impostor constantemente (¿o realmente soy un impostor al que no han descubierto todavía?)… de hecho, un par de meses antes de poner el sistema en producción, tuve una buena oferta para cambiarme de trabajo, en el que iba a tener un trabajo más sencillo y, además, me pagaban algo más… pero tras pensarlo mucho me pareció que si me cambiaba de trabajo con el rabo entre las piernas era como ponerme un techo de cristal… y en esta vida hemos venido a jugar, así que me dije «qué coñ*, intentémoslo» y espero no darme una buena hostia… Y por ahora ya van 7 años y medio y solamente ha habido alguna collejita.”
¿Cuáles son las 3 principales necesidades a considerar al elegir el stack tecnológico?
“Debes de elegir un stack tecnológico con el que puedas resolver tu problema sin ir contra el mismo stack tecnológico que has elegido. Una frase que repetía mucho uno de mis primeros jefes de proyecto cuando yo desarrollaba algo que funcionaba pero que no estaba pensado para usarse así es: «no vayas contra el framework», es decir si metes algo con calzador seguramente de problemas a la larga cuando quieras modificarlo un poco… si tienes suerte puede que incluso no de problemas con esta versión del framework, pero al actualizarlo tienes muchas papeletas para que te explote en la cara. Dicho de otra manera, si lo que quieres es volar, comprate un avión, no te compres un coche y le pongas alas.
Otro punto a tener en cuenta es el tiempo que se tarda en desarrollar con una tecnología o con otra. Por poner un ejemplo real, nosotros en Joinup tenemos 3 Apps, la primera para iOS, Android y navegador, la segunda y tercera para iOS y Android. Si usaramos tecnología nativa tendríamos 7 proyectos, al usar tecnología híbrida tenemos solamente 3. Reducimos el código en un 57%. Esto es un ahorro en tiempos de desarrollo, en errores, en que nuestras Apps sean «iguales» en todas las plataformas, etc.
Es verdad que cada uno de los proyectos es más complejo… pero aún así sigue siendo un ahorro brutal… Esto nos hace por ejemplo poder invertir todo este tiempo en mejorar nuestras Apps, hasta el punto de conseguir notas espectaculares en los markers, por ejemplo en la App que usa el usuario que disfruta de nuestros servicios tenemos un 4,8 en iOS y un 4,8 – 4,9 en Android.”
¿Cuál es el error más peligroso que se puede cometer al decidir el stack tecnológico?
Elegir un stack por lo que te digan, por las modas, «ahora hay que desarrollar en tal tecnología», etc. Debes elegir el stack con el que te sientas más cómodo, siempre que sea posible. Creer que si desarrollas en tal tecnología tu proyecto va a ser un Ferrari y si desarrollas en otra tu proyecto va a ser un Twingo… Claramente estás equivocado.
Yo empecé a trabajar hace 16 años con Python/Django cuando casi nadie los conocía, le dí una oportunidad y me gustó mucho… por entonces todo el mundo me decía ¿Python, eso no tiene futuro? Java es lo que pega fuerte… y ahora es el lenguaje de programación más usado del mundo. Todos entendemos que la tecnología puntera de hoy será una tecnología obsoleta de mañana… pero lo que es más difícil de ver es que la tecnología obsoleta o residual de hoy puede ser la tecnología puntera de mañana… Hay mucho de moda en las tecnologías.
Cuando empecé a trabajar en Joinup, escuchaba a mucha gente que me decía: «¿Un backend en alta disponibilidad en Python? Hay un benchmark que dice que ‘[PONGA AQUÍ EL LENGUAJE QUE QUIERA]’ es un 3% más rápido que Python»… Bueno, pues vayamos a por el otro 97%.
Del mismo modo, había compañeros que desarrollaban en Python que decían: «¿Un backend en alta disponibilidad en Django… en Python sí, pero Django es un macroframework, eso es imposible.»
Bueno, pues... «LO INCREÍBLE SE HACE REAL CUANDO NO ES CIERTO LO CREÍBLE.»
¿Qué consejo habrías deseado recibir cuando te encontraste eligiendo el stack tecnológico por primera vez?
Me habría gustado encontrarme a alguien que me hubiera dicho estás tomando una buena decisión. No necesitas tomar la mejor decisión en cada momento, con tomar una buena en cada momento es suficiente. Me habría gustado encontrarme a alguien que me dijera yo he hecho algo similar. Tengo un backend en alto rendimiento en Python / Django (incluso con Django rest framework) y unas Apps híbridas que como las que estáis desarrollando no tienen nada que envidiar a unas Apps nativas.
¿Cómo te mantienes actualizado sobre las novedades del sector?
Este es un asunto al que a veces le doy algunas vueltas. Ahora mismo, lo que hago, casi sin darme cuenta, es analizar cualquier solución informática que uso. Si veo algo que me llama la atención, intento ver cómo está hecho y si no, al menos intento buscar sus defectos o debilidades.
Pero dentro de unos años… acabo de entrar en la cuarentena, y aunque no me considero joven, tampoco me siento viejo, me considero «post pureta.» Hacerse mayor en mi ámbito profesional tiene una consecuencia directa… ¿Podré seguir desarrollando y/o dirigiendo con 50 años? ¿Y con 60?… ¿Y si sigue subiendo la edad de jubilación?
Es decir, por ejemplo: un médico, un abogado, un arquitecto con los años gana experiencia. Nadie les va a pedir que con 60 o 70 años sean los más hábiles tecnológicamente, todo el mundo entiende que sus hijos sean más duchos que ellos… pero tú vas a su consulta, su bufete o su despacho porque por su experiencia les hace mejores que otros.
Pero cuando tu trabajo es la tecnología… entramos en un punto complicado… pero como ya he comentado… «hemos venido a jugar» y «espero no darme una buena hostia» en este caso con los años.”
La historia de Juan Pablo Martín Cobos refleja la importancia de adaptarse a la evolución tecnológica y mantener la pasión por el desarrollo, desafiando cualquier obstáculo a lo largo de su trayectoria como desarrollador y CTO. Esperamos que os haya gustado esta entrevista en Perspectiva CTO y que no os perdáis el resto de la serie.
Únete a nuestra comunidad
¿Te gustaría liderar un equipo técnico algún día? En nuestra plataforma de Talent puedes encontrar la forma de llevar tu carrera al siguiente nivel. Entra en nuestra web y encuentra tu trabajo ideal. Échale un vistazo.
Ser parte de la comunidad de Codemotion te permitirá potenciar tu experiencia y enfrentar nuevos desafíos que impulsarán tu carrera. Aprenderás nuevas habilidades técnicas y crecerás junto a otros miembros mediante el intercambio de opiniones y la creación conjunta. Tenemos dos comunidades para ti según tu experiencia:
- Si eres wanna-be-dev, junior-dev o early-mid-dev nuestra comunidad de Discord es para ti. Allí encontrarás recursos, eventos, formación, muchos compañeros de viaje y beneficios exclusivos. Súmate aquí.
- Si eres late-mid-dev, senior-dev, Tech Lead o CTO nuestra comunidad de Telegram es para ti. Allí encontrarás el mejor networking, artículos high-tech, debates de tendencias tech y beneficios exclusivos. Súmate aquí.
¡Nos vemos en Codemotion!