La experiencia de ser un Tech Lead puede variar de una organización a otra, desde ser un arquitecto en una torre de marfil hasta quedarse atrapado en los detalles con desafíos técnicos complejos. Una empresa de software Lean es aquella cuyo enfoque está profundamente arraigado en optimizar el valor para el cliente a través del estudio de las técnicas utilizadas en el Sistema de Producción de Toyota.
El Agile de la vieja escuela también tiene muchas raíces en los principios Lean: Kanban, por ejemplo, es una herramienta utilizada en la línea de producción de Toyota. Pero, ¿qué nos puede enseñar la fabricación de automóviles sobre el desarrollo de software?
Únete a mí en esta exploración a través del mundo de un TL tal como se experimenta en una empresa de software Lean, mientras revelo algunos de los secretos que permiten a estas empresas entregar software de mayor calidad a mayor velocidad.
This talk has been presented at C3 Dev Festival 2024, check out the latest edition of this Tech Conference.
La charla analiza el papel de un Tech Lead en una empresa de software Lean y los desafíos a los que se enfrentan. Se enfatiza la importancia de la resolución de problemas y la mejora continua en el desarrollo de software. El orador comparte sus luchas personales como Tech Lead y la necesidad de priorizar entre ser un creador y un gestor. La charla también destaca la importancia de identificar las causas raíz y resolver problemas para prevenir futuros problemas. En general, proporciona información sobre el papel de un Tech Lead y el papel que desempeña la resolución de problemas en la creación de condiciones óptimas para los desarrolladores.
Hoy quiero hablarles sobre el rol de tech lead. Quiero compartir una perspectiva poco representada sobre lo que significa ser un tech lead en una empresa de software ágil. Como tech lead, veía el rol como un desarrollador senior que podía resolver cualquier problema técnico, pero estaba equivocado. Esta idea errónea tuvo consecuencias costosas en mi primer proyecto como tech lead.
Hoy quiero hablarles sobre el rol de tech lead. Es posible que ya tengan algunas impresiones sobre el rol, tanto positivas como negativas. Tal vez sean desarrolladores que aspiran a dar el siguiente paso, o que recientemente han sido ascendidos y están encontrando su lugar en el rol, o tal vez han sido tech leads durante años.
Quiero compartir lo que considero una perspectiva poco representada en la industria, y espero que puedan obtener algún valor de ello. Eso es lo que significa ser un tech lead en una empresa de software ágil. Mi nombre es James y he estado trabajando como tech lead durante los últimos dos años, construyendo aplicaciones web y móviles de pila completa en Theodo UK, que es una consultoría de software ágil. Pero en realidad, me uní a Theodo como desarrollador, así que esto era yo, no esto. Y como resultado, construí una imagen de lo que significaba ser tech lead prestando atención a los tech leads que había tenido a lo largo de los años. Había algunas cosas que los veía hacer. Ellos definían la arquitectura del proyecto y aclaraban cualquier incertidumbre técnica difícil. Me ayudaban cuando estaba atascado. Ellos siempre eran la persona que me sacaba de una situación complicada. Lograban construir una muy buena confianza con nuestros clientes, y también eran capaces de impulsar el proyecto en su conjunto hacia el éxito. Así que, básicamente, veía al tech lead como un desarrollador senior, una persona con la experiencia técnica para resolver cualquier problema técnico que pudiera surgir, en lugar de un rol completamente diferente dentro del equipo. Y esta fue una comprensión fundamental errónea del rol que fue muy costosa para mí personalmente. En mi primer proyecto como tech lead novato, estaba trabajando internacionalmente con una gran consultora de gestión, y viajábamos para ver a nuestros clientes cada dos semanas aproximadamente en el lugar, construyendo una plataforma de e-commerce desde cero para vender células fotovoltaicas para instalaciones en propiedades privadas. Entonces, veamos cómo esta idea errónea, de que los tech leads son básicamente desarrolladores senior, afectó mi trabajo diario. Tomaba un ticket y comenzaba a codificar.
2. Desafíos como Tech Lead
Short description:
A menudo, como tech lead, me enfrentaba a problemas complejos que interrumpían mi flujo de trabajo. Un problema fue causado por un cambio en el tipo de datos sin actualizar los tipos de TypeScript, lo que provocaba un error recurrente. A pesar de parecer un equipo altamente funcional, me estaba agotando debido al ciclo de apagar incendios. Fue una interacción crucial con la CEO la que cambió mi comprensión del rol de tech lead. Me di cuenta de que estaba tratando de hacer dos trabajos: desarrollador y tech lead, lo que causaba dificultades con las interrupciones y descuidaba las responsabilidades del tech lead.
Después de todo, soy un desarrollador, así que debería estar trabajando en tickets. A menudo, esto podía ser algo bastante complejo. Por ejemplo, estábamos trabajando en algunos componentes de React bastante únicos que permitían a un usuario seleccionar su techo en un mapa y ver una representación visual de los paneles solares que se instalarían en su techo. Luego, un problema interrumpía mi flujo. Y esto generalmente era un desarrollador pidiendo ayuda con algo. Tal vez uno de los desarrolladores estaba teniendo dificultades para manejar datos que venían directamente de nuestro CMS. Después de algún tiempo de depurar, al final, resultaba que alguien había realizado un cambio en el tipo de datos en Contentful sin actualizar los tipos de TypeScript en el frontend, y esto había causado un error. Entonces, actualizamos TypeScript y solucionamos el error. Pero ahora estoy atrasado con mi propio trabajo. Entonces, los componentes que estoy construyendo son fundamentales para nuestro flujo. Así que vuelvo rápidamente a codificar e intento volver a concentrarme después de cambiar de contexto. Sin embargo, debido a que solo abordé los síntomas, el problema vuelve a ocurrir y, dos semanas después, tenemos otro error porque alguien más hizo un cambio en Contentful sin actualizar TypeScript. El resultado, después de aproximadamente seis meses en el proyecto, me di cuenta de que estaba empezando a agotarme. A esto lo llamamos el ciclo de apagar incendios. Claro, desde el exterior, parecía que éramos un equipo altamente funcional y nuestros clientes estaban muy contentos. Estábamos implementando nuevas funciones a diario y yo mantenía a los desarrolladores a flote. Pero el esfuerzo era mucho y definitivamente estaba trabajando más duro y no más inteligentemente.
Afortunadamente, tengo varios mentores en el trabajo que me ayudan a crecer en el rol de tech lead, y me ayudan a aclarar un modelo mental de lo que debería estar buscando. Así que, después de este punto bajo, tuve una interacción crucial que cambió mi comprensión de lo que significa ser tech lead. Durante una capacitación en toda la empresa, la CEO preguntó casualmente a los gerentes que levantaran la mano, y estaba haciendo un punto dirigido a ellos, y yo no levanté la mano. Entonces, ella miró alrededor de la sala, un poco confundida, y me notó. Dijo: vamos, James, ¿por qué no tienes la mano levantada? Claro que eres un gerente. Eres un tech lead. El problema era que yo no me veía a mí mismo como un gerente. Para mí, eso parecía una palabra sucia. Pensaba que un gerente era alguien que coordinaba el trabajo dentro de su equipo, pero en realidad no hacía el trabajo ellos mismos, y resulta que nuestra CEO tenía una comprensión completamente diferente de lo que debería ser la palabra gerente. Después de esa capacitación, a través de discusiones con ella y otros, aprendí sobre el modelo mental de gestión que usamos en nuestro grupo. La razón por la que estaba luchando con el ciclo de apagar incendios y el agotamiento era porque estaba tratando de hacer dos trabajos. Por un lado, estaba luchando por ser un desarrollador que completaba mis tickets porque podía ser interrumpido en cualquier momento del día, teniendo que intervenir y ayudar con los tickets de los desarrolladores, lo que interrumpía mi propio flujo de desarrollo. Por otro lado, debido a que siempre estaba atrasado con mi desarrollo, descuidaba algunas de las responsabilidades del tech lead para ponerme al día con mis tickets. Y esto significaba que el equipo se encontraba con problemas una y otra vez, y era una batalla constante para
3. The Maker and the Manager
Short description:
Los tech leads no son simplemente desarrolladores senior. Ellos crean y mantienen las condiciones para que los desarrolladores entreguen valor sin esfuerzo. Es importante elegir ser un creador o un gerente, ya que tratar de hacer ambas cosas crea conflictos en el trabajo diario.
mantener nuestra velocidad de equipo a medida que avanzaba el proyecto. Así que aquí está el modelo mental que usamos en el trabajo. Podemos dividir los trabajos en dos categorías. Estas son el creador y el gerente. El creador crea directamente el producto o servicio que brinda valor al cliente, mientras que, por otro lado, tenemos al gerente, quien crea y mantiene las condiciones para que los creadores entreguen su valor sin esfuerzo. Y esto está muy precisamente formulado. Se trata de crear las condiciones holísticas para que un equipo de alto rendimiento crezca y asegurarse de que todos los insumos que su equipo necesita para tener éxito estén presentes. Se trata del éxito del equipo, en lugar de centrarse en sus propias contribuciones dentro del equipo. Y mantener esas condiciones donde las personas realmente disfrutan trabajando en tus proyectos, porque pueden ver que el esfuerzo que ponen está directamente relacionado con los resultados de su trabajo, donde no se ven obstaculizados por esos obstáculos diarios de una mala experiencia de desarrollo o pequeños problemas. Este no es un trabajo fácil en absoluto, especialmente cuando hay factores externos a considerar. Entonces, en el contexto de los roles técnicos en nuestra empresa, podemos ver cómo el tech lead y el desarrollador encajan en este modelo mental, con los desarrolladores como los creadores dentro del equipo, y los tech leads como los gerentes. Y este fue el cambio de perspectiva principal que me hizo darme cuenta de que estaba viendo todo desde la perspectiva del desarrollador, en lugar de desde la perspectiva de un tech lead. Los desarrolladores, quienes crean directamente el producto o servicio que brinda valor al cliente, y el tech lead crea y mantiene las condiciones para que los desarrolladores entreguen valor sin esfuerzo. Por lo tanto, es una distinción importante a tener en cuenta. Los tech leads no son simplemente desarrolladores senior. Mi advice en esto es entender cuál eres. Elige ser un creador o un gerente, y enfoca tus esfuerzos en aquel en el que quieras ser, pero no ambos al mismo tiempo. Porque tratar de hacer ambas cosas crea un conflicto en cómo
4. Lean Software Consultancy and Problem Solving
Short description:
El enfoque de Theodo y el concepto de Lean en la consultoría de software. La transformación de Toyota en la fabricación de automóviles demuestra cómo se pueden aplicar los principios Lean al desarrollo de software. En el corazón de Lean se encuentra la resolución de problemas, un enfoque riguroso para realizar mejoras incrementales en el trabajo diario. El ejemplo de un error en TypeScript muestra la necesidad de mejora continua.
abordas tu trabajo diario. Obviamente, el rol es diferente e influenciado en gran medida por la cultura de la empresa en la que te encuentras. Por eso quiero compartir cómo funcionan las cosas en Theodo, lo cual va a proporcionar el contexto de algunos modelos mentales concretos que puedes utilizar para abordar esta visión de lo que es un tech lead en una consultoría de software Lean. Entonces, ¿qué significa realmente cuando digo empresa Lean? Si buscas Lean manufacturing en Google, encontrarás que las raíces de Lean provienen de las líneas de producción en las fábricas de Toyota. Así es, estoy hablando de cómo un fabricante de automóviles puede enseñarnos sobre el desarrollo de software. Toyota ha sido el referente en cuanto a confiabilidad en la fabricación de automóviles durante los últimos 30 años. Es difícil creer que en la década de 1960, los automóviles de Toyota eran terribles. Pero cuando llegaron los años 80, Toyota cambió por completo su proceso de fabricación y de repente, sus automóviles eran de los mejores. No sorprende que el estudio de esta mejora en la calidad haya sido fundamental en muchas metodologías que vemos hoy en día. Sin embargo, los conceptos originales se mezclan tanto con otros temas relacionados que es difícil saber qué queremos decir realmente con el término Lean. En su esencia, el tipo de Lean del que hablamos no tiene que ver con ágil o Lean startup. No se trata de procesos o procedimientos documentados como los que se aprenden en un curso de Lean Six Sigma. Y reducir costos y optimizar procesos son solo un subproducto positivo del sistema. En cambio, lo que hablamos vuelve al estudio de lo que hizo que esas líneas de producción originales de Toyota fueran tan efectivas. Es un sistema de aprendizaje que puede ayudarnos a pensar en mejores formas de trabajar. En el corazón de Lean, tenemos este concepto de resolución de problemas.
5. Resolución de Problemas en el Desarrollo de Software
Short description:
Enfoque científicamente riguroso para la resolución de problemas. Ejemplo de un error en TypeScript y su solución. Prevención de la recurrencia del problema a través de la configuración. Demostrando la esencia de la resolución de problemas.
Esencialmente, es un enfoque científicamente riguroso para resolver un pequeño problema a la vez con el fin de realizar mejoras incrementales en nuestro trabajo diario. Por ejemplo, teníamos una cobertura del 100% de TypeScript en un proyecto en el que trabajaba. Sin embargo, nos encontramos con un error en el que una propiedad no existía en un objeto, lo que provocaba que la página se bloqueara en tiempo de ejecución. Después de encontrar la fuente del error, fue bastante rápido solucionarlo. Sin embargo, pensé para mí mismo, TypeScript intenta ser un lenguaje de tipado estático. ¿Cómo es posible que este tipo de error pueda existir en nuestro código? Resulta que, después de buscar rápidamente en Google, esto es en realidad un problema resuelto. No deberíamos habernos encontrado con esto en primer lugar. Resulta que hay una opción de configuración llamada 'no unchecked index access' que se agregó en TypeScript 4.1 para resolver este mismo problema. Verifica que cuando accedes a una propiedad de un objeto, tenga en cuenta la posibilidad de que esa propiedad sea undefined, lo que te obliga a tener esto en cuenta en tu código. Y al agregar esta opción a nuestra configuración de TypeScript, no solo abordé los síntomas del problema, sino que también evité que volviera a ocurrir en nuestro código. Esto es lo que
6. Empoderando al Equipo e Identificando Problemas
Short description:
Capacitar a todos en la empresa para tener un enfoque metódico en la resolución de problemas. El papel de un líder técnico en una empresa de software Lean. Identificar y mejorar las condiciones de trabajo de los desarrolladores a través de la resolución de problemas. El concepto de estandarización y lograr condiciones estables. Visualizar y resolver problemas con Andon. Experimentar condiciones reales a través de Genchi Genbutsu.
Lo que realmente quiero decir con resolución de problemas. Cuando capacitamos a todos en nuestra empresa para tener este enfoque metódico en la resolución de problemas que surgen en su trabajo diario, estamos empoderando al equipo para mejorar sus condiciones de trabajo, la calidad de su producción y, por lo tanto, brindar más valor a nuestros clientes en menos tiempo. En adelante, les mostraré cómo Lean utiliza esta idea de resolución de problemas y cómo me ayuda a entender mi propio papel como líder técnico en una empresa de software Lean. Volvamos a nuestra definición de líder técnico. Buscamos crear las condiciones para que los desarrolladores entreguen valor sin esfuerzo. Si este es nuestro papel como líderes técnicos, entonces nuestro enfoque debe estar en dos cosas. Primero, identificar problemas o potenciales de mejora en las condiciones de trabajo de los desarrolladores, y luego, resolver problemas para mejorar esas condiciones y permitir que el equipo entregue más rápido. Veamos lo que Lean nos dice sobre las formas en que podemos identificar y visibilizar los problemas que ocurren en las condiciones de trabajo. En primer lugar, tenemos el concepto de estandarización. Esto implica definir el estado del arte para algo que estamos produciendo. En este caso, hablamos de cosas que afectan las condiciones necesarias para que los desarrolladores entreguen valor sin esfuerzo. El objetivo de la estandarización es crear condiciones estables para el equipo. Si no creamos estabilidad, terminamos obteniendo resultados variados, lo que dificulta identificar qué es realmente un problema y qué no lo es. Resulta que Toyota dedica aproximadamente cinco veces más tiempo a detallar los métodos de trabajo y desarrollar el talento de sus empleados en comparación con una empresa típica. Hay muchas cosas que podríamos estandarizar. Por ejemplo, tener una CI que se ejecute en menos de 10 minutos y practicar la entrega continua. La cobertura de 100% de TypeScript se ha convertido en un estándar en todos nuestros proyectos. Y tomar decisiones efectivas sobre herramientas y frameworks. Estas son todas cosas que estandarizamos en el trabajo. Y aquí pueden ver, les he dado la plantilla que uso cuando comienzo a crear un estándar. En realidad, es muy común que nos preguntemos mutuamente en el trabajo, ¿esto cumple con el estándar o no cumple con el estándar? Esto realmente nos ayuda a alinear a las personas en si creemos que estamos trabajando en el estado del arte para esas condiciones, es decir, lo mejor que pueden ser o lo mejor que sabemos que pueden ser para esa cosa de la que estamos hablando. Una vez que hemos logrado la estandarización, es decir, hemos definido cómo debe ser lo bueno, podemos comenzar a notar cuando las cosas no cumplen con el estándar. Lean nos presenta muchas formas de hacer esto. Pero dos ideas principales que nos ayudan en nuestro trabajo diario como líderes técnicos son, en primer lugar, Andon, que es la visualización de problemas que ocurren en la línea de producción. Cuando un desarrollador nota que algo está saliendo mal en su tarea, es su obligación informarlo lo antes posible para que puedan resolver el problema inicial, volver al rumbo con la entrega de la tarea con el líder técnico, y también para que podamos resolver problemas y asegurarnos de que se haya abordado la causa raíz del problema Hacemos un gran esfuerzo para asegurarnos de que los desarrolladores puedan informar tantos problemas como sea necesario y trabajar en estrecha colaboración con el líder técnico para resolverlos. Pero incluso si no recibes ningún Andon como líder técnico, no significa que no haya problemas ocurriendo en el terreno. Y para descubrirlos, tenemos que experimentar las condiciones reales por nosotros mismos, y este es el concepto lean de Genchi Genbutsu. Podemos hacer esto de varias formas. Podemos sentarnos junto al desarrollador y programar en pareja con él en su tarea. Nosotros mismos podemos tomar tareas y familiarizarnos con el código base e identificar dónde podría estar yendo mal, posibles problemas
7. Mejora Continua y Resolución de Problemas
Short description:
Mejorar continuamente las formas de trabajar dentro del código base. Priorizar problemas más pequeños para un progreso incremental. Resolver problemas diariamente para fortalecer el conocimiento del equipo y mejorar la calidad y entrega.
Buscar mejoras dentro del código base. Todavía trabajo en tickets a diario, pero el enfoque no es principalmente entregar el valor de ese ticket específico, sino descubrir cómo podemos mejorar nuestras formas de trabajar dentro del código base. Esto también se puede hacer a través de revisiones de código, y cuando hago revisiones de código, intento identificar cuál es lo siguiente que este desarrollador necesita aprender para llegar al siguiente nivel. Y, por supuesto, esto también sucede en las fábricas de Toyota. De hecho, los gerentes ven esto como uno de sus principales trabajos, y se frustran mucho cuando los llaman a reuniones, al igual que los líderes técnicos. Quieren estar allí en el piso entendiendo los problemas reales que enfrentan los fabricantes, y se dice que los gerentes principales en Toyota deben lavarse las manos antes de cada comida debido a la cantidad de grasa que han recogido de las veces que han estado en el piso de la fábrica, no solo administrando desde una oficina encima de la línea de producción. Resolver problemas de manera efectiva es realmente difícil, y la mayoría de las personas comienzan disparándose en el pie. Al primer vistazo, están realmente tentados a priorizar sus esfuerzos para abordar los problemas más grandes primero, es decir, aquellos que son más difíciles de resolver, con las causas raíces más complejas, y yo llamo a esto el problema de la roca grande. Entonces, imagina que te encargan mover un montón de rocas de diferentes tamaños de un lugar a otro. Si intentas empujar la roca más grande, vas a gastar más tiempo y esfuerzo moviéndola, y muchas veces, te lastimarás. De la misma manera, enfocarse en problemas grandes realmente puede desalentarte cuando no logras hacer un cambio significativo. En cambio, hubiera sido mucho mejor utilizar ese tiempo que gastaste moviendo la roca grande para recoger muchas rocas más pequeñas, moviéndolas una por una, donde podemos predeciblemente e incrementalmente hacer un montón más grande en el mismo tiempo que nos llevó mover la roca, y todo eso, el efecto acumulativo de todas esas rocas pequeñas termina construyendo un montón más grande. Aquí, Lean nos dice que abordemos esto haciendo resolución de problemas diariamente, es decir, utilizar los problemas pequeños de la vida cotidiana para fortalecer el conocimiento de tu equipo sobre las condiciones que permiten una mejor calidad y una entrega más rápida. Así que enfócate en problemas específicos, no generales, y ve cómo puedes
8. Identificación de las Causas Raíz y Solución de Problemas
Short description:
Identificar las causas raíz y resolver problemas utilizando el modelo de las 4M. Capacitación para los creadores, reparación de la máquina, actualización de los métodos y análisis de los materiales. Eliminar futuras fallas abordando los problemas de la máquina. Utilizar una biblioteca para generar tipos de TypeScript para los tipos de datos de Contentful.
prevenir que vuelvan a ocurrir. Entonces, ahora que hemos identificado un problema del tamaño adecuado, veamos qué podemos hacer para resolverlo. Cuando analizamos, buscamos la causa raíz de un problema, que estará relacionada con una de estas cuatro entradas que contribuyen a la creación de equipos de alto rendimiento, y en el trabajo, esto lo llamamos el modelo de las 4M, que describe esas entradas. Primero, tenemos al creador, la persona que produce la cosa que entrega valor, y las cosas que intervienen en eso son su salud, su conocimiento y sus habilidades. Luego tenemos, en segundo lugar, la máquina. Así que, esto incluye cosas como, para nosotros, la base de código, el equipo, el entorno de desarrollo, todas nuestras herramientas entran en la categoría de máquina. Luego tenemos los métodos, que se refieren a los estándares de trabajo. Es decir, lo que es de vanguardia para la forma en que estás haciendo algo. Y finalmente, tenemos los materiales. Estas son todas las cosas que le damos al creador, al desarrollador, para que complete su ticket. Pueden ser requisitos, y también pueden ser diseños de un diseñador, si hay alguna UX que se incluye en su ticket. Y dependiendo de la categoría en la que caiga la causa raíz, resolveremos este problema de manera diferente.
Para el creador, capacitaremos a las personas en la pieza específica que produjeron. Para la máquina, solucionamos la tecnología. Por ejemplo, cuando mencioné la actualización de la configuración de TS, eso fue solucionar la máquina, y estaba evitando que alguien más fallara en el futuro. Si hubiera algo mal con el método, podemos volver atrás y actualizar nuestros estándares para estar a la vanguardia. Es posible que hayamos estado produciendo algo según el estándar correcto, según nuestra mejor comprensión de lo que era el estado de la técnica, pero resulta que nuestra comprensión de lo que era el estado de la técnica estaba completamente equivocada, y ahora necesitamos actualizar nuestra comprensión. Y si hubiera algo mal con los materiales, es decir, las entradas físicas, las cosas que le dimos al desarrollador, entonces podemos localizar dónde ocurrió el defecto original, y acudir a ese lugar para asegurarnos de que haya calidad en el punto en que se creó esa cosa. Si se tratara de diseños, volveríamos al diseñador y veríamos por qué hubo una falta de comunicación o una discrepancia entre lo que el desarrollador necesitaba y lo que el diseñador produjo. Así que pongamos todo esto junto y volvamos a analizar el ciclo de lucha contra incendios del que hablamos. De hecho, más tarde volví a enfrentar exactamente el mismo problema en el que un desarrollador estaba luchando con un ticket de CMS, y como no lo resolví correctamente la primera vez, con mi comprensión actualizada de mi rol como líder técnico, en realidad tuve una segunda oportunidad para abordar este problema. Pasamos un tiempo analizándolo juntos y nos llevó unos 10 minutos descubrir que una propiedad que esperábamos que se devolviera desde el CMS en realidad era indefinida. Así que resolvimos el problema inmediato corrigiendo el TypeScript para indicar que la propiedad había cambiado. Pero en lugar de volver a mi propio ticket esta vez, primero hicimos un rápido análisis del problema y descubrimos que, una vez más, la razón fue porque alguien había realizado un cambio en el tipo de CMS sin actualizar nuestro TypeScript. Así que en este punto, podemos elegir abordarlo de varias maneras. Podemos capacitar al creador, solucionar la máquina, cambiar el método o analizar los materiales que se ingresaron. Y considero este tipo de problema como un problema de máquina. Porque si solucionamos la máquina para que sea imposible que volvamos a fallar de la misma manera en el futuro, hemos eliminado efectivamente esta clase de problema. Entonces, en este caso, en realidad encontramos varias formas de resolverlo. La forma en que elegimos abordarlo al final es utilizando una biblioteca que genera automáticamente tipos de TypeScript a partir del tipo de datos definido en Contentful. Ejecutas TSC, o el script, que luego genera los tipos y ejecuta la compilación de TypeScript, y tu código fallará en tiempo de compilación
9. El Rol del Líder Técnico y la Solución de Problemas
Short description:
Prevenir errores y problemas al romper el ciclo de lucha contra incendios. El rol de un líder técnico en la creación y mantenimiento de condiciones óptimas para los desarrolladores. Utilizar la solución de problemas para eliminar problemas diarios. Recursos adicionales disponibles para obtener más información sobre el rol de líder técnico en una empresa Lean.
en tiempo de ejecución. Y después de implementar esto, significó que prevenimos toda esta clase de error, toda esta clase de problemas, y rompimos el ciclo de lucha contra incendios. En realidad, nunca volví a experimentar este problema, lo cual fue genial para mí. Entonces, ¿qué significa ser un líder técnico? Los líderes técnicos no son desarrolladores senior. En realidad, crean y mantienen las condiciones para que los desarrolladores entreguen valor sin esfuerzo, y si estás buscando ser un líder técnico, puedes lograrlo siguiendo el modelo de líder técnico como gestor. Haces esto identificando un problema en las condiciones de trabajo a través de la estandarización, y luego utilizando la solución de problemas para eliminar por completo esos problemas diarios. Es posible que tengas algunas preguntas sobre el rol de líder técnico en una empresa Lean, ya que solo he tocado la superficie. Además de lo que he discutido hoy, tengo un artículo que aborda algunas de esas preguntas y profundiza más en algunos ejemplos y la teoría detrás de Lean si estás interesado en aprender más. Así que no dudes en contactarme en cualquiera de estas plataformas o a través de mi sitio web. Siempre estoy interesado en recibir comentarios sobre las cosas en las que estoy pensando. Así que, gracias por escuchar.
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.
The Talk discusses the importance of effective communication and collaboration in cross-cultural teams. It emphasizes the impact of culture on communication and performance evaluation. The speaker highlights the differences between low-context and high-context communication styles and the need to understand cultural nuances. It also explores the challenges of giving feedback in multicultural teams and suggests ways to improve communication and create a feedback culture. The influence of language on communication and the importance of transparency and honesty in feedback are also discussed.
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Transicionar de un rol de contribuidor individual a una posición de liderazgo, especialmente en la industria tecnológica de ritmo acelerado, es enormemente desafiante. La mayoría de los nuevos líderes no reciben ningún tipo de capacitación en los primeros 10 años de sus nuevas responsabilidades.Nuestro completo masterclass está diseñado para ayudar a los nuevos y emergentes líderes tecnológicos a comprender sus nuevos roles y adquirir las habilidades para convertirse en líderes seguros, felices y efectivos.
Una Guía para Desarrolladores sobre Cómo Comunicar, Convencer y Colaborar Efectivamente con los Stakeholders Es una historia tan antigua como el tiempo: la colaboración entre desarrolladores y stakeholders de negocios ha sido durante mucho tiempo un desafío, con una falta de comunicación clara que a menudo deja a ambas partes frustradas. Los mejores desarrolladores pueden comprender profundamente las necesidades de sus contrapartes de negocios, comunicar efectivamente la estrategia técnica sin perder a la audiencia no técnica y convencer al negocio de tomar las decisiones correctas. Trabajando en una consultoría, he fallado y tenido éxito en arquitectar y “vender” visiones técnicas, aprendiendo muchas lecciones en el camino.Ya sea que trabajes en una empresa de productos, seas consultor/freelancer, o quieras aventurarte más allá de ser solo un desarrollador, la capacidad de convencer y comunicar claramente con los stakeholders puede diferenciarte en la industria tecnológica. Esto se vuelve aún más importante con el auge de GenAI y el mercado de desarrolladores cada vez más competitivo, ya que la resolución de problemas y la comunicación efectiva son clave para posicionarte.En esta masterclass, compartiré ejemplos del mundo real, tanto buenos como malos, y te guiaré a través de poner la teoría en práctica mediante dojos.
Integrarse a un nuevo proyecto puede ser difícil, sin importar tu experiencia y antecedentes. Pero puede ser especialmente desafiante para los nuevos desarrolladores recién salidos de la escuela o de un bootcamp de programación. Basándose en su experiencia personal como graduado de un bootcamp y consultor de JavaScript, esta charla discutirá consejos y estrategias para que los gerentes ayuden a los nuevos desarrolladores de sus equipos a familiarizarse con un código desconocido, para que puedan tener un impacto más rápido y efectivo.
Cómo crear experiencias de edición que tu equipo amará
Workshop
2 authors
El contenido es una parte crucial de lo que construyes en la web. Las tecnologías web modernas aportan mucho a la experiencia del desarrollador en términos de construir sitios impulsados por contenido, pero ¿cómo podemos mejorar las cosas para los editores y creadores de contenido? En este masterclass aprenderás cómo usar Sanity.io para abordar la modelización de contenido estructurado, y cómo construir, iterar y configurar tu propio CMS para unificar los modelos de datos con experiencias de edición eficientes y agradables. Está dirigido a desarrolladores web que desean ofrecer mejores experiencias de contenido para sus equipos de contenido y clientes.
Comments