y Artesanía del Software - ARCO...
Transcript of y Artesanía del Software - ARCO...
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.