Hace un par de semanas un colega docente me hizo una consulta porque tenia que comenzar a dictar una materia de Ingeniería de Software. Hicimos una llamada vía skype y le conté sobre el enfoque que suelo usar en mis materias sobre dicha temática. Al final de la charla quedamos en que le compartiría los materias de estudio que utilizo y de ahí la idea de este post.
En primer lugar un poco de contexto. Yo dicto dos materias de Ingeniería de software una en UNTREF y otra en UBA (Facultad de Ingeniería). La materia de UNTREF se llama efectivamente Ingeniería de Software mientras que la de UBA se llama Métodos y Modelos en la Ingeniería de Software 2 (memo2). Más allá de las diferencias de nombres, el contenido de ambas materias es muy parecido y la dinámica de cursada y aprobación es la misma (está descripta en este paper). Al mismo tiempo hay que destacar que en ambos casos los alumnos llegan luego de haber cursado previamente alguna otra materia de Ingeniería de Software más introductoria, con lo cual ya tienen cierta idea de un proceso de desarrollo y han leído/estudiado algunos de los clásicos como No Silver Bullet y el SWEBoK.
Explicado el contexto vamos al contenido. En ambos casos tomamos como base el libro Construcción de Software: una mirada ágil (aunque no lo leemos completo). Complementariamente tenemos los siguientes materiales (no todos son de «consumo obligatorio» y en algunos casos se referencia un libro, pero no pedimos leerlo completo sino algunos capítulos en particular):
- Lectura: Lean Sales Up – Making value from product conception
- Lectura: Guía oficial de Scrum
- Video: Introducción a la Gestión de Proyectos
- Lectura: Diseño ágil con TDD
- Video: BDD+TDD (parte 1)
- Video: BDD+TDD (parte 2)
- Video: TDD en el mundo real
- Audio: Entrevista Kent Beck sobre TDD
- Video: Bootstrap de Proyecto
- Audio: Entrevista a Eric Evan sobre DDD
- Lectura: Architectural Design, Designing Software Architectures
- Lectura: Software Architecture in the Agile lifecycle
- Lectura: Walking Skeleton
- Lectura: Clean Architecture
- Lectura: Técnicas para la realización de Retrospectivas
- Lectura: Improving Agile Retrospectives
- Lectura: Exploring the top of the testing pyramid
- Video: UI automated tests, good or evil?
- Lectura: Introduction to functional tests automation
- Lectura: Introducción a las Pruebas de Sistemas de Información
- Lectura: Scaling Agile at Spotify
- Lectura: Lean Primer
- Lectura: Trunk-based Development
- Lectura: A successful Git branching model
- Lectura: Site Reliability Engineering
- Video: Técnica de deployment Blue-Green
- Video: Evolución de bases de datos con FlywayDB
- Video: Introducción a la Gestión de Riesgos
- Video: Caso de Continuous Delivery en .NET
Adicionalmente tenemos algunos material de nivelación sobre temáticas que se supone vieron en materias anteriores:
- Video: Tutorial introductorio de UML
- Video: Tutorial de Git
- Lectura: Introducción a los lenguajes de la Web
Debo mencionar que esta lista de materiales está en constante evolución.