• Mis consejos si vas iniciando tu carrera en programación

    1. No idealices la carrera. Desarrollar software es una chamba como cualquier otra. Por lo menos cuando yo comencé (por ahí de 2009), que todavía no estaba tan democratizado el acceso a la educación en el área, las personas que nos dedicábamos a esto teníamos un aura de privilegio enorme. Fue muy sencillo para mí (y varios de mi generación) creernos que éramos especiales; até mi identidad a la profesión, y me costó mucho sanar mi relación con mi trabajo cuando me dejó de gustar.
    2. Lo que más te gusta no es necesariamente lo que más te va a pagar. Las dinámicas de mercado, oferta y demanda, tienen el mismo efecto en el laboral que en cualquier otro. Asegúrate de que tus habilidades están bien diversificadas y balanceadas; no pongas todos tus huevos en una sola canasta.
    3. Habiendo dicho eso, si lo que te gusta hacer también es algo con buena demanda, ¡felicidades! Sacaste el boleto ganador. Pero no es para siempre; eventualmente, las necesidades del mercado van a cambiar, y probablemente tengas que reajustar tus prioridades. Y está bien, es parte del ciclo. Eres adaptable.
    4. Más que la tecnología, piensa en qué tipo de problemas quieres resolver. El framework, lenguaje, etc., de moda ahorita, va a dejar de ser relevante en 10 años. Pero los problemas no se van, solamente evolucionan. Y cada vez más el código es menos importante para tener una carrera en desarrollo de software. Así que, en vez de clavarte con tal o cual tecnología, clávate con el usuario al que le estás resolviendo un problema.
    5. Encuentra un hobby que no tenga que ver con programar. Mientras más pronto mejor. Lo que hace falta en la industria son más personas que puedan pensar en otra cosa que no sea código. Y entiendo que te gusta tanto lo que haces que va a sonar tentador pasar tu tiempo libre en eso, también. Pero a la larga, tu carrera, tus usuarios, tus compañeros, se van a beneficiar mucho más de que tengas perspectivas y experiencias diferentes. Además de que va a ser más fácil que encuentres tu balance vida/trabajo cuando llegue el momento.

    Originalmente, respondí esta pregunta en mi AMA en r/taquerosprogramadores

  • Estoy haciendo un AMA en r/taquerosprogramadores

    Estoy haciendo un AMA (Ask Me Anything) en r/taquerosprogramadores:

    Comencé mi carrera en 2009. Desde entonces he trabajado de manera remota para empresas de EE. UU. y Europa — no conozco lo que es trabajar desde una oficina corporativa. Mi primer empleo con nómina y prestaciones lo tuve en 2020; antes de eso era puro freelance y contractor.

    Actualmente, trabajo para una empresa estadounidense desde Guadalajara (no es FAANG, pero sí líder de industria).

    Algunos otros factos:

    • Probablemente en tu iPhone o iPad tienes aplicaciones instaladas que tienen código que yo escribí.
    • Este es mi 5.º año como Engineering Manager. Tengo ~15 personas a mi cargo.
    • Durante un tiempo estuve muy activo en la comunidad open source, sobre todo hace unos diez años que salió Swift. Me gustó tanto que me intenté meter a contribuir al compilador. Si no estoy mal, por ahí debe de haber un par de commits míos en el repo de Apple.
    • He tenido la oportunidad de participar como ponente en varias conferencias internacionales, en USA y Asia.

    Si de algo les puede servir mi experiencia y perspectiva, AMA!

    Voy a estar echándole un ojo y respondiendo las preguntas durante el día.

  • Entrevistas técnicas en la era de la inteligencia artificial

    Con la inteligencia artificial cada vez más presente en todos los aspectos de nuestra vida, tenemos que hablar de su impacto no en el empleo tal cual, sino en el proceso de conseguir un empleo.

    Recientemente, discusiones en foros de internet se han centrado en el papel del uso de la IA en los procesos de entrevistas. Muchos usuarios han compartido sus experiencias desde sus perspectivas particulares: como candidatos, entrevistadores, y reclutadores. Estas discusiones nos ofrecen una visibilidad increíble dentro de los procesos más importantes de nuestras carreras. Y creo que debemos de aprovecharlas.

    Por eso, me di a la tarea de recopilar las lecciones que creí más relevantes de estas discusiones, y organizarlas de una manera digerible. Esta es una fotografía del momento de que estamos viviendo en la industria, y de ninguna manera es el final de la evolución de las prácticas de entrevista. Al contrario, opino que es solo el principio.

    Algunas de las fuentes están enlazadas al final del artículo, para que las puedas leer por tu cuenta.

    1. Las entrevistas están migrando de pruebas algorítmicas a desafíos del mundo real

    Con la inteligencia artificial haciendo que los problemas tradicionales de código sean triviales, muchas empresas están cambiando el enfoque de sus entrevistas hacia la resolución de problemas en escenarios del mundo real, diseño de sistemas y ejercicios de depuración en lugar de solo evaluar la capacidad para resolver acertijos algorítmicos. Esto es un cambio marcado con respecto a las prácticas de entrevistas que veníamos viendo en la industria, pero uno que creo que hace sentido, incluso si no tuviera nada que ver con la aparición de la IA.

    ¿Cómo aplicarlo si eres reclutador? Reformula las pruebas técnicas para centrarse en cómo los candidatos enfrentan problemas de la vida real dentro de su área. En lugar de evaluar solo conocimiento técnico, busca entender cómo razonan y toman decisiones bajo restricciones.

    ¿Cómo aplicarlo si eres candidato? Las empresas van a comenzar a favorecer a los candidatos que demuestren alguna sensibilidad para aspectos que la inteligencia artificial todavía no puede procesar, como diseño de producto o procesos de negocio. Enfócate en entender cómo resolver problemas en contexto. En lugar de memorizar soluciones a problemas comunes, practica explicando por qué eliges una solución sobre otra. Si es posible, revisa problemas recientes en tu industria y piensa cómo los abordarías.

    2. Evaluar la capacidad de los candidatos para usar inteligencia artificial en el trabajo

    En vez de prohibir el uso de IA, algunas empresas han optado por evaluar qué tan efectivamente los candidatos la incorporan en su flujo de trabajo. La clave es distinguir entre alguien que solo copia respuestas generadas por inteligencia artificial y alguien que sabe cómo integrarlas estratégicamente en su craft.

    ¿Cómo aplicarlo si eres reclutador? Diseña preguntas que requieran el uso de inteligencia artificial, pero que exijan justificación. Por ejemplo, pide que los candidatos resuelvan un problema con IA y luego expliquen sus decisiones, identificando sus limitaciones y oportunidades de mejora.

    ¿Cómo aplicarlo si eres candidato? Las empresas están buscando personas que puedan utilizar la IA como una herramienta usada con criterio, no como una solución única para todos los problemas. ¿Copiar y pegar sin entender qué estás haciendo, o por qué? Eso lo puede hacer cualquiera. Practica integrar inteligencia artificial en tu flujo de trabajo sin depender totalmente de ella. Antes de una entrevista, haz ejercicios en los que uses IA para mejorar soluciones en lugar de generarlas desde cero. Ten claros los trade-offs de cada herramienta que utilices y prepárate para explicarlos.

    3. La comunicación y el criterio importan más que la ejecución técnica

    Cada vez más reclutadores están priorizando la habilidad de los candidatos para explicar su proceso de pensamiento y los trade-offs de sus decisiones por encima de la ejecución pura. Hoy en día, que el costo de obtener respuestas que a simple vista parecen correctas, es más importante que nunca para las empresas que sus empleados tengan la capacidad de entender el contexto dentro del cual están ejecutando. Y una de las mejores maneras de buscar esto en una entrevista, es observar si el candidato únicamente llega con la respuesta del examen, o también te muestra el desarrollo del problema.

    ¿Cómo aplicarlo si eres reclutador? Introduce preguntas abiertas en tus entrevistas. Por ejemplo, en lugar de evaluar si un candidato puede resolver un problema, pregúntale cómo lo abordaría, qué alternativas consideraría y cómo justificaría su elección final.

    ¿Cómo aplicarlo si eres candidato? No te enfoques solo en encontrar la solución “correcta”, sino en explicar tu razonamiento. Antes de la entrevista, practica respondiendo preguntas en voz alta, estructurando tus respuestas en pasos claros y destacando las razones detrás de cada decisión. Como escribí en 2021, te tienes que poner a refinar tus soft skills si quieres que tu carrera se mantenga vigente.

    4. El riesgo de currículums y respuestas generadas por inteligencia artificial

    Algunos reclutadores ya están descartando candidatos cuyas aplicaciones parecen generadas por IA, ya que perciben una falta de autenticidad o de interés por parte del candidato. Si tu currículum está obviamente hecho con inteligencia artificial, podrías estar mermando tus posibilidades de encontrar un trabajo sin darte cuenta.

    También han detectado que, en entrevistas, algunos aspirantes intentan usar inteligencia artificial en tiempo real para responder preguntas, lo que se hace evidente por los tiempos de respuesta y la falta de coherencia en las explicaciones. Esto no es algo necesariamente malo, pero puede dar la percepción de que el candidato está queriendo hacer trampa. Recuerda que la IA es una herramienta más. Si la vas a usar, que sea de manera responsable, y no a escondidas.

    ¿Cómo aplicarlo si eres reclutador? Ajusta el proceso para evaluar la autenticidad del candidato. Una forma efectiva es pedirle que describa experiencias previas en detalle, enfocándose en aprendizajes y errores, en lugar de permitir respuestas genéricas que podrían haber sido generadas automáticamente.

    ¿Cómo aplicarlo si eres candidato? Evita enviar un CV genérico generado por IA sin revisarlo. Personaliza cada aplicación resaltando experiencias específicas. En la entrevista, usa ejemplos personales y anécdotas que muestren tu experiencia real, en lugar de respuestas vagas o demasiado perfectas.

    5. El regreso de entrevistas en vivo y paneles

    Para evitar la dependencia de inteligencia artificial en entrevistas técnicas, algunas empresas están volviendo a dinámicas en vivo como el desarrollo de problemas en pizarrones, entrevistas en panel y desafíos en tiempo real. De alguna manera, esto es para forzar a los candidatos a mostrar su humanidad en el proceso de entrevistas, lo cual es esperado, aunque puede parecer invasivo o innecesario para muchos candidatos. Sin embargo, como dije antes, la tendencia está marcada en esa dirección.

    ¿Cómo aplicarlo si eres reclutador? Evalúa si tiene sentido para tu empresa implementar ejercicios en los que los candidatos tengan que demostrar habilidades sin apoyo externo, como pair programming en vivo o resolver un problema técnico explicando cada paso en voz alta.

    ¿Cómo aplicarlo si eres candidato? Practica la resolución de problemas en tiempo real. Si es posible, únete a comunidades que hagan live coding o ensalla entrevistas con colegas o amigos. También trabaja en tu habilidad para pensar en voz alta y estructurar tus respuestas de manera clara. Tener la confianza en tus habilidades de comunicación será más importante que nunca si te toca una entrevista de este tipo, así que mientras más cómoda te sientas explicando tu proceso de pensamiento, mejor.

    6. El problema no es nuevo; solo se volvió más evidente con la inteligencia artificial

    El elefante en la habitación es que las entrevistas técnicas ya eran poco efectivas antes de la IA: muchos procesos de entrevistas simplemente evaluaban la capacidad de memorizar problemas de LeetCode en lugar de habilidades relevantes para el trabajo. Incluso hay (¿había?) toda una industria dedicada a explotar esto. Libros como Cracking the Coding Interview, que te muestran cómo resolver problemas de programación (y ojo, que mantengo que “programación” ≠ desarrollar software) se volvieron extremadamente populares, y hasta “lecturas requeridas” en la industria. Desafortunadamente, muchas personas lo que hacían era memorizar los pasos para resolver un problema, en vez de integrar el conocimiento para poder derivarlo por ellos mismos.

    Pero ahora, que se ha obviado la necesidad de comprar un libro, leerlo, y memorizar los pasos, es mucho más evidente el problema: muchos candidatos no saben cómo resolver problemas reales; únicamente saben escribir código.

    ¿Cómo aplicarlo si eres reclutador? Enfoca las entrevistas en evaluar habilidades transferibles y pensamiento crítico en lugar de conocimiento arbitrario. Considera pedir a los candidatos que adapten una solución generada por inteligencia artificial a nuevas restricciones en lugar de solo evaluar si pueden escribir código desde cero.

    ¿Cómo aplicarlo si eres candidato? No te limites a practicar problemas de LeetCode sin contexto de negocio. Enfócate en comprender patrones y enfoques generales para la resolución de problemas del mundo real, sobre todo de la industria en la que te quieres especializar.

    Fuentes

    Aquí tienes algunos de las discusiones en foros que usé para este artículo:

  • Hoy por la noche, únete a la llamada mensual de Pathways

    Como de costumbre, el último jueves de cada mes, los miembros de la comunidad nos subimos a una llamada en Zoom para intercambiar ideas y aprender juntos. A estos eventos les llamamos  Conversatorios.

    En este conversatorio, vamos a hablar sobre los annual reviews, y cómo sacarle el mayor provecho posible.

    Los miembros, además de participar en la llamada, tienen acceso a las grabaciones de Conversatorios pasados.

    La cita es a las 19:00, hora del Centro de México. ¡Nos vemos dentro!

  • ¿Trabajar en consultora, o en empresa tradicional?

    En Reddit me encontré una pregunta interesante:

    […] llevo algo de tiempo como intern de TI en una empresa retail mexicana, aún no se si me van a dar una planta pero he recibido una oferta de parte de una consultora y quisiera preguntar por su consejo sobre cuales son las diferencias entre trabajar en una empresa no-tech y una consultora.

    En una consultora te vas a exponer a resolver muchos problemas diferentes. Puede ser una buena oportunidad si lo que quieres es descubrir qué te gusta, o en qué tecnología te quieres especializar. Vas a aprender “a la mala”, porque ahí lo importante es entregar para que el cliente pague. Independientemente de si está bien o mal (técnicamente, en arquitectura, tecnología, etc), la prioridad es cubrir el compromiso contractual.

    En una empresa “non-tech” es más relevante resolver problemas de negocio, que usar tal o cual tecnología. Muchas veces, esto termina viéndose como buscar cómo conectar un montón de herramientas de terceros a los sistemas internos. Transformaciones de datos, etc. Vas a aprender muchísimas cosas de negocio, pero tal vez no tantas de tecnología — o por lo menos no a la profundidad que querrías si lo que te interesa es el aspecto tecnológico. En esta situación considero importante que por lo menos te llame la atención el giro de la empresa. Si terminas en una financiera, y no te gustan las finanzas, va a ser muy difícil que le encuentres sentido a entender todos los términos de negocio que van a ser cruciales para que hagas un buen trabajo.

    Ahora, puede haber empresas “non-tech” con cultura de desarrollo de software que te dan oportunidades de crecimiento profesional importantes. Para mí, ese es el sweet spot, y recomiendo trabajar en una si encuentras la oportunidad: empresas de producto. Hace unos años escribí:

    Toda la diferencia entre el trabajo de producto vs. el de consultoría está en los incentivos que determinan el cómo se trabaja.

    Hacer consultoría se trata de completar proyectos para un cliente. El objetivo es entregar a tiempo y cumplir con un contrato.

    Si trabajas en consultoría, lo que importa es entregar en tiempo y forma, lo que significa que la calidad y exactitud técnica del desarrollo no es prioridad. Después de todo, hay una gran posibilidad de que una vez que se llegue a la meta, y el cliente esté satisfecho, no será necesario revisarlo ni mantenerlo a largo plazo. Se le resolvió el problema al cliente, se entregó a tiempo y con los requerimientos cumplidos, y ahora puedes pasarte a pensar en el siguiente proyecto sin voltear atrás.

    Trabajar en desarrollo de producto se trata de resolver problemas para un usuario. El objetivo es agregar valor.

    Al desarrollar un producto, lo que estás buscando es crear tecnología para resolverle un problema a tu usuario. Muy probablemente (si trabajas en un startup, por ejemplo) no habrá una guía para encontrar la forma óptima de agregar valor. Tendrás que experimentar, investigar, innovar. Pero más importante, trabajar en producto tiene la implicación de que el mismo equipo será el responsable de arreglar cualquier cosa que se rompa, y de saldar cualquier deuda técnica que se adquiera.