Ingeniería del Software

Presentación de la especialidad

¿Para qué?

Desarrollo de software profesional

Como emprendedores o trabajando para otros

Aquí, o en el extranjero

Desarrollo de software

El software no se "fabrica", ni se "construye", SE DISEÑA

El término "factoría de software" es una contradicción y el "albañil" del software es el compilador

El desarrollo de software es una actividad creativa y especializada

Las partes no creativas y no especializadas se deben automatizar. Identificar y automatizar estas partes es una de las labores de los ingenieros informáticos

Un programa de 100k líneas de código no es 10 veces más complicado que uno de 10k. Requiere habilidades distintas

Escribir un programa corto y sencillo no requiere ingeniería

Marco Cynefin para la toma de decisiones en entornos potencialmente complejos

Desarrollo de software

Complejo: impredecible, requiere aprendizaje, creatividad, innovación y comunicación

Complicado: buenas prácticas, expertos

Caótico: crisis, hay que actuar ya

Simple: causas y efectos obvias, soluciones conocidas una vez establecido el problema

El desarrollo de cualquier software no trivial está en el dominio complicado o complejo

La ingeniería del software es necesaria para trabajar en estos niveles de complejidad

¿Para quién es?

Quieres desarrollar software profesionalmente

Puede que hasta sepas qué tipo de aplicaciones quieres hacer

Crees que la teoría debe guiar a la práctica

Quieres innovar o trabajar en I+D

Sabes que solo podrás hacer algo realmente grande trabajando en equipo

¿Para quién es?

Esto no es un equipo de trabajo...
...ni aunque tu seas el del látigo :-)

¿Para quién no es?

No quieres desarrollar software

Prefieres no trabajar en equipo

Prefieres los problemas perfectamente especificados y delimitados

Prefieres los problemas cuyas soluciones son bien conocidas

¿Qué tal es la profesión?

Tercer mejor trabajo (sobre 200) del año 2013 en USA
http://www.careercast.com/jobs-rated/best-worst-jobs-2013

¿Qué harás?

Verificación y Validación

Trabajarás con CatMDEdit: software libre de uso profesional con más de 10 años de trayectoria

Gestión de Proyectos Software

SharedSList: Listas de la compra compartidas para compañeros de piso
https://github.com/sharedslist/sharedslist

Laboratorio de Ingeniería del Software

Smart Campus: Información geolocalizada sobre los servicios de un campus universitario

¿Qué descubrirás?

Los proyectos de software ayer

Metodologías rígidas, prescriptivas y documento-céntricas

El miedo a la incertidumbre se afronta haciendo planes muy detallados que luego nunca se cumplen

Los desarrolladores son solo "recursos" fácilmente intercambiables

Arquitectos de torre de marfil

También llamados arquitectos de Power Point o arquitectos astronautas

¿Arquitecto astronauta?

No, este no es un arquitecto astronauta

Los proyectos de software ayer

Metodologías rígidas, prescriptivas y documento-céntricas

El miedo a la incertidumbre se afronta haciendo planes muy detallados que luego nunca se cumplen

Los desarrolladores son solo "recursos" fácilmente intercambiables

Arquitectos de torre de marfil

También llamados arquitectos de Power Point o arquitectos astronautas

Poca automatización de actividades repetitivas

Rigidez, poca capacidad de innovación y de adaptación

Los dinosaurios

Los proyectos de software hoy y mañana

Se acepta la incertidumbre: trabajo iterativo, prototipos, inspección y adaptación

Integración continua: control de versiones distribuido (git), build automático, tests automáticos

Despliegue continuo: posiblemente en la nube

Escalabilidad, flexibilidad, reacción rápida a las demandas de los usuarios

Equipos pequeños y multidisciplinares coordinados

Desarrolladores altamente cualificados

Ejemplo: equipos ágiles en Spotify

http://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/

¿Preguntas?


Especialidad de Ingeniería del Software

http://webdiis.unizar.es/~zarazaga/IngSoft/

F. Javier Zarazaga @jazarso

Rubén Béjar @rubejar