Escalando Rápido – Lecciones de Ingeniería de ~15 Años de Startups Tecnológicas

Rate this content
Bookmark

Construir un negocio es una lucha para ver quién consigue más clientes primero. Tienes que adoptar esa mentalidad al escribir código. Como me dijo una vez un viejo jefe: El código limpio no importará si estamos muertos. Tienes que cambiar tu mentalidad de las mejores prácticas a hacer las cosas. Pero no puedes volverte demasiado loco o la deuda técnica te matará. 

This talk has been presented at React Advanced 2024, check out the latest edition of this React Conference.

Swizec Teller
Swizec Teller
27 min
28 Oct, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Hola, discutiremos cómo escalar rápidamente y las lecciones de ingeniería aprendidas en los últimos 15 años de startups tecnológicas. Escalar involucra tres cosas: negocio, equipo y tecnología. La escalabilidad del negocio depende de las ventas y los costos de adquisición de clientes. La ingeniería es una herramienta que utiliza el negocio. Escalar el equipo es vital ya que los problemas tecnológicos a menudo son problemas de personas. La estructura del equipo afecta la arquitectura y el proceso de desarrollo del producto. Organiza los equipos en función del propósito, no de la tecnología. Pasa menos tiempo siendo bloqueado por otros equipos. Lanza características sin ser bloqueado. Hazte cargo de tu propio desorden. Enfócate en la asociación de ingeniería de productos. Construye más rápido usando ciclos de retroalimentación. Construye soluciones apropiadas para tu caso de uso. Deja ir el ego y experimenta con diferentes enfoques. Los ingenieros se hacen cargo de su propio desorden. Evita el trabajo en progreso. Termina el trabajo y enfócate en arreglarlo después. Ten una conversación antes de escribir código. Escalar la tecnología es más fácil de lo que piensas. Elige un diseño prefabricado. Guarda la innovación para las partes centrales. Elige soluciones existentes. Enfócate en resolver el problema. No pierdas tiempo tratando de predecir la escala futura. La escala te sorprenderá. Haz lo que funcione para tu negocio. Rechaza la complejidad innecesaria. Entiende el costo de las ideas. Modifica la situación para que se ajuste al diseño existente. La arquitectura es como un gráfico de dependencias en tu código. Reduce la complejidad arquitectónica organizando el código en función de lo que hace. Usa modelos verticales y evita crear dependencias excesivas. En el cliente, usa módulos verticales. En el back end, considera una arquitectura orientada a servicios. Comienza con un monolito y transiciona a microservicios si es necesario. Usa carpetas en lugar de microservicios cuando tienes un equipo pequeño. Usa modelos verticales y desarrollo basado en contratos o tipos para definir APIs e interfaces claras. Evita el código altamente interconectado y la duplicación. Enfócate en las estructuras de datos para evitar la complejidad y la necesidad de capas de traducción. Construir capas de traducción puede llevar a una experiencia de usuario lenta. Los equipos verticales alineados con el código vertical permiten una rápida resolución de problemas, control total de las características y manejo eficiente de datos. Comprender todo el dominio permite un desarrollo más rápido con menos errores.

1. Scaling Fast and Engineering Lessons

Short description:

Hola, hablaremos sobre escalar rápidamente y las lecciones de ingeniería aprendidas en los últimos 15 años de startups tecnológicas. Escalar implica tres cosas: negocio, equipo y tecnología. La escalabilidad del negocio depende de las ventas y los costos de adquisición de clientes. La ingeniería es una herramienta que utiliza el negocio. Escalar el equipo es vital ya que los problemas tecnológicos a menudo son problemas de personas. La estructura del equipo afecta la arquitectura y el proceso de desarrollo del producto.

Hola, soy Swiss, y vamos a hablar sobre escalar rápidamente y algunas de las lecciones de ingeniería que aprendí en los últimos 15 años haciendo startups de tecnología.

Has construido algo que la gente quiere, y está creciendo súper rápido. ¿Ahora qué vas a hacer? Hay tres cosas que vas a necesitar para escalar. Vas a tener que escalar el negocio, el equipo y la tecnología.

Escalar el negocio es bastante simple, pero sigue siendo un trabajo duro. Realmente solo hay dos maneras de escalar. Puedes hacer más ventas o puedes hacer ventas más grandes. Y por eso todo es una suscripción o se dirige a empresas en estos días. La razón por la que te importa esto como ingeniero es porque sin el negocio, no hay ingeniería. La ingeniería se trata de construir la cosa correcta en el momento correcto para la situación correcta. Y no importa lo que intentes, no puedes salvar un mal negocio con mejor tecnología. Y también el negocio es el combustible para todo lo que haces. Los números que quieres saber son el costo de adquirir clientes y su valor de vida. Y tu objetivo es construir tecnología que se ajuste a estos números. Pero honestamente, eso es principalmente lo que van a estar haciendo los de negocios. Lo que realmente estás haciendo es esto. Estás construyendo las vías antes de que el tren se detenga. Y estás tratando de ir, básicamente estás tratando de ir lo más rápido posible para asegurarte de que la ingeniería nunca sea el cuello de botella que detenga el negocio. Y no importa lo que escuches en Twitter o en internet, la ingeniería es solo una herramienta que el negocio usa para lograr sus objetivos. No es lo principal que, en su mayor parte, no es lo principal que el negocio está haciendo. Lo que estás tratando de hacer es construir esa flor. Pero lo que estás vendiendo a los usuarios son nuevos usuarios que pueden hacer cosas increíbles. Sé que amo mi tecnología, pero a los usuarios no les importa un carajo lo que estás haciendo. Solo quieren usar tu cosa y seguir con su vida. Así que eso es sobre escalar el negocio.

