De la Confusión a la Claridad: Aprovechando los RFCs en Entornos de Alto Rendimiento

Rate this content
Bookmark

En entornos de alto rendimiento, el ritmo es implacable. Si bien es fácil tomar decisiones técnicas rápidas en equipos de desarrollo más pequeños, la dinámica cambia drásticamente al tratar con un equipo de 100 desarrolladores. Tomar decisiones técnicas significativas, especialmente aquellas relacionadas con la arquitectura, sin afectar a otros equipos se vuelve casi imposible.

En esta charla, compartiré mi experiencia en la estructuración de un proceso de RFCs en QuintoAndar. Nos adentraremos en los RFCs, descubriendo por qué son una herramienta indispensable para las empresas que buscan mantener la excelencia técnica, incluso con una fuerza laboral considerable. Exploraremos cómo los RFCs facilitan la toma de decisiones técnicas de alto nivel, proporcionando una hoja de ruta clara para los cambios y empoderando a todos para navegar los riesgos con precisión.

This talk has been presented at C3 Dev Festival 2024, check out the latest edition of this Tech Conference.

Mateus Paulino
Mateus Paulino
10 min
15 Jun, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
La iniciativa AmazingRFCs se creó para mejorar las entregas y la colaboración en Quintana Roo. Dos acciones clave fueron la formación del grupo de asesores de RFCs y la optimización del proceso de diseño y revisión. Al incluir a personas interesadas y clave en las discusiones e implementar iniciativas de capacitación diarias, aumentó la densidad de tomadores de decisiones capaces, lo que resultó en más RFCs de alta calidad y soluciones mejoradas en producción.

1. Introduction to AmazingRFCs Initiative

Short description:

Hola a todos. Aquí Matheus Palano. Soy de Brasil y soy un ingeniero de software senior y líder técnico en Quintana Roo. Quintana Roo es la plataforma de vivienda más grande de América Latina, con más de 5,000 empleados. Creamos la iniciativa AmazingRFCs para mejorar la calidad de nuestras entregas, reducir el tiempo de diseño y fomentar la colaboración. Nos enfocamos en empoderar a los puntos focales, capacitar a los gerentes y desarrollar herramientas y guías. Dos acciones que marcaron la diferencia fueron la formación del grupo de Asesores de RFCs y la optimización del proceso de diseño y revisión.

Hola a todos. Aquí Matheus Palano. Soy de Brasil. También soy un ingeniero de software senior y líder técnico en Quintana Roo, y estoy aquí para presentar esta charla, De Caos a Claridad, Aprovechando los RFCs en entornos de alto rendimiento. Así que primero que nada, me gustaría darles un poco de contexto sobre Quintana Roo y por qué los RFCs son tan importantes allí. Quintana Roo es la plataforma de vivienda más grande de América Latina. Ya está presente en más de 50 ciudades brasileñas y ha comenzado a dar sus primeros pasos en el mercado internacional. Actualmente, cuenta con más de 5,000 empleados, incluyendo 1,000 personas en el área de producto y tecnología. Por lo tanto, nuestro proceso de toma de decisiones de arquitectura debe ser muy, muy eficiente, y por eso hemos creado una iniciativa llamada AmazingRFCs.

