y Artesanía del Software - ARCO...

Post on 26-Apr-2020

11 views 0 download

Transcript of y Artesanía del Software - ARCO...

11

Profesionalidad y

Artesanía del Software

David.Villa@uclm.es – @david_vi11a

22

Juguemos a «verdad o atrevimiento»

33

«Cualquiera puede escribir código»

VERDAD ATREVIMIENTO

44

VERDAD ATREVIMIENTO

«Cualquiera puede escribir código»

55

«Cualquiera puede usar un bisturí»

ATREVIMIENTOVERDAD

66

«Cualquiera puede usar un bisturí»

VERDAD ATREVIMIENTO

77

«Cualquiera puede extirparun tumor cerebral»

VERDAD ATREVIMIENTO

88

ATREVIMIENTOVERDAD

«Cualquiera puede extirparun tumor cerebral»

99

«Cualquiera puedeprogramar

un sistema de vuelo para misiles de crucero»

VERDAD ATREVIMIENTO

1010

«Cualquiera puedeprogramar

un sistema de vuelo para misiles de crucero»

VERDAD ATREVIMIENTO

1111

«Cualquiera puedeprogramar

un driver de dispositivo»

VERDAD ATREVIMIENTO

1212

«Cualquiera puedeprogramar

un ray-tracer»

VERDAD ATREVIMIENTO

1313

VERDAD ATREVIMIENTO

«Cualquiera puedeprogramar

un codec de compresión de vídeo»

1414

«Cualquiera puedeprogramar

un SO para móviles»

VERDAD ATREVIMIENTO

1515

«Cualquiera puedeprogramar

un sistema de captura de movimiento»

VERDAD ATREVIMIENTO

1616

«Cualquiera puedeprogramar

una base de datos distribuida»

VERDAD ATREVIMIENTO

1717

«Cualquiera puedeprogramar

un videojuego multiplayer multiplataforma»

VERDAD ATREVIMIENTO

1818

Vale, vale, ya lo pillo. Para programar «ciertas cosillas»

necesitamos ingenierosmuy cualificados.

1919

Pero...¿En qué se parece un cirujano

a un ingeniero informático?

2020

Ambos son «artesanos»

Pero...¿En qué se parece un cirujano

a un ingeniero informático?

2121

¿Artesanos?

2222

¿Artesanos?

Sí, artesanos

2323

¿En qué se parecen el trabajodel cirujano y el del ingeniero?

● Deben conocer las técnicas y decidir cuál es la más adecuada en cada caso.

● Deben conocer las herramientas.● Deben tener mucha experiencia.● Cada operación es distinta a las demás.● Deben tomar decisiones sobre muchos pequeños

detalles que afectan decisivamente al resultado.● La satisfacción del cliente es lo más importante.● satisfacción != exigencias.

2424

Y ¿qué tiene todo eso que ver con el arte?

2525

Nada ¿por?

Y ¿qué tiene todo eso que ver con el arte?

2626

Estoy confuso¿Qué es artesanía?

toda técnica creativa, para producir individualmente bienes y servicios.

2727

En la factoría del Ferrari 599 GTB, cada motor es montado a mano por un ingeniero mecánico.

Es uno de los trabajos que requiere mayor cualificación y mejor pagados de la industria.

http://www.streetfire.net/video/ultimate-factories-ferrari_713772.htm

2828

¿Y las empresas de softwaretambién saben esto?

2929

Sí bueno, algunas, igual te suenan...

¿Y las empresas de softwaretambién saben esto?

3030

Google:

http://www.google.ie/intl/en/jobs/dublin/engops/engmng/engineering-manager-director-google-com-eu-headquarters/index.html

¿Y las empresas de softwaretambién saben esto?

3131

Google:

http://www.google.ie/intl/en/jobs/dublin/engops/engmng/software-development-lead-eu-headquarters/index.html

¿Y las empresas de softwaretambién saben esto?

3232

Google:

http://www.google.ie/intl/en/jobs/dublin/engops/engmng/software-development-manager-eu-headquarters/index.html

¿Y las empresas de softwaretambién saben esto?

3333

Facebook:

http://www.facebook.com/careers/department.php?dept=engineering&req=a2KA0000000LpMKMA0

¿Y las empresas de softwaretambién saben esto?

3434

Facebook:

http://www.facebook.com/careers/department.php?dept=engineering&req=a2KA0000000LjWfMAK

¿Y las empresas de softwaretambién saben esto?

3535

● https://careers.microsoft.com/search.aspx

● https://twitter.com/jobs/engineering

● http://www.atlassian.com/company/careers/jobs

● http://www.tuenti.com/jobs/department/?department_id=1