Escalar el equipo también es algo importante, aunque no hablamos mucho de eso como tecnólogos, porque muchos problemas tecnológicos son secretamente problemas de personas. Tu arquitectura y el proceso que usas para construir productos va a reflejar la estructura de tu equipo. Así que, por ejemplo, si pones QA en un equipo separado, vas a pasar mucho tiempo esperando que QA te dé su feedback. Y vas a tener ingenieros que están lanzando cosas por encima del muro en lugar de asegurarse de que su código funcione. Y luego tienes mucho ida y vuelta al final después de que el código está escrito, lo que te ralentiza y es realmente molesto para todos los involucrados.

2. Vertical Teams and Engineering Ownership

Short description:

Organiza equipos basados en el propósito, no en la tecnología. Pasa menos tiempo bloqueado por otros equipos. Lanza características sin ser bloqueado. Hazte cargo de tu propio desorden. Enfócate en la asociación de ingeniería de producto. Construye más rápido usando ciclos de retroalimentación. Construye soluciones apropiadas para tu caso de uso. Deja ir el ego y experimenta con diferentes enfoques. Los ingenieros se hacen cargo de su propio desorden.

Y lo peor que he visto que las startups hacen es que organizan equipos basados en la tecnología en lugar de basados en el objetivo o el propósito de lo que estás construyendo. Así que si organizas tus equipos de esa manera, vas a terminar pasando mucho tiempo bloqueado. Principalmente vas a estar esperando. Construyes la cosa, construyes tu parte de la cosa, y luego va a otro equipo y luego a otro equipo y terminas con un proceso muy lineal y lento.

Mientras que si puedes orientar tus equipos basados en su propósito, basados en su objetivo, como un equipo de administración que posee usuarios de administración, un equipo de compradores que posee compradores, un equipo de crecimiento que se enfoca en hacer crecer el producto, vas a pasar mucho menos tiempo bloqueado por otros equipos y siendo capaz de construir proyectos o nuevas características, de principio a fin como parte de un solo grupo. El objetivo de hacer eso es que quieres entregar valor sin ser bloqueado. Y hay muchos nombres diferentes para este tipo de estructura de equipo. Algunas personas los llaman equipos empoderados equipos extremadamente alineados, equipos centrados en la capacidad de negocio. Es todo un libro de capacidad de consultoría, y solo depende de qué libro leas.

El objetivo principal, el punto principal que todos intentan transmitir cuando hablan de esto es que quieres un equipo que pueda lanzar características de principio a fin sin ser bloqueado. Y parte de eso, mi parte favorita de eso es que puedes hacerte cargo de tu propio desorden. Así que usé QA como ejemplo. Um, si tienes ingenieros que se hacen cargo de su propio desorden y que son responsables de las cosas que lanzan, vas a tener muchos menos errores. Se siente más lento, pero en realidad vas a tener muchos menos, muchos menos problemas. Así que, por ejemplo, hace un par de días, me llamaron como a las 3am, me sacaron de la cama, fui a ver las alertas, y era algo increíblemente estúpido y tonto. Ahora adivina qué me aseguré realmente de que se arreglara al día siguiente. Um, sabes, me llamaron, arreglé el error en un día y el error, y eso no va a volver a suceder, lo cual es mucho más rápido de lo que muchos, muchos equipos logran hacerlo. También un poco más estresante. Uh, la otra parte de tener equipos verticales que pueden hacerse cargo de su dominio es que puedes enfocarte en una mejor asociación de ingeniería de producto donde los ingenieros trabajan en llevarnos al otro lado del agua, no solo construyendo el puente.

