¿Cómo es la Ingeniería de Software en un gigante como Google?. ¿Cuáles son las mejores prácticas a seguir cuando se desarrolla código utilizando un único repositorio con miles de millones de líneas de código?

Ya hemos hablado anteriormente de las mejores prácticas de Google en la gestión de equipos. Hoy nos centramos en la parte más “ingenieril” de Google. Y nadie mejor que ellos mismos para explicárnoslo. De hecho, hasta han escrito un libro donde dan todos los detalles. Es más, el libro es gratuito. O sea que no hay excusa para no leérselo. Aquí lo tenéis: Software Engineering in Google, también conocido como el libro del flamenco (por razones obvias). Como complemento ideal os recomiendo este podcast entrevistando a Titus Winters, uno de sus autores.

No es un libro sobre programación sino sobre las estrategias y métodos que utiliza Google para desarrollar sus productos manteniendo un código mantenible y “saludable”.  Como dicen los propios autores, el libro cubre la cultura ingenieril de Google, sus procesos y herramientas y como esta combinación contribuye a su eficiencia como organización.

El libro explora los pilares que toda organización software (y ya sabemos que a día de hoy esta definición cubre la gran mayoría de organizaciones ya que todas dependen en gran medida del software para sus operaciones diarias) debería tener en cuenta al diseñar, planificar la arquitectura o escribir y evolucionar código. Entre otros temas veréis:

  • Como el tiempo afecta la sostenibilidad del software y como conseguir que el código sea más resiliente. No tiene nada que ver un código que se va a reemplazar en 6 meses con uno que tiene que durar veinte años. No tendría sentido que la manera de gestionar el código fuera el mismo en los dos casos.
  • Como tienes que cambiar tus prácticas de Ingeniería de Software a medida que el equipo o el código crece
  • Y qué decisiones y equilibrios tendrás que sopesar al evaluar decisiones de diseño y desarrollo. Ejemplo: la velocidad de desarrollo vs asegura que el producto sigue siendo usable para los usuarios.

El libro cubre una gran diversidad de temas. Desde una definición de conceptos clave como Ingeniería de Software, a como gestionar y liderar equipos a  como medir la productividad, guías de estilo, y buenas prácticas para las revisiones de código, documentación y el testing. La parte final se centra en las herramientas que nos permiten realizar todas estas tareas de una forma eficiente. Ahí discuten aspectos como el control de versiones, los analizadores estáticos de código y los sistemas de integración continua.

600 páginas de sabiduría pero con un resumen de las lecciones aprendidas más importantes al final de cada capítulo. ¡No hay excusa para no descubrir como es la Ingeniería de Software en Google!.