Producto y tecnología

Mejora continua de la productividad de los desarrolladores en Snowflake

Digital illustration of a woman looking at a computer screen with barcharts superimposed on the photo.

La gente me pregunta a menudo: “¿por qué te uniste a Snowflake y por qué elegiste trabajar en la productividad de los desarrolladores?” Me incorporé a Snowflake para aprender de ingenieros excepcionales y formar parte de una cultura altamente colaborativa. Este ha sido el secreto del crecimiento exponencial de Snowflake. Snowflake se estaba embarcando en una notable transformación de la productividad de los desarrolladores, y tuve que subirme a la nave mientras despegaba.

Empecemos por el principio. En 2012, Benoit Dageville y Thierry Cruanes fundaron Snowflake. Ingenieros experimentados en bases de datos, escribieron gran parte del código que sigue impulsando Snowflake en la actualidad. Nuestros fundadores creen que todo ingeniero debe escribir código, independientemente de su antigüedad. Ser prácticos permite a nuestros arquitectos sénior y CTO ver la realidad sobre el terreno de la productividad de los desarrolladores y comprender con mayor precisión los problemas diarios, la viabilidad de los plazos y las limitaciones de las soluciones.

Snowflake experimentó un rápido crecimiento y contrató a los mejores profesionales, lo que se tradujo en una rápida expansión de la base de código. Como empresa de un solo producto, el producto de Snowflake inevitablemente se volvió más complejo y completo con el tiempo. En consecuencia, a lo largo de los años, nuestros recursos colaterales de pruebas no se controlaron, el entorno de desarrollo se volvió cada vez más complejo y los tiempos de compilación y prueba se ralentizaron significativamente, lo que afectó negativamente a la productividad de los desarrolladores. Además, la infraestructura de nuestros sistemas no era fiable bajo carga pesada, por lo que requería reintentos manuales y frustraba a los desarrolladores con la pérdida de productividad. A pesar de los primeros esfuerzos, la centralización y el escalado de nuestras herramientas no tuvo éxito.

A principios de 2023, pusimos en marcha iniciativas para mejorar la integración continua (continuous integration, CI) y los entornos de desarrollo, pero los avances fueron lentos. A finales de 2023, la estrategia requería un replanteamiento para ponerla en marcha.

Identificamos cuatro ingredientes clave para el reinicio: prioridad de liderazgo, medición, conexión con los desarrolladores y responsabilidad.

Prioridad de liderazgo

Nuestro liderazgo define la productividad de los desarrolladores como prioridad alta para toda la empresa, con revisiones mensuales del CEO y el equipo de liderazgo ejecutivo. S Muralidhar, CTO de Snowflake, está muy involucrado en la definición de los objetivos de toda la empresa y en liderar los equipos interempresariales. La productividad de los desarrolladores aumentó el personal del equipo. Mientras tanto, los voluntarios de toda la empresa intensificaron sus esfuerzos para refactorizar el código y mejorar la configuración de pruebas y el tiempo de ejecución de las pruebas a fin de acelerar el cambio de plataforma de nuestro sistema de compilación y entornos de desarrollo. 

Medición

La medición es clave para entender si estamos progresando. Es vital medir el éxito tal como se percibe desde la perspectiva del desarrollador, así como nuestros hitos internos. Para ello, recopilamos una combinación de métricas cualitativas y cuantitativas:

  • Métricas de operaciones de producto: tiempo de actividad del sistema de compilación; número total de comandos al día del sistema de compilación

  • Métricas de producto percibidas por el usuario: latencia de compilación y pruebas; porcentaje de espacios de trabajo saludables; adopción de nuevos sistemas 

  • Métricas de resultados de la trayectoria del usuario: recuento medio de solicitudes de cambio (pull request, PR) por desarrollador a la semana; latencia del ciclo de vida de PR en cada fase, desde el envío de PR, primera revisión y última revisión para la fusión

  • Sentimiento general de los desarrolladores: índice de satisfacción (CSAT) trimestral (según la encuesta); áreas de mejora recomendadas

