Pregunta muy interesante!
Mi colega recientemente publicó una publicación bastante detallada sobre este tema. Por contexto, fue uno de los primeros desarrolladores en Adyen, una plataforma de pagos que ahora procesa más de $ 100 mil millones en volumen de transacciones, y ha estado estrechamente involucrado en el desarrollo de mejores prácticas para un equipo que creció de cuatro a más de 100 desarrolladores.
La publicación completa está aquí: de 0 a $ 100 mil millones: infraestructura de escala y flujo de trabajo en Adyen, pero en esencia, los puntos clave son:
- Cómo desinfectar las entradas de la consola en C #
- ¿Debería una compañía de tecnología dar una prueba de codificación genérica a cada solicitante antes de programar una entrevista en el sitio?
- ¿Por qué Google Now no puede descubrir mis intereses?
- ¿Cómo se convirtió California en el hogar de Silicon Valley? ¿Por qué no está en ningún otro estado?
- Como un extraño, ¿cómo lidiar con elogios injustos de los ingenieros de software en las startups en Silicon Valley?
1. Haga que todos trabajen en la línea principal
En Adyen, los desarrolladores siempre pueden acceder a los cambios de los demás lo antes posible. Para garantizar que esto suceda, todos se desarrollan en la línea principal. Y cuando algo pasa a producción, se sigue este flujo de trabajo:
2. Comprometerse temprano y con frecuencia, pero centralice la implementación y activación
Tener un gran grupo de desarrolladores que confirman el código significa que tienes una gran cantidad de funcionalidades en funcionamiento en cada lanzamiento. Esto trae un elemento de riesgo a cada implementación ya que toda esta nueva funcionalidad se activa a la vez.
Adyen mitiga este riesgo al tener un enfoque centralizado y sistemático para la separación de la implementación y activación del código. Al mantener la propiedad sobre la alternancia, los desarrolladores reciben alertas automáticas sobre la limpieza de rutas de código antiguas y la activación de nuevas funciones.
3. Sé despiadado con tu stack
Muchos equipos de desarrollo están ansiosos por adoptar el software más reciente y brillante. Pero cuando la adopción de soluciones complejas se ejecuta sin control, las cosas tienden a romperse. Y si su pila se basa en esta filosofía, las posibilidades de que todo se incendie simultáneamente aumenta dramáticamente. La respuesta es elegir soluciones que sean la combinación correcta de funcionalidad / complejidad equilibrada por un ecosistema maduro y estabilidad, como se ve en el gráfico a continuación.
Pinterest también tiene una visión interesante y una filosofía similar a esta cuestión, sobre la que puede leer en esta publicación de blog: Aprenda a dejar de usar cosas nuevas y brillantes y ame MySQL
Finalmente, también vale la pena señalar que lo que es correcto para Adyen no es necesariamente correcto para su equipo, ¡pero espero que sea de interés!