Prólogo xix
Prefacio xxi
Parte I. Tesis
1. ¿Qué es la ingeniería de software? 1
Parte II. Cultura
2. Cómo trabajar bien en equipo 25
3. Compartir conocimientos 43
4. Ingeniería para la equidad 71
5. Cómo liderar un equipo 83
6. Liderazgo a escala 111
7. Medición de la productividad de la ingeniería 129
Parte III. Procesos
8. Guías de estilo y normas 145
9. Revisión del código 171
10. Documentación 193
11. Descripción general de las pruebas 217
12. Pruebas unitarias 245
13. Dobles de pruebas 273
14. Pruebas más grandes 299
15. Depreciación 331
Parte IV. Herramientas
16. Control de versiones y gestión de ramas 345
17. Code Search 371
18. Sistemas de compilación y filosofía de la compilación 393
19. Critique, herramienta de revisión del código de Google 425
20. Análisis estático 443
21. Gestión de dependencias 457
22. Cambios a gran escala 489
23. Integración continua 511
24. Entrega continua 539
25. La computación como servicio 551
Parte V. Conclusión
Epílogo 583
Índice 585
Hoy en día, los ingenieros de software necesitan saber no solo cómo programar eficazmente, sino también cómo desarrollar prácticas de ingeniería para que la base de código sea sostenible y funcione bien. Este libro hace hincapié en esta diferencia, entre la programación y la ingeniería de software. ¿Cómo pueden gestionar los ingenieros de software una base de código viva que evoluciona y responde a requisitos y demandas cambiantes a lo largo de su vida? A partir de su experiencia en Google, los ingenieros de software Titus Winters y Hyrum Wright, junto con el escritor técnico Tom Manshreck, presentan una mirada sincera y perspicaz sobre cómo construyen y mantienen el software algunos de los principales profesionales del mundo. Este libro trata de la cultura, los procesos y las herramientas de ingeniería exclusivas de Google, y de cómo estos aspectos contribuyen a la eficacia de una organización de ingeniería de software. Explorará tres principios fundamentales que las organizaciones de software deben tener en cuenta a la hora de diseñar, establecer la arquitectura, escribir y mantener el código: o Cómo afecta el tiempo a la sostenibilidad del software y cómo hacer que su código resista el paso del tiempo. o Cómo afecta la escala a la viabilidad de las prácticas de software dentro de una organización de ingeniería de software. o Qué contrapartidas debe tener en cuenta el ingeniero de software al evaluar las decisiones de diseño y los desarrollos.