Así que terminas con este ciclo de retroalimentación circular en lugar de un proceso lineal donde puedes trabajar junto con el producto para construir las, para construir esas flores que, um, que los clientes quieren para moverse más rápido. Te permite, te permite construir más rápido, um, usando ciclos de retroalimentación, y puedes iterar en soluciones. Yo, personalmente, lo encuentro muy gratificante como ingeniero cuando puedo hablar con los clientes, entender sus necesidades, diseñar, diseñar mi código y mis productos como una forma de resolver esas necesidades de usuario y luego, um, devolvérselo a ellos e iterar en esas soluciones. La idea es que puedes construir cosas que puedes construir la solución apropiada para tu caso de uso, no solo algo de lo que escuchaste en la charla. Y de eso se trata realmente la ingeniería. Lo que eso significa es que sí, a veces vas a tener que fusionar código realmente malo que apesta, uh, porque al final del día, tu código no necesita ser perfecto. Solo necesita funcionar. Así que vas a tener que dejar ir tu ego y dejar que otras personas experimenten con diferentes enfoques. Está bien si alguien escribe código de una manera que, uh, de una manera diferente a como tú lo harías porque está bien, siempre y cuando funcione. Y siempre y cuando esos ingenieros se hagan cargo de su propio desorden, uh, si se rompe, lo van a arreglar. Si funciona, es genial.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Arquitectura de código de próxima generación para construir aplicaciones de Node mantenibles
Node Congress 2023Node Congress 2023
30 min
Arquitectura de código de próxima generación para construir aplicaciones de Node mantenibles
Today's Talk focused on code architecture, modularization, and scaling in software development. The speaker discussed the benefits of separating code by domain and using tools like NX to improve productivity and enforce modular architecture. They also highlighted the importance of automating library creation and configuration. Additionally, the Talk covered code scaling and deployment strategies, including caching and automated code migrations. The speaker emphasized the flexibility and scalability of Fastify and the advantages of using a monorepo for front-end and back-end development.
Cómo automatizar cambios de código para 100 repositorios: Introducción a los Codemods
React Day Berlin 2022React Day Berlin 2022
28 min
Cómo automatizar cambios de código para 100 repositorios: Introducción a los Codemods
This Talk discusses automating code changes for Android repositories, utilizing tools like JSCodeShift and Abstract Syntax Tree. The speaker shares a real use case example of maintaining a design system library and making changes to a component. The talk emphasizes the importance of automating repetitive tasks and using the power of abstract syntax tree for code changes. The Q&A session covers topics like source code formatting, TypeScript support, and cultural embedding of code mods. The talk concludes with insights on when automation is worth it and the limitations of code mods for monorepo changes.
El Futuro Stack de la Revisión de Código
JSNation 2023JSNation 2023
22 min
El Futuro Stack de la Revisión de Código
The Talk discusses the challenges of code reviews and the need to redefine the code review process in light of changes in software development. It emphasizes the importance of collaboration, security, performance, and clean code in the new stack of code review. The Talk also highlights the benefits of automating code review comments and optimizing the code review process. Overall, the Talk aims to build a better code review process that promotes collaboration and improves the quality of software development.
Acelerando la calidad del código con las métricas de DORA
JSNation Live 2021JSNation Live 2021
27 min
Acelerando la calidad del código con las métricas de DORA
This Talk discusses the Dora Metrics and their relation to continuous code improvement. High and elite performers deploy more frequently and have a lower change failure rate. Continuous code improvement involves identifying and fixing bugs in real time. Rollbar is a continuous code improvement platform that provides visibility into actionable errors. It helps organizations reduce the risk of losing customers and optimize developer productivity. Rollbar's unique error fingerprints and advanced features enable a deeper understanding of issues and faster resolution.
Camino a Cero Fallos de Lint: Abordando Desafíos de Calidad de Código a Gran Escala
React Summit US 2023React Summit US 2023
11 min
Camino a Cero Fallos de Lint: Abordando Desafíos de Calidad de Código a Gran Escala
This Talk discusses the journey from thousands of Lint failures to zero in a codebase at Linton that is over 80 years old. The approach involved implementing rules, incentives, and tooling to address the issue. The tool called Checkup was used to visualize ESLint failures by team and lint rule, providing accountability and responsibility. The efforts resulted in cleaning up over 6,000 lint failures, with 55 contributors, and a 30% increase in perceived code quality.
Lo que aprendí sobre la calidad del software de los 10 proyectos de Javascript más populares en Github
TestJS Summit 2023TestJS Summit 2023
27 min
Lo que aprendí sobre la calidad del software de los 10 proyectos de Javascript más populares en Github
The Talk discusses the code review process and the importance of software quality. It emphasizes the need for maintainability in code and the use of guidelines tailored to the team. The Talk also highlights the significance of functional suitability and the challenges of code review. Automation and documentation are recommended to improve code reviews and ensure software quality.

Workshops on related topic

Aporta Calidad y Seguridad al pipeline de CI/CD
DevOps.js Conf 2022DevOps.js Conf 2022
76 min
Aporta Calidad y Seguridad al pipeline de CI/CD
WorkshopFree
Elena Vilchik
Elena Vilchik
En esta masterclass repasaremos todos los aspectos y etapas al integrar tu proyecto en el ecosistema de Calidad y Seguridad del Código. Tomaremos una aplicación web simple como punto de partida y crearemos un pipeline de CI que active el monitoreo de calidad del código. Realizaremos un ciclo completo de desarrollo, comenzando desde la codificación en el IDE y abriendo una Pull Request, y te mostraré cómo puedes controlar la calidad en esas etapas. Al final de la masterclass, estarás listo para habilitar esta integración en tus propios proyectos.