Establecemos ambiciosos objetivos trimestrales basados en métricas y los vigilamos de cerca. En nuestra revisión semanal de operaciones, profundizamos en las anomalías en las métricas y buscamos una resolución. Cuando las métricas no están suficientemente relacionadas con la experiencia del desarrollador, las revisamos y recopilamos las opiniones actualizadas de los usuarios para garantizar la coherencia con su experiencia.

Conexión con los desarrolladores

Dado que nuestros desarrolladores internos son efectivamente los clientes de nuestro equipo, siempre nos hemos centrado en brindarles una sólida atención al cliente. Para ganarnos su confianza y crear el círculo virtuoso de la retroalimentación y la iteración, debemos demostrar que: 1) comprendemos sus experiencias, 2) progresamos constantemente y 3) cambiamos las prioridades y las iteraciones en función de sus comentarios.

A la hora de impulsar los cambios, nuestros desarrolladores se dividen en tres categorías: pioneros en la adopción, seguidores y rezagados. Los pioneros en la adopción son fundamentales para proporcionar comentarios críticos que nos ayuden a iterar y, a su vez, promueven innovaciones para sus equipos como profesionales de confianza que impulsan la adopción. Identificamos a los pioneros como campeones en cada equipo y realizamos entrevistas periódicas para mantener el pulso con el progreso y los sentimientos. 

Analizamos las opiniones de los desarrolladores en encuestas trimestrales como herramienta clave para establecer prioridades en la planificación trimestral. Realizamos entrevistas frecuentes a los usuarios de todos los grupos de productos, analizando por antigüedad, lenguajes de programación principales y ubicaciones geográficas. Utilizamos esta información para ajustar las prioridades en los sprints mensuales. Dado que cada ubicación geográfica difiere en el ritmo del equipo y el modo de comunicación preferido, fuimos a cada equipo de área de funciones para encontrar el mejor foro en el que interactuar con los desarrolladores locales. Y siempre cerramos el círculo con los desarrolladores relevantes para compartir el progreso de sus principales problemas e incluir sus comentarios en la hoja de ruta.

Responsabilidad

Tratamos las herramientas de desarrollo como un producto orientado al cliente con acuerdos de nivel de servicio publicados. Hemos demostrado responsabilidad en correos electrónicos semanales y actualizaciones quincenales en reuniones prácticas sobre productos. La transparencia ayuda a generar confianza y a que los comentarios sigan fluyendo. 

Pudimos avanzar mediante la medición, validar las mejoras a través de la conexión con los desarrolladores y demostrar la responsabilidad con las actualizaciones de información para nuestros desarrolladores. La atención se centró en acelerar el desarrollo y la adopción de Bazel (sistema de compilación), un espacio de trabajo en la nube (entorno de desarrollo), la integración continua (CI) de Snowflake y el marco de pruebas de regresión de Snowflake. Cada una de las cuatro áreas de innovación nos permitió superar los desafíos técnicos y organizativos.

Bazel

Nuestros sistemas de compilación heredados causaron una proliferación de secuencias de comandos de compilación y una falta de uniformidad en las herramientas, lo que dificultó la curva de aprendizaje de los desarrolladores que trabajaban en diferentes componentes. Las compilaciones locales no eran fiables y requerían frecuentes reintentos y “compilaciones limpias” para tener éxito, lo que provocaba una gran frustración entre los desarrolladores. Al adoptar Bazel, conseguimos compilaciones coherentes, fiables y rápidas. Además, la ejecución remota de backend en Buildbarn nos permitió desarrollar en paralelo masivamente la compilación y las pruebas, reduciendo drásticamente la latencia.

Espacio de trabajo en la nube

El antiguo entorno de desarrollo (basado en máquinas virtuales, VM) mostraba dificultades para satisfacer la creciente demanda de compilación y pruebas del producto. Los usuarios estaban limitados a una VM activa a la vez, y restablecer una VM rota podía llevar 30 minutos, y a veces mucho más. Para abordar este problema, hemos introducido espacios de trabajo en la nube efímeros que se ejecutan en Kubernetes, precargados con el código de punto de control más reciente, compilaciones en caché, entorno de desarrollo integrado (integrated development environment, IDE), herramientas de pruebas y cualquier otra cosa que el usuario necesite para obtener productividad instantánea. Un usuario puede poner en marcha un espacio de trabajo en dos minutos y mantener varios espacios de trabajo en paralelo, con una conexión rápida dentro del centro de datos directamente en la caché Bazel Buildbarn. 

