Está newsletter son copiar de las entrevistas realizadas en el canal de Telegram Entrevista En Diferido
https://t.me/entrevistaendiferido
Entrevista En Diferido: Empezamos con una nueva semana y entrevista, tenemos a Iván Córdoba desarrollador y co-creador de Opire, pero lo mejor es que se presenta el mismo.
Pero antes....
¿Cómo te encuentras?
Y después...
¿Te podrías presentar en una líneas?
Iván Córdoba: Muy buenas! Empezando la semana con energia y muchas ganas 💪🏼!
Me llamo Iván Córdoba y soy desarrollador de software 👨🏻💻. He trabajado tanto en consultorías como en empresas de producto de todos los tamaños, siendo esta última el tipo de empresas que más me gustan. Estoy especializado en la parte backend aunque he hecho (y hago) de todo.
Entré en el mundo de la programación desde sistemas donde me di cuenta que no encajaba y que prefería programar. Soy muy inquieto y siempre tengo algun proyecto entre manos (por ejemplo, me abrí un canal de YouTube/Twitch donde subía cosas de programación llamado lacuevadelcodigo 😂).
Desde hace algo más de un año estoy desarrollando junto a mi compañero Rubén una idea que se me ocurrió para intentar ayudar a la comunidad open-source, Opire, una plataforma de recompensas donde los programadores pueden ganar dinero por resolver issues en proyecto open-source.
No suelo estar muy atento a las redes sociales pero siempre estoy abierto a hablar con gente nueva así que no dudéis en escribirme si queréis ✌🏼.
EED: Para empezar, unas cuantas preguntas cortas para conocerte mejor a ti y a tu entorno tecnológico.
¿Qué ordenador utilizas habitualmente?
¿Sistema operativo utilizado?
¿Qué lenguaje de programación usas?
¿Qué IDE/Editor usas?
¿Qué recursos te fue mas útil para aprender a programar?
¿Qué framework o lenguaje te gustaría aprender y cual nunca aprenderías?
IC: Para trabajar utilizo un portátil Dell con un i7 y Ubuntu como sistema operativo, para uso personal tengo un portátil HP que no uso mucho y una torre montada a piezas donde tengo un dual boot con Windows 11 y Ubuntu, siempre uso Ubuntu para todo menos para jugar a videojuegos, que por desgracia es lo único que me ata a Windows.
El lenguaje de programación que uso desde hace tiempo es TypeScript, me siento muy cómodo con él, me parece sencillo y rápido para implementar cosas. Aparte de TypeScript, he trabajado con Java y PHP. En cuanto al IDE, uso principalmente VS Code y Nvim, este último lo he ido añadiendo en mi día a día cada vez más y personalizandolo con NvChad.
Creo que lo más importante para "aprender" a programar es ser muy proactivo y practicar mucho con proyectos pequeños. Hay mucha información en internet sobre cualquier tema. Yo soy muy consumidor de videos en YouTube en mi tiempo libre y siempre que veo algo interesante me apetece probarlo por mi cuenta para asentar esos conocimientos. Además, los pequeños proyectos cuando crecen te "fuerzan" a aprender ciertos temas que necesitarás para mejorarlo (autenticación, integraciones con externos, pasarela de pagos...).
Actualmente estoy aprendiendo Rust, me parece un lenguaje muy potente y divertido, la curva de aprendizaje es algo costosa pero creo que vale la pena, personalmente le veo mucho futuro. Otro lenguaje que me llama la atención es Go, me puse a aprenderlo y aunque es cierto que es más fácil que Rust hay ciertas decisiones en el lenguaje que me gustan más en Rust y por eso me decanté por este. Hay muchos lenguajes que no creo que aprenda nunca, no por nada sino porque no me llaman tanto la atención como pueden ser Perl, .Net u Objective-C.
EED: Una pregunta fija en todas las entrevistas, cambia en función del perfil del entrevistado. Como eres unos de los desarrolladores de Opire.
Respecto al desarrollo y lanzamiento de una aplicación o servicio...
¿Qué añadirías?
¿Qué modificarías?
¿Qué eliminarías?
¿Qué dejarías igual?
IC : En general, es fundamental saber cuántos "recursos" estás dispuesto a invertir en el desarrollo del proyecto. Con recursos me refiero a tiempo, energía, dinero, etc. Lo ideal es invertir lo mínimo posible para obtener resultados. Por eso, en Opire planteamos cuál iba a ser el MVP y qué funcionalidades eran esenciales para salir a producción. Una vez lanzado, siempre se puede iterar y mejorar, pero lo importante es comprobar que con la menor cantidad de recursos posible se obtiene algún beneficio.
Dicho esto, es cierto que, aparte de las funcionalidades de la app, hay ciertos requisitos que una aplicación medianamente seria debería tener para el lanzamiento, como son las métricas y la observabilidad. Es crucial saber qué ocurre en tu aplicación cuando la usan los usuarios, conocer qué partes son más utilizadas y cuáles menos para tomar mejores decisiones sobre el rumbo del producto a futuro. Además, si a esto le añades un sistema de alertas, te permite actuar cuando hay algún error antes de que los usuarios se den cuenta o te lo notifiquen.
En Opire lanzamos una versión mínima de métricas y observabilidad utilizando OpenObserve, un software open-source que agrupa todas estas funcionalidades, y el estándar de OpenTelemetry por si en el futuro decidimos cambiar de herramienta. En cuanto a qué cambiaría o eliminaría en el desarrollo de Opire, hay ciertas cosas que hicimos "para el futuro" que a día de hoy no se utilizan y a las que dedicamos mucho tiempo, sabiendo que no eran necesarias para el MVP. Ese tipo de cosas, si tuviera que volver a empezar, las retrasaría hasta que realmente fuesen necesarias.
En cuanto a qué añadiría, sería hacer más esfuerzos de promoción en la parte del lanzamiento. Tan importante es la calidad del código y lo bueno que es el producto como que la gente lo conozca y le capte la atención. No sirve de nada un buen producto si la gente no lo usa porque no lo conoce. Una buena campaña con videos, imágenes, posts en diferentes sitios... En definitiva, hacerlo todo mucho más visual y llamativo para lograr un empujón inicial más grande.
EED: Una pregunta que he hecho algunas vez es sobre la relación de la IA y los programadores, porque hay gente que piensa que será una herramienta imprescindible, otros que todavía le falta, otros que hara que despidan a muchos programadores y muchas mas opciones.
Por eso...
¿Piensas que la IA va a acabar con los programadores?
IC: No creo en absoluto que los programadores vayan a perder sus trabajos debido a la revolución de la IA. Sin embargo, sí creo que la manera en que programaremos cambiará a corto y mediano plazo. La IA nos hará más eficientes, permitiéndonos alcanzar nuestros objetivos en menos tiempo, lo cual abrirá nuevas oportunidades. Es evidente que ciertos roles con tareas repetitivas o menor capacidad de análisis podrían volverse más prescindibles, pero programar va mucho más allá de predecir el siguiente bloque de código.
El proceso de programación implica evaluar, analizar y diseñar tanto la interfaz de usuario como el sistema interno, ajustando los requisitos del cliente al proyecto. En este contexto, el nombre de GitHub Copilot me parece muy acertado: es un copiloto, un asistente, un ayudante, pero el control lo sigue teniendo el programador. Es crucial saber cómo interactuar con la IA y entender qué pedirle y cómo puede ayudar. Alguien sin conocimientos de programación tendría una herramienta cuyo potencial no podría aprovechar, similar a quien tiene una sartén y no sabe cocinar.
Algunas personas argumentan que lo que ahora hace una empresa con X programadores lo logrará con menos gracias a la mayor eficiencia. Personalmente, no le veo mucho sentido. Creo que las empresas preferirán mantener la misma cantidad de trabajadores para aumentar la productividad, en lugar de reducir el número de empleados para mantener la productividad actual.
EED: Eres uno de los creadores de Opire (https://opire.dev/) que es vuestro proyecto personal, siempre me ha surgido una duda en este tipo de proeycto.
Creo que debemos definir dos conceptos en cualquier proyecto, sobretodo si es personal, para saber si continuar o no, el primero sería el éxito o por lo menos que vamos bien encaminados , porque es algo motivador para continuar dedicando recursos.
El segundo sería el fracaso para saber cuando finalizar un proyecto y no gastar mas recursos en él. Esto es muy complicado, porque no solemos asumir el fracaso y que algo se acaba, ademas siempre tienes la posibilidad de que puedes remontar ese proyecto, aunque muchas veces eso no ocurra y se hunde mas el proyecto.
Por eso te pregunto
¿Qué es para tí el éxito o fracaso de un proyecto personal?
IC: El éxito y el fracaso son conceptos dinámicos que varían según la etapa en la que se encuentre un proyecto. Por ejemplo, en la fase de desarrollo, el éxito podría definirse como la finalización y lanzamiento del MVP. Alcanzar este objetivo es una pequeña victoria. Por otro lado, el fracaso en esta etapa sería abandonar el proyecto antes de tiempo debido a falta de tiempo o cualquier otro motivo, impidiendo que vea la luz.
Una vez que el MVP ha sido lanzado, las definiciones de éxito y fracaso cambian, y se deben establecer nuevos objetivos. Por ejemplo, lograr que cinco usuarios se registren en un determinado periodo de tiempo puede ser el próximo éxito. El fracaso, en este caso, sería no alcanzar esos cinco usuarios. Después de lograr este objetivo, el siguiente éxito podría ser atraer más usuarios, alcanzar un determinado nivel de monetización o, en nuestro caso, conseguir que se creen y resuelvan X recompensas al mes.
Considero que ser "exitoso" es el resultado de una serie de pequeños logros, y fracasar en alguno de ellos no significa haber "fracasado" en general, ya que siempre se gana algo, aunque sea el aprendizaje.
Decidir cuándo finalizar un proyecto es una cuestión distinta al éxito o fracaso del mismo. Puedes tener varios "fracasos" pequeños y aún así continuar con el proyecto, o haber alcanzado todos los pequeños éxitos y decidir abandonarlo. Al tomar esta decisión, influyen muchos factores, como cuestiones personales, el dinero disponible para mantener el proyecto, el tiempo que estés dispuesto a dedicarle...
Lo bueno de los proyectos personales es que no existe presión externa; eres tú quien decide qué es éxito o fracaso, si continuar o detenerse, y cuántos recursos dedicar.
EED: La siguiente pregunta es de un anterior entrevistado, de hace bastante tiempo, que nunca había utilizado. Así que estreno pregunta contigo 😁.
¿Cuál crees que es el tópico más usado dentro del ámbito de la programación y por qué?
IC: Mmmm no se si sera el mas gastado pero seguro que es de los que más y es el topico de "si funciona no lo toques".
Puedo entender porque se usa tanto jajaja el miedo y las inseguridades de que algo se rompa se apodera del equipo pero personalmente no estoy nada de acuerdo con esta frase.
Para mi el código es algo que evoluciona y tenemos que tener la seguridad de que por muchos cambios que hagamos seguirá funcionando como esperamos, para eso están los tests.
EED: Tu proyecto Opire esta relacionado con GitHub que ha sido el gran precursor de uso de Git y quería preguntarte sobre esa herramienta.
Git es una herramienta muy útil para cualquier desarrolladores, sobretodo si trabajas en equipo, pero tengo la sensación que la mayoría conoce de forma superficial esa herramienta. Crean commits o un pull request, realizan push y pull, pero poco mas , Git es una herramienta con muchas funcionalidades.
Por eso, dentro de tu experiencia...
Los desarrolladores ¿Conocen realmente Git?
IC: Creo que la gran mayoría de los programadores saben utilizar Git con las funcionalidades básicas que mencionas, pero no conocen o no saben gestionar funcionalidades más avanzadas.
Esto es comprensible, ya que en el 99% de los casos, las funcionalidades avanzadas no son necesarias para el día a día, por lo que la gente no se molesta en aprenderlas. Para trabajar en equipo con una estrategia como Git Flow, Master Only Flow u otra similar, lo básico es más que suficiente.
Las funcionalidades avanzadas son muy útiles, pero suelen aplicarse en casos muy específicos, como el cherry-pick o el rebase. Precisamente porque se utilizan en situaciones particulares, es común que los programadores busquen información en internet cuando las necesitan, en lugar de aprenderlas de antemano.
Además, muchas herramientas como VS Code o GitKraken facilitan el trabajo con Git sin que sea necesario aprender los comandos. Lo que observo con frecuencia es que la gente entiende Git, pero no sabe usar los comandos desde la terminal. No digo que esto sea bueno o malo; las herramientas están para ayudarnos. Simplemente, me parece curioso.
EED: Pregunta de "pase corto y al pie" que estamos en Eurocopa. 😄
Los desarrolladores en la actualidad ¿Saben de programación lo suficiente?
IC: Primero, es necesario definir qué significa "saber programar". Algunos opinan que la programación va más allá de "picar teclas"; incluye también la capacidad de captar los requerimientos del cliente y trasladarlos al código. Estoy bastante de acuerdo con esta afirmación: no se puede escribir buen código si no se comprenden los requerimientos o el porqué de estos. Prácticamente cualquiera puede escribir código y entenderlo, especialmente en lenguajes de alto nivel. Por ejemplo, ChatGPT puede generar código (como mencionábamos en la pregunta anterior), pero eso no significa que "sepa programar" o que entienda lo que está haciendo.
Por otro lado, en el ámbito de "picar teclas" también es crucial saber cómo estructurar el código para que sea flexible y mantenible a lo largo del tiempo. No basta con conocer la lógica de la programación; es igualmente importante saber organizar tu proyecto de la manera más eficaz para que sea fácil de evolucionar y mantener.
Creo que hay personas que entienden que la programación es más que picar teclas, pero no todas desarrollan las demás habilidades necesarias, especialmente con el auge de los bootcamps, donde se enseña a programar en pocos meses y se lanza a los graduados al mundo laboral. No estoy diciendo que las personas que provienen de bootcamps sean malas programando o no tengan los conocimientos suficientes, pero muchas veces no se preocupan por ir más allá de lo técnico, quizás debido a la falta de experiencia también.
EED: El Viernes es el último día con este formato, el fin de semana cambia un poco, finalizamos con dos preguntas algo diferentes.
La primera.
Si vivieras en la Edad Media.
¿A qué se dedicaría Iván Córdoba?
IC: Posiblemente me dedicaría a alguna actividad manual, como la carpintería. También me gustan mucho los animales, así que quizá ser granjero sería otra opción. ¡Quién sabe! Jajaja
EED: La segunda pregunta...
¿Qué pasaría si...?
Completa la pregunta para el próximo entrevistado.
El anterior entrevistado completo la pregunta y te toca responderla.
¿Qué pasaría por tu cabeza si Elon Musk comprase Google?
IC: ¡Qué buena esa! Mi pregunta sería: ¿qué pasaría si no hubiese existido Internet?
En cuanto a la pregunta anterior, creo que si Elon Musk comprase Google, haría muchos cambios en la plantilla (¡qué sorpresa, eh! jajaja) y modificaría el funcionamiento interno de las herramientas. No estoy muy seguro del rumbo que tomaría la empresa, ya que Musk es bastante impredecible, pero es seguro que no sería el mismo que tiene Google actualmente. Probablemente generaría muchos detractores y surgirían empresas, quizás Meta, para competir y capturar la cuota de mercado que se opone firmemente a Elon Musk.
EED: El fin de semana cambia el formato de la entrevista y las preguntas, para el Sábado tenemos dos preguntas algo diferentes.
La primera pregunta sería.
¿Qué te hubiera gustado que te preguntase? Debes responder a tu propia pregunta.
La segunda pregunta
¿Qué le hubieras preguntado a un desarrollador?
No debes responder a la pregunta, se la haré al siguiente entrevistado de ese ámbito.
IC: Una pregunta que podría haber tenido es: ¿Qué valoro más en un compañero de equipo o colaborador?
Personalmente, lo que más disfruto al desarrollar software es debatir, considerar diferentes puntos de vista y encontrar la mejor forma de resolver los problemas. Para lograr esto, es fundamental tener una mente abierta y dejar los egos de lado. Por eso, valoro enormemente cuando una persona no se conforma con lo que ya sabe, sino que busca mejorar, ofrecer nuevas ideas y ser crítica para descartar aquellas que no son útiles.
Además, a nivel personal, valoro mucho la confianza y la lealtad. No podría iniciar un proyecto con alguien si no confío en esa persona o no me da la seguridad de que se comprometerá.
Una pregunta que haría a un desarrollador sería: ¿Cuáles han sido los mayores desafíos técnicos que has enfrentado hasta ahora y cómo los has resuelto? Así también aprendo de los desafíos de otros, jeje.
EED: El Domingo, es el último día de la entrevista, será el momento de la despedida y para decir tus métodos de contacto, también para promocionar cualquier proyecto que quieras.
Por último me gustaría que me recomiendes a una persona que creas que este dispuesto a participar en una futura entrevista.
Gracias por participar en la entrevista, ha sido un placer y espero que te haya resultado entretenido.
Hasta la próxima, un saludo.
IC: Ha sido todo un placer participar en esta entrevista, espero que haya resultado de utilidad para la gente o al menos que haya sido entretenida.
Actualmente estoy con muchos proyectos entre manos, estoy desarrollando Docuco, un Google Drive que puedas selfhostear y de código abierto, podéis encontrarlo en GitHub (https://github.com/Docuco/docuco). Por otro lado, también estoy escribiendo un libro que publicaré de manera gratuita sobre testing, un tema que creo que todo desarrollador debería saber. Además, hago consultorías de software gratuitas a través de mi Calendly (https://calendly.com/ivancordoba/meet). Y por supuesto voy a estar dedicando casi todo mi tiempo a Opire (https://app.opire.dev (https://app.opire.dev/)) ya que tengo muchas esperenzas en que ese proeycto puede ayudar a la comunidad open-source y a muchos desarrolladores ya sea porque crean proyectos propios o porque solo quieren colaborar en los proyectos de otros.
Una persona que sería interesante entrevistar podría ser Carlos Buenosvinos, para mí es un referente como desarrollador de software y creo que su experiencia puede ser de interés para mucha gente.
Os dejo mis redes sociales y las de Opire en caso de que queráis seguir conociendo el futuro de mis proyectos o simplemente tener una conversación.
Mi Web: https://icordoba.dev (https://icordoba.dev/)
Mi Twitter: @IvanCordoba_06 (https://twitter.com/IvanCordoba_06)
Mi Telegram: @nabby27 (https://t.me/nabby27)
Mi GitHub: nabby27 (https://github.com/nabby27)
Mi LinkedIn: https://www.linkedin.com/in/ivancordobadonet/
Opire Web: https://opire.dev (https://opire.dev/)
Opire Twitter: @opire_dev (https://twitter.com/opire_dev)
Opire Reddit: https://www.reddit.com/r/opire/
Opire LinkedIn: https://www.linkedin.com/company/opire
Opire Discord: https://discord.gg/jWwwsHRbnJ