La clan a menudo me pregunta: «¿Por qué te uniste a Snowflake y por qué elegiste trabajar en la productividad del desarrollador?» Me uní a Snowflake para estudiar de ingenieros de clase mundial y ser parte de la civilización enormemente colaborativa. Estas han sido la salsa secreta para el crecimiento de cohetes de Snowflake. El copero de cocaína se embarcaba en una extraordinario transformación de la productividad del desarrollador, ¡y tuve que saltar en el barco de cohetes mientras despegaba!
Comencemos desde el principio. En 2012, Benoit Dageville y Thierry Cruanes fundaron Snowflake. Ingenieros experimentados en el espacio de la saco de datos, escribieron mucho del código que todavía está alimentando el copo de cocaína hoy. Nuestros fundadores creen que todos los ingenieros deben escribir código, independientemente de la decrepitud. Ser práctico permite a nuestros arquitectos senior y CTO ver la efectividad en el ámbito de la productividad del desarrollador y comprender con maduro precisión las luchas diarias, la viabilidad de los plazos y las compensaciones de soluciones.
El copero de cocaína experimentó un rápido crecimiento y contrató el mayor talento, lo que resultó en una saco de código que se expande rápidamente. Como compañía de un producto, el producto de Snowflake inevitablemente se volvió más enrevesado y rico en funciones con el tiempo. En consecuencia, a lo dispendioso de los abriles, nuestra respaldo de prueba no se controló, el entorno de explicación se volvió cada vez más intrincado y construye y los tiempos de prueba se ralentizaron significativamente, afectando negativamente la productividad del desarrollador. Por otra parte, la infraestructura que respalda nuestros sistemas no era confiable bajo una carga pesada, requiriendo reintentos manuales y desarrolladores frustrantes con la pérdida de productividad. A pesar de los primeros esfuerzos, la centralización y la escalera de nuestras herramientas no tuvieron éxito.
A principios de 2023, iniciamos iniciativas para mejorar la integración continua (IC) y los entornos de desarrolladores, pero solo hicieron un progreso calmoso. A finales de 2023, la táctica requirió un replanteamiento para que se moviera.
Identificamos cuatro ingredientes secreto para el reinicio: prioridad de liderazgo, medición, conexión al cliente y responsabilidad.
Prioridad de liderazgo
Nuestro liderazgo define la productividad del desarrollador como una incorporación prioridad para toda la compañía, con las revisiones mensuales del Equipo de Liderazgo Ejecutor y del CEO ejecutor. El CTO de Snowflake, S Muralidhar, está profundamente involucrado en la definición de objetivos de toda la empresa y liderando a los equipos de entrega cruzada que realizan el trabajo verdadero. La productividad del desarrollador tuvo un aumento en el conteo de personal para el personal del equipo. Mientras tanto, los voluntarios de toda la compañía dieron un paso al frente para refactorizar el código y mejorar los tiempos de configuración de pruebas y ejecutar los tiempos para acelerar la replicación de nuestro sistema de compilación y entornos de desarrolladores.
Medición
La medición es secreto para comprender si estamos progresando. Es trascendental calcular el éxito como se percibe desde la perspectiva de un cliente, y no de nuestra capacidad para alcanzar hitos internos. Para hacerlo, recolectamos una combinación de métricas cualitativas y cuantitativas:
-
Métricas de operaciones del producto: tiempo de actividad del sistema de compilación; Número total de comandos del sistema de compilación por día
-
Métricas de productos percibidas por el beneficiario: compilación y latencia de prueba; porcentaje de espacios de trabajo que son saludables; Prohijamiento de nuevos sistemas
-
Métricas de salida de la navegación de beneficiario: recuento promedio de relaciones públicas por desarrollador por semana; Latencia del ciclo de vida de relaciones públicas a través de cada etapa desde la presentación de relaciones públicas, la primera revisión y la última revisión para fusionar
-
Sentimiento caudillo del desarrollador: CSAT trimestral (basado en encuestas); Áreas de lucha superior
Establecemos objetivos trimestrales ambiciosos basados en métricas y vigilamos de cerca. En nuestra revisión de operaciones semanales, profundizamos en anomalías en métricas y conducimos a la resolución. Cuando las métricas no están suficientemente conectadas con la experiencia del desarrollador, las revisamos y recopilamos comentarios actualizados de los usuarios para respaldar la coherencia con la experiencia vivida de los usuarios.
Conexión al cliente
Nuestros clientes son ingenieros de copos de cocaína exigentes. Para aventajar su confianza y construir el ciclo virtuoso de feedback e iteración, debemos demostrar que 1) entendemos sus experiencias, 2) estamos avanzando constantemente y 3) priorizar e iterar en función de sus comentarios.
Al presionar por los cambios, nuestros clientes se dividen en tres categorías: primeros usuarios, seguidores y rezagados. Los primeros usuarios son secreto para dar comentarios críticos para ayudarnos a iterar, y promueven innovaciones a sus equipos como expertos confiables para impulsar la acogida. Identificamos a los primeros usuarios como campeones en cada equipo y realizamos entrevistas regulares para persistir el pulso sobre el progreso y el sentimiento.
Analizamos los comentarios de los usuarios en encuestas trimestrales como una útil secreto para priorizar la planificación trimestral. Realizamos entrevistas frecuentes de los usuarios en grupos de productos, analizando por decrepitud, lenguajes de programación primarios y ubicaciones geográficas. Utilizamos estos comentarios para ajustar las prioridades en sprints mensuales. Como cada ubicación geográfica difiere en el ritmo de su equipo y el modo de comunicación preferido, fuimos a cada equipo del radio de características para comprender el mejor foro en el que interactuar con los desarrolladores locales. Y siempre cerramos el circuito con los clientes para compartir el progreso de la entrega de sus mejores puntos de dolor y obtener sus comentarios sobre la hoja de ruta.
Responsabilidad
Tratamos las herramientas de desarrolladores como un producto orientado al cliente con acuerdos de nivel de servicio publicados. Demostramos la responsabilidad en correos electrónicos semanales y actualizaciones quincenales en el producto de todas las manos. La transparencia ayuda a desarrollar la confianza del cliente y mantiene el flujo de comentarios.
Pudimos entregar progreso a través de la medición, validar mejoras a través de la conexión al cliente y demostrar la responsabilidad con actualizaciones a nuestros clientes. El foco aceleró el explicación y la acogida de cuatro innovaciones: Bazel (sistema de compilación), espacio de trabajo en la montón (entorno de explicación), SnowCI (integración continua) y Snowfort (situación de prueba de regresión). Cada una de las cuatro áreas de innovación nos permitió exceder los desafíos técnicos y organizacionales.
Bazelo
Nuestros sistemas de construcción heredados, Maven y CMake, condujeron a una proliferación de scripts de compilación y herramientas inconsistentes, promulgando la curva de estudios para los desarrolladores que trabajan en diferentes componentes. Las construcciones locales no eran confiables y requerían reintentos frecuentes y «construcciones limpias» para tener éxito, lo que resultó en una incorporación frustración entre los desarrolladores. Al adoptar bazel, logramos construcciones consistentes, confiables y rápidas. Por otra parte, la ejecución remota de backend en Buildbarn nos permitió paralelizar masivamente a Build and Test, reduciendo drásticamente la latencia.
Espacio de trabajo en la montón
El antiguo entorno de desarrollador en MacBook VMS tuvo problemas para satisfacer la creciente demanda de construcción y prueba del producto. Los usuarios se limitaron a una VM activa a la vez, y restablecer una VM rota podría tomar 30 minutos y, a veces, mucho más. Para atracar esto, introdujimos los espacios de trabajo de la montón efímera que se ejecutan en Kubernetes, precargados con el extremo código de punto de control, compilaciones en personalidad, IDE, herramientas de prueba y cualquier otra cosa que el beneficiario necesite para una productividad instantánea. Un beneficiario puede voltear un espacio de trabajo en dos minutos y persistir varios espacios de trabajo en paralelo, con una conexión rápida del centro de datos adentro de los datos directamente a la personalidad de bazel Buildbarn.
La migración del entorno de explicación es el cambio más disruptivo para los flujos de trabajo de explicación. La acogida de conducir tomó más que un gran producto para exceder la inercia. Aprovechamos a los primeros usuarios como campeones internos, utilizamos divultos divertidos y creativos para motivar a los rezagados, fue equipo por equipo para mostrar los beneficios y cerró el circuito con la ronda tras ronda de comentarios.
Cocaína
Históricamente, nuestro sistema CI fue impulsado por guiones de Jenkins desarticulados y desarticulados que habían crecido a lo dispendioso de los abriles. Arreglar y optimizarlos fue desafiante correcto a las malas capacidades de prueba y la comprensión limitada del equipo de toda la configuración del sistema. Al construir un sistema libre con sede en YAML internamente, llamado SnowCI, para fomentar nuestros flujos de trabajo de CI, forzamos una lavado de estos scripts y nos movimos a un sistema CI mucho más comprensible, convencional y reciente. Esto nos ha permitido calcular constantemente las etapas de CI, eliminar grandes porciones de flujos de trabajo personalizados y poco confiables y centrarnos en la velocidad y la confiabilidad como principios básicos.
Cocaína
Nuestro situación de pruebas heredadas se creó hace más de una plazo, sin aislamiento para permitir que las pruebas comiencen y terminen en un estado libre, sin barandillas para evitar inconsistencia y sin percepción para evitar el código de configuración de Boilerplate duplicados. Es por eso que construimos Snowfort, el situación de prueba de regresión de Snowflake, para atracar estas deficiencias. Además nos permitió dividir la respaldo de prueba alto en pequeños lotes, lo que hace posible retornar a intentarlo con fallas de prueba. Buildbarn nos permitió paralelizar la ejecución de la prueba, reduciendo la latencia de CI. El aislamiento de la prueba nos permitió sujetar drásticamente la esclavitud de las pruebas, mejorando la confiabilidad del IC.
Progreso
Entre febrero y diciembre de 2024, la acogida de los cuatro nuevos sistemas aumentó de 10-20% a 90-95%. La construcción ahora es mucho más confiable y estable con latencia de ocho minutos. La latencia y la confiabilidad del CI en las diferentes etapas de la tubería han mejorado de tres a seis veces. Los entornos de desarrolladores efímeros giran con compilaciones y herramientas completamente almacenadas en personalidad en dos minutos, preservando completamente la configuración entre sesiones. El situación de la prueba de regresión de Snowfort facilita el autor de las pruebas confiables con el aislamiento adecuado. Como resultado, el sentimiento del desarrollador ha mejorado significativamente. En nueve meses, el porcentaje de clientes insatisfechos ha disminuido de 58.9% a 21.4%, y el porcentaje de clientes satisfechos ha aumentado de 17.8% a 42.3%.
Nuestro trabajo no está hecho. Tenemos mucho trabajo por delante para que las experiencias internos de los desarrolladores experimenten fricción y aún más encantadores. Estamos invirtiendo en la táctica de Bazel e IDE para tener construcciones locales de subinte y experiencia en autorización y depuración de fluidos para cada estilo de programación en Snowflake. Estamos invirtiendo en Snowci para completar las relaciones públicas de la autorización para fusionarse en menos de vigésimo minutos. Con los cuatro ingredientes secreto mencionados anteriormente en su oportunidad, estamos admisiblemente posicionados para continuar sirviendo a nuestros clientes.