● http://codicesoftware-es.blogspot.com/2011/09/test-hacker-plastic-scm.html

¿Y las empresas de softwaretambién saben esto?

3636

Un ingeniero altamente cualificado que tiene:● Los conocimientos● La práctica

¿Qué es unartesano del software?(software craftmanship)

3737

Un ingeniero altamente cualificado que tiene:● Los conocimientos: principios, patrones,

buenas prácticas, técnicas y heurísticas.● La práctica

¿Qué es unartesano del software?(software craftmanship)

3838

Un ingeniero altamente cualificado que tiene:● Los conocimientos: principios, patrones,

buenas prácticas, técnicas y heurísticas.● La práctica: ha cometido muchos errores, y

ha aprendido de ellos.

¿Qué es unartesano del software?(software craftmanship)

3939

El artesano de softwareescribe

código limpio● Fácil de entender, evidente.● Expresa la intención del autor.● Hace una única cosa.● No hay duplicación.● Utiliza terminología del dominio. Un DSL a la

medida del problema.● Está probado, mediante pruebas automáticas.

4040

El artesano de softwareescribe

código limpio● El código se escribe para las personas. Al

compilador le vale todo.● No es código perfecto. Eso no existe.

4141

¿Por qué «molestarse»en escribir código limpio?

4242

Por que el software es un negocio y el código sucio lleva a la quiebra.

¿Por qué «molestarse»en escribir código limpio?

4343

tiempo

prod

uct iv

idad

La catastróficas consecuencias de la

«deuda técnica»

4444

¿Por qué escribimos código sucio?

● Programadores poco cualificados.● «No hay tiempo para hacerlo bien».● Quick & Dirty y el «tente mientras cobro».● Falta de profesionalidad.

4545

… y el efecto «ventana rota»

4646

¿Por qué fallan las metodologías tradicionales?

• El proyecto trata de cumplir la especificación inicial para entregar un producto terminado.

• Cada día el objetivo del equipo y el del cliente están más alejados.

• El mantenimiento repara errores y añade funcionalidad.o Puede implicar hasta un 90% del coste y esfuerzo total.o ¿Qué tiene de «terminado» si está casi todo por hacer?

• «desarrollo» y «mantenimiento» son términos mercantiles (conceptos que cobrar), no de ingeniería.

4747

Probemos otra cosa:Desarrollo ágil

• Hagamos al cliente partícipe del proyecto.• Si el cliente cambia los requisitos, no es una

«contingencia»:● Eso es lo normal, lo raro es que no ocurra.● Prepárate para el cambio.

• No importa si está o no acabado.• El objetivo es entregar valor al cliente, lo antes

posible y lo más a menudo posible.• La aplicación seguirá cambiando y adaptándose

mientras se siga usando.

4848

Manifiesto ágilEstamos descubriendo mejores formas de desarrollar software

tanto por nuestra propia experiencia como ayudando a terceros. A través de este trabajo hemos aprendido a valorar:

• Individuos e interacciones sobre procesos y herramientas• Software funcionando sobre documentación extensiva• Colaboración con el cliente sobre negociación contractual• Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha, valoramos más los de la izquierda.

4949

Manifiesto ágil

Kent BeckMike Beedle

Arie van BennekumAlistair Cockburn

Ward CunninghamMartin Fowler

James GrenningJim HighsmithAndrew HuntRon Jeffries

Jon KernBrian Marick

Robert C. MartinSteve Mellor

Ken SchwaberJeff SutherlandDave ThomasKen SchwaberJeff SutherlandDave Thomas

5050

• Es una actitud más que un aptitud.

• Ser honesto y crítico con el trabajo propio y ajeno.

• Airear los trapos sucios (y lavarlos).

• Hacer los cosas lo mejor que podamos.

• Mejorarlas cuando aprendamos a hacerlo mejor.

Agilismo

5151

No hay magia:

• Adquiere conocimientos● lee, escucha, aprende.

• Practica● practica, practica, practica.

¿Qué hago para ser ágil?

5252

Hay técnicas muy útiles:

• Las pruebas primero

• Desarrollo dirigido por pruebas (TDD)

• Pair programming

• Scrum

• Kanban

¿Qué hago para ser ágil?

5353

Pero ¿qué leo?

5454

Pero ¿qué leo?

5555

Algo en castellano, por favor :-/

5656

Y ¿con qué práctico?

• http://contest.tuenti.net/

• http://12meses12katas.com/

• http://holatdd.com/

• https://sites.google.com/site/agileciudadreal

5757

¿Preguntas?

5858

http://creativecommons.org/licenses/by/3.0/

https://bitbucket.org/DavidVilla/charla.artesania-del-software

Por favor, no imprimas esta presentación.