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 Conference 2022React Advanced Conference 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.
Emma Bostian: I landed my dream job by sharing my blogs on Twitter
Emma Bostian: I landed my dream job by sharing my blogs on Twitter
Top Content
Featured Article
Emma Bostian
Emma Bostian
Software engineer, lecturer, podcast host, author — is there something Emma Bostian hasn't done? She moved from America to Sweden, started working at Spotify, and took up a few challenges along the way. And now she has some career tips to share.
What led you to software engineering? I was raised in the ecosphere of tech because my dad is a software engineer at IBM, and my mom was a designer there, too. My dad always encouraged me to join STEM and take a look at computer science — however, I was convinced I wanted to be a medical doctor. In my first year of college, I declared a biology major and quickly realized I was not too fond of it. In my second semester, I switched to an actuarial science major where I took Introduction to Computer Science, and the rest is history. In my second year of college, I declared a computer science major and began my journey from there.
What is the most impactful thing you ever did to boost your career?Writing blog posts and documenting my learning journey on Twitter has far been the best career boost. I wrote purely for myself to reference the things I learned over time, and I even utilized my design skills in Figma to create custom graphics depicting difficult concepts like CSS specificity. By sharing my blogs on Twitter and engaging with the people reading them, I was able to grow an audience extremely quickly. I began receiving conference speaking opportunities, podcast requests, and course invitations to teach with LinkedIn Learning and Frontend Masters.
Ultimately, I landed my job at Spotify through Twitter, too, when a friend and follower of mine asked if I would be interested in interviewing. Now I live in Stockholm working my dream job. It still blows my mind how tweeting about my blog led me to some of the most amazing career opportunities.
What would be your three tips for engineers to level up their career? First, be patient. I often see posts on Twitter or LinkedIn about developers who were promoted to a senior position after a year. And while this is wonderful, I think we forget that each company has a different standard for what constitutes a senior developer, and everyone's journey will be different.
Second, don't be afraid to ask questions. If you try your best to solve a problem or answer a question you have, but you can't figure it out after a reasonable amount of time, ask a team member or mentor for help.
And lastly, invest in the right resources for learning. When I started my journey, I didn't know which platforms worked for me to learn. Now, I have a few trusted platforms such as Frontend Masters, Free Code Camp, or Level Up Tutorials that I go to when I need to learn a new skill.
You're currently working as a software engineer at Spotify. What does a typical day of yours look like there?I begin my day answering emails. Then we have a team breakfast and a standup remotely as we're all still remote at Spotify. After that, we might have a web tech sync with the other squads in our business unit. The day usually includes some form of pair or mob programming, depending on the work stream. 
My team always has Fika, a traditional Swedish coffee break, scheduled every afternoon. Every couple of Fridays, we have team games planned to release some stress. 
Also, I tend to have a lot of free time to focus, which is nice but makes for a boring answer to this question!
Do you have some rituals or tools that keep you focused and goal-oriented?I'll admit that I've been struggling with staying motivated in the time of remote work. I've been remote with Spotify since onboarding a year ago, but my team is wonderful, and they help me when I'm down.
Apart from that, I use Todoist to keep track of my tasks, and, naturally, I listen to Spotify while working. But other than that, not really. Maybe I should adopt some new tools to keep me on track!
My current favorite Spotify playlist is Brand New Chill: https://open.spotify.com/playlist/37i9dQZF1DX6uQnoHESB3u?si=380263b3c853442e
I also love Chillout Daily: https://open.spotify.com/playlist/7ozIozDp260fjNOZy1yzRG?si=66d6c839ec9b458a
You wrote a book called De-coding the Technical Interview. What was the impulse to do it?I wanted to give the community a manual of the essentials of computer science knowledge to ace the technical interviews. The book covers data structures like stacks, queues, or linked lists, tackles algorithms, and deals with systems design. You'll also learn about the interview process from start to finish, get tips on how to submit an amazing take-home project, or understand how to problem solve. You'll also gain knowledge on the frontend coding skills needed to excel at a frontend interview.
If you could stress one piece of advice on surviving a technical interview, which would it be?Do not lie your way through an interview. If you don't know the answer to something, just admit it. There's no shame in admitting you don't know the answer to something. There is shame in faking it and pretending like you do know the answer.
What's the single best practice everyone who writes code should follow?Remember that while you are technically writing code for computers, you're also writing it for humans. Your code should be readable and have as little complexity as possible without sacrificing accessibility or performance.
In addition to the book, you co-host the Ladybug Podcast. What inspired you to enter this field, and what are the podcast's main topics?We talk about everything tech and career on the podcast, from Java and GraphQL to how to start a business and cross-cultural communication. The podcast is a way for me and my co-hosts to share our experiences in tech, having taken different paths. And I'm really glad for doing it — it has allowed me to meet so many incredible people, learn many new things, and support my dream of teaching.
What pieces of your work are you most proud of?My technical interview book was a huge feat for me as well as my courses with LinkedIn Learning on building a tech resume. I enjoy creating things that help other people advance their careers, so I'm also proud of my courses with Frontend Masters on design systems and CSS.

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 Conference 2023React Advanced Conference 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