Los desarrolladores quieren lanzar y crear valor para nuestros usuarios. Entonces, ¿por qué tantos equipos luchan por llevar las cosas a producción rápidamente? En esta charla, Jason Lengstorf analizará el impacto que nuestra arquitectura y nuestra infraestructura frontend tienen en la capacidad de nuestros equipos para construir, iterar y desplegar software, y cómo afecta la calidad y los riesgos del despliegue.
Cómo la Arquitectura y la Infraestructura Pueden Mejorar (o Romper) la Productividad de tu Equipo
Video Summary and Transcription
La charla de hoy analiza cómo las elecciones de arquitectura e infraestructura impactan la productividad del equipo. Los sistemas complejos pueden generar frustración, fragilidad y lentitud, obstaculizando la eficiencia y creando silos de conocimiento. Los front-ends desacoplados, los front-ends precompilados y las funciones sin servidor pueden mejorar la productividad y permitir un despliegue más rápido. Las arquitecturas de apoyo son cruciales para construir una cultura de lanzamiento y evitar sistemas frustrantes, frágiles y lentos.
1. Being Productive by Default
Hoy hablaré sobre cómo las elecciones de arquitectura e infraestructura pueden afectar la productividad del equipo. Los sistemas complejos pueden generar frustración, fragilidad y lentitud. Pueden ralentizar a los desarrolladores y crear compartimentos estancos de conocimiento dentro de los equipos. La complejidad también obstaculiza la eficiencia de la empresa y puede generar burocracia.
Tengo mucho que cubrir en siete minutos, así que empecemos de inmediato. En primer lugar, nuestro objetivo principal como empresa es entregar valor a los clientes rápidamente. La forma en que tenemos éxito como empresa es producir algo que las personas quieran y entregárselo rápidamente para mantenernos competitivos y para que las personas quieran seguir pagándonos por nuestros servicios. Y los equipos quieren entregar. Por defecto, los equipos quieren sacar las cosas al mercado. Es muy divertido para nosotros ver cómo las cosas se lanzan en vivo.
Entonces, ¿qué impide que un equipo entregue? Hay algunas cosas de las que no vamos a hablar hoy como construir una base de confianza y asegurarse de cuidar a tu gente. Voy a asumir que estás haciendo ese trabajo porque si no lo haces, ninguno de los consejos que te daré hoy tendrá sentido. Pero suponiendo que ya tienes eso en su lugar, hablemos de tu infraestructura. Si tu infraestructura y tus procesos son frustrantes, si son frágiles, si son lentos, si tienes que pasar por un montón de obstáculos y guardianes y controles y diferentes equipos, y solo puedes implementar una vez cada pocos días o incluso cada pocas semanas, eso es muy frustrante, frágil y lento. Es posible que hayas escuchado hablar de esto pero existe una buena probabilidad de que hayan estado usando el acrónimo FFS, frustrante, frágil, y lento. La complejidad es en gran parte lo que lleva a estos sistemas frustrantes, frágiles y lentos. Estamos tratando de hacer cosas muy complejas con nuestro código y nuestras aplicaciones, pero si no tenemos cuidado, esa complejidad comienza a convertirse en desorden y burocracia y esa fragilidad. Hablemos un poco sobre cómo la complejidad puede afectar al equipo. En primer lugar, un sistema complejo va a ralentizar a un desarrollador. Si un desarrollador tiene que pedir permiso para hacer parte de su trabajo, si hay cosas en el front-end que requieren que se mueva al nivel intermedio o al back-end y tiene que pedir permiso a un desarrollador de back-end o esperar a un ingeniero de DevOps o empezar a buscar a otros equipos para que se encarguen de partes del trabajo, eso lo va a ralentizar. Si tienes equipos que trabajan en sistemas complejos, comienzas a desarrollar compartimentos estancos de conocimiento. Tienes este problema en el que un equipo está trabajando en algo y son los únicos que saben cómo funciona. Y peor aún, si ese equipo tiene a alguien que es el único que sabe cómo funciona, eso significa que todo el equipo puede quedarse atascado si esa persona no está. Eso no es divertido. Genera mucha carga de trabajo. Dificulta que las personas se vayan de vacaciones y es difícil crear autonomía.
2. Improving Productivity with Infrastructure Choices
Los sistemas frágiles conducen a una velocidad de implementación más lenta y a una mayor fragilidad. Los front-ends desacoplados reducen la complejidad y permiten una implementación más rápida con bajo riesgo. Los front-ends precompilados reducen la fragilidad y permiten deshacer cambios rápidamente. Las funciones sin servidor reducen la redundancia y permiten a los equipos de front-end realizar llamadas privilegiadas a las API. Al elegir una infraestructura centrada en el front-end, los equipos pueden ser más productivos e implementar varias veces al día.
3. La Importancia de una Arquitectura de Apoyo
Nuestro equipo de front-end puede implementar cuatro veces en un lapso de cinco a seis horas después de fusionar una PR. Adoptar Jamstack puede llevar al mismo éxito. Para construir una cultura de implementación, es crucial tener una arquitectura de apoyo. Las arquitecturas frustrantes, frágiles y lentas obstaculizan a los desarrolladores y ralentizan la implementación.