La migración al entorno de desarrollo es el cambio más disruptivo en los flujos de trabajo de desarrollo. Para impulsar la adopción, hacía falta más que un gran producto para superar la inercia. Usamos la influencia de los pioneros, utilizamos comunicaciones divertidas y creativas para motivar a los rezagados, fuimos equipo por equipo para mostrar los beneficios y cerramos el círculo con una ronda tras otra de comentarios.

Snowflake CI

Históricamente, nuestro sistema de CI funcionaba con secuencias de comandos Jenkins desconectadas que habían crecido a lo largo de los años. Solucionarlo y optimizarlo era todo un reto debido a las deficientes capacidades de prueba y a la comprensión limitada por parte del equipo de toda la configuración del sistema. Al crear internamente un sistema totalmente nuevo, basado en YAML, para impulsar nuestros flujos de trabajo de CI, obligamos a limpiar estas secuencias de comando y pasamos a un sistema de CI mucho más comprensible, convencional y moderno. Esto nos ha permitido medir de forma uniforme las fases de la CI, eliminar grandes segmentos de flujos de trabajo personalizados y poco fiables, y centrarnos en la velocidad y la fiabilidad como principios básicos.

Marco de pruebas de regresión de Snowflake

Nuestro marco de pruebas heredado se creó hace más de una década, sin aislamiento para permitir que las pruebas comenzaran y terminaran en un estado limpio, sin medidas de protección para evitar la incoherencia y sin abstracción para evitar que se duplicara el código de configuración del boilerplate. Por eso desarrollamos el marco de pruebas de regresión de Snowflake, para abordar estas deficiencias. También nos permitió dividir grandes recursos colaterales de pruebas en lotes pequeños, lo que hizo posible repetir las pruebas rápidamente en caso de fallos. Buildbarn nos permitió ejecutar pruebas en paralelo, lo que redujo la latencia de CI. El aislamiento de pruebas nos permitió reducir drásticamente la fragilidad de las pruebas, lo que mejoró la fiabilidad de la CI.

Progreso

Entre febrero de 2024 y enero de 2025, la adopción de los cuatro nuevos sistemas pasó de un 10-20 % a un 90-95 %. Ahora, la compilación es mucho más fiable y estable con una latencia de ocho minutos. La latencia y fiabilidad de la CI en las distintas fases del flujo han mejorado de tres a seis veces. Los entornos de desarrollo efímeros se ponen en marcha con compilaciones y herramientas totalmente en caché en dos minutos, conservando por completo la configuración entre sesiones. El marco de pruebas de regresión de Snowflake facilita la creación de pruebas fiables con un aislamiento adecuado. Como resultado, el sentimiento de los desarrolladores internos ha mejorado significativamente. En un año, el porcentaje de desarrolladores satisfechos ha aumentado del 17,8 % al 44,0 %, mientras que el porcentaje de desarrolladores insatisfechos ha bajado del 58,9 % al 19,6 %.

Line graph illustrating the change in satisfaction/dissatisfaction with developer velocity at Snowflake.

Nuestro trabajo no ha terminado. Tenemos mucho trabajo por delante para lograr que las experiencias internas de los desarrolladores no sufran fricción y sean aún más agradables. Estamos invirtiendo en la estrategia Bazel e IDE para tener compilaciones locales en menos de un minuto y una experiencia fluida de autoría y depuración para cada lenguaje de programación en Snowflake. Estamos invirtiendo en Snowflake CI para completar solicitudes de cambio (PR), desde la creación hasta la fusión en menos de veinte minutos. Con los cuatro ingredientes clave mencionados anteriormente, estamos bien posicionados para seguir atendiendo a nuestros desarrolladores.

SF_Value-Focused-Data-Leaders_AEM_1680x720_1.jpg
Informe

Predicciones sobre datos e IA en 2025

¿Cómo es el futuro con el impulso acelerado de la IA? Lee nuestro informe con opiniones de más de una docena de expertos y ejecutivos.
Artículo de
Compartir artículo

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

Where Data Does More

  • Prueba gratuita de 30 días
  • No se requiere tarjeta de crédito
  • Cancela en cualquier momento