¿Cómo se escala una organización de ingeniería de software? 5 -> 15 -> 60 personas?

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:

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!

Cuando solo hay unos 5 ingenieros, el equipo puede ser administrado por un líder. Durante este período, trate de encontrar y desarrollar candidatos líderes. Entonces, cuando el equipo crece más allá de 15, puede dividirlo en varios equipos con sus respectivos líderes dedicados. Durante este período, intente encontrar y desarrollar una cultura de ingeniería sólida. Entonces, cuando la organización crece más allá de los 60, puede funcionar de manera autónoma.

En pocas palabras, necesitas algunas cosas:
Empiezas desde una visión de cuál es el propósito del equipo u organización en el futuro. A partir de esa visión, usted debe ser capaz de trazar un mapa de ruta de las habilidades y competencias necesarias para llegar allí y ejecutar o entregar esta visión.
Esas habilidades y competencias son su modelo para el crecimiento del talento y la contratación existentes.
Sobre todo, enfóquese en contratar / preparar a las mejores personas. No elegiría construir su propia casa sobre cimientos rápidos y sucios, para ahorrar tiempo o dinero, entonces, ¿por qué haría lo mismo con su negocio?
Tengo un dicho “El buen SW comienza con buenos ingenieros de SW”

Ho ya!

* Toma más proyectos
* Contratar ingenieros de kick ass.
* Sea iterativo.

En términos simples, solo trabaja tu trasero.