¿Qué esperamos lograr al final de la iniciativa? Nos encantaría ver una mejora visible en la calidad de nuestras entregas, reducir el tiempo dedicado al diseño, utilizar los RFCs como una forma de compartir conocimiento, describir y fomentar la colaboración. Para lograr eso, necesitábamos aumentar la densidad de personas técnicamente capaces de tomar excelentes decisiones de arquitectura, y una forma de hacerlo es a través de los RFCs, pero escribir RFCs implica muchas, muchas áreas, y por eso hemos decidido dividirlo en tres áreas principales. La primera área en la que íbamos a trabajar era empoderar a los puntos focales en cada tribu. Esto significa tener liderazgo técnico local que sean expertos en la materia y puedan brindar asistencia. Esos líderes también serían responsables de reclutar directamente a personas de esas tribus. La segunda área serían los gerentes capaces de capacitar y guiar. También serán responsables de monitorear las decisiones técnicas, establecer la responsabilidad de tomar buenas decisiones técnicas dentro del área misma, y por último, herramientas, guías y procesos, creando orientación para ayudar con diferentes aspectos de la arquitectura, creando herramientas para el seguimiento y mejora de la calidad. Tomamos muchas acciones para lograr esos objetivos, pero me gustaría mostrarles tres acciones que realmente marcaron la diferencia para nosotros. La primera fue crear un grupo llamado Asesores de RFCs, personas que son responsables de ayudar a otros con los RFCs y crear una comunidad para que intercambien ideas, además de traer asesores específicos que sean expertos en áreas del sistema. ¿Cómo funcionó eso? Teníamos a los asesores en la parte superior, y el proceso de escribir un RFC se dividiría en tres pasos. Paso uno, escritura inicial, presentación al equipo y luego revisión externa. El asesor también estaría presente junto con la persona que está escribiendo en esos tres pasos. La segunda acción fue abrirlo a comentarios, al menos una semana de anticipación para que las personas puedan prepararse y tener una semana para leer el RFC. Luego, la persona que estaba escribiendo junto con el asesor lo presentaría al equipo y haría los ajustes si fuera necesario. Y por último, requeriría la aprobación de al menos dos revisores, y luego estaría listo para implementarse. La segunda acción que tomamos y que marcó una gran diferencia fue en relación al diseño y proceso de revisión. Nos dimos cuenta de que nuestro tiempo sincrónico es muy valioso y tiende a producir excelentes resultados, ya que son rápidos a través de nuestras discusiones. Pero para lograr un uso óptimo del tiempo para cada persona, cambiamos el horario y el formato. Así que cambiamos los invitados para que sean seleccionados por su conocimiento del dominio y su interés. Supongamos que estamos discutiendo una nueva arquitectura para los componentes de diseño que se utilizarán ampliamente en la página de inicio de sesión. Si bien podemos tener varios candidatos muy buenos para la discusión, como un ingeniero de front-end que contribuyó en el pasado al inicio de sesión, o un ingeniero full-stack que modificó la página de inicio de sesión e integró con las APIs, o el gerente de ingeniería que

2. Optimizando la Participación y la Capacitación

Short description:

Decidimos incluir solo a las personas interesadas o clave en las discusiones de los RCs. Programamos revisiones de diseño ad hoc para una mejor participación. Las iniciativas de capacitación diaria mejoraron las habilidades y el conocimiento necesarios para la toma de decisiones arquitectónicas. Estas acciones aumentaron la densidad de tomadores de decisiones capaces, la cantidad y calidad de los RCs escritos, y mejoraron las soluciones en producción.

pronto estará impulsando a su equipo a proponer una nueva arquitectura para el inicio de sesión SSL. También podemos tener algunas personas que no tendrán mucho que contribuir y podrían usar su tiempo de manera más productiva, como un ingeniero de backend que actualmente está resolviendo un desafío en el campo o otro equipo que no tiene nada que ver con el inicio de sesión, o un ingeniero full-stack que actualmente se está enfocando en integrar varios servicios de alta complejidad en los últimos meses y no está familiarizado con el proceso de inicio de sesión. Por eso hemos decidido que solo las personas interesadas o las personas clave en el tema de los RCs estarán presentes. Otras personas también están invitadas, pero no es obligatorio para ellos.

Lo segundo relacionado con el proceso de revisión de diseño fue programar revisiones de diseño ad hoc en lugar de una reunión fija semanal. Así que cambiamos nuestras reuniones de revisión de diseño de semanales a un horario ad hoc, lo que significa que la persona que está escribiendo los RCs programará la reunión de revisión de diseño. Junto con el asesor, son responsables de elegir y alinear con las personas que serán invitadas a la discusión. Junto con el asesor, preseleccionarán las aprobaciones principales que requerirán una revisión obligatoria para que su RC sea incluido. Y la revisión de diseño se programará en un momento que sea conveniente para el escritor, el asesor y los participantes. De esta manera, podemos asegurarnos de que solo las personas interesadas estén presentes y tengan el tiempo y estén allí para revisar los RCs de manera sincrónica.

Otra acción que tomamos y que me gustaría presentar aquí fueron las iniciativas de capacitación diaria. Hemos desarrollado capacitaciones que se centran en mejorar las habilidades técnicas y el conocimiento necesario para la toma de decisiones arquitectónicas. Cubrió una amplia gama de temas, desde principios arquitectónicos fundamentales hasta técnicas[62] avanzadas. Por ejemplo, la introducción al análisis de problemas, donde aprendimos a identificar correctamente una iniciativa, recopilar requisitos, aclarar objetivos y definir el alcance, identificar posibles roles de usuario y partes interesadas, identificar posibles soluciones, esbozar estrategias y asignar resultados, y también probar y medir los resultados. Otra capacitación que tuvimos fue una descripción general de la arquitectura de la solución, donde aprendimos los conceptos detrás de la arquitectura, una descripción general de microservicios, micro-frontends, MVC y otros socios. Comunicación sincrónica versus asincrónica, Quill, Topic, PubSub, UTLs, y API gateways. Esas capacitaciones nos brindaron una caja de herramientas para escribir RCs y encontrar soluciones que podrían ser potencialmente buenas. Y eso nos ayudó a acelerar la revisión también, porque la calidad de nuestros RCs aumentó significativamente.

Entonces, ¿cuáles fueron los resultados de esas acciones? Primero, hemos aumentado la densidad de personas técnicamente capaces de tomar excelentes decisiones arquitectónicas. Ese era nuestro objetivo principal. Y hoy en día, tenemos personas que son muy, muy capaces de escribir buenos RCs. En segundo lugar, hemos aumentado la cantidad de RCs escritos. Las personas se sintieron más cómodas escribiendo RCs y, por lo tanto, escribieron aún más RCs. Y por último, pero no menos importante, hemos aumentado la calidad de los RCs implementados. No solo las revisiones, sino también el primer borrador de los RCs tienen una calidad realmente buena. Y esto nos ayudó a tener una mejor solución en producción. Esto es lo que decidí traerles y mostrarles este caso. Espero que lo hayan disfrutado y muchas gracias. Y como decimos en portugués, ¡Obrigado!

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

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Impacto: Creciendo como Ingeniero
React Summit 2022React Summit 2022
27 min
Impacto: Creciendo como Ingeniero
Top Content
This Talk explores the concepts of impact and growth in software engineering. It emphasizes the importance of finding ways to make the impossible possible and the role of mastery in expanding one's sphere of impact. The Talk also highlights the significance of understanding business problems and fostering a culture of collaboration and innovation. Effective communication, accountability, and decision-making are essential skills for engineers, and setting goals and finding sponsors can help drive career growth. Feedback, goal setting, and stepping outside of comfort zones are crucial for personal development and growth. Taking responsibility for one's own growth and finding opportunities for impact are key themes discussed in the Talk.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Sobre convertirse en un Tech Lead
TechLead Conference 2023TechLead Conference 2023
25 min
Sobre convertirse en un Tech Lead
Top Content
The role of a Tech Lead involves shaping the roadmap, helping the team be more effective, and working on important projects. Lessons learned include encouraging idea sharing, avoiding taking on all the work, and focusing on delegation. Tech Leads focus on the outcome, involve the team in decision-making, and make plans based on how different pieces will interact. The role of a Tech Lead is to focus on engineering and guide the team in figuring out how the whole system should fit together. Architecting can become problematic when it loses touch with the coding part, resulting in implementation issues.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Depuración del Rendimiento de React
React Advanced 2023React Advanced 2023
148 min
Depuración del Rendimiento de React
Workshop
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Masterclass de alto rendimiento Next.js
React Summit 2022React Summit 2022
50 min
Masterclass de alto rendimiento Next.js
Workshop
Michele Riva
Michele Riva
Next.js es un marco convincente que facilita muchas tareas al proporcionar muchas soluciones listas para usar. Pero tan pronto como nuestra aplicación necesita escalar, es esencial mantener un alto rendimiento sin comprometer el mantenimiento y los costos del servidor. En este masterclass, veremos cómo analizar el rendimiento de Next.js, el uso de recursos, cómo escalarlo y cómo tomar las decisiones correctas al escribir la arquitectura de la aplicación.
Maximizar el rendimiento de la aplicación optimizando las fuentes web
Vue.js London 2023Vue.js London 2023
49 min
Maximizar el rendimiento de la aplicación optimizando las fuentes web
WorkshopFree
Lazar Nikolov
Lazar Nikolov
Acabas de llegar a una página web y tratas de hacer clic en un elemento en particular, pero justo antes de hacerlo, se carga un anuncio encima y terminas haciendo clic en eso en su lugar.
Eso... eso es un cambio de diseño. Todos, tanto los desarrolladores como los usuarios, saben que los cambios de diseño son malos. Y cuanto más tarde ocurran, más interrupciones causarán a los usuarios. En este masterclass vamos a analizar cómo las fuentes web causan cambios de diseño y explorar algunas estrategias para cargar fuentes web sin causar grandes cambios de diseño.
Tabla de contenidos:¿Qué es CLS y cómo se calcula?¿Cómo las fuentes pueden causar CLS?Estrategias de carga de fuentes para minimizar CLSRecapitulación y conclusión