El documento habla sobre craftsmanship y Scrum. Antes que procesos o documentación extensiva, busca individuos, software funcionando y colaboración con el cliente. También enfatiza la importancia de la simplicidad, comunicación, realimentación, respeto y coraje para los desarrolladores ágiles.
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Scrum y craftsmanship
1. Craftsmanship y Scrum
Desarrolladores
ágiles, profesionales y
responsables.
Carlos Peix
carlos.peix@kleer.la - @carlospeix
2. Agenda
• Craftsmanship y Scrum
• Simplicidad, comunicación, realimentación, re
speto y coraje
• Condiciones de trabajo
• Estado de flow
• Mejorando habilidades
• Codificando ágilmente
• El camino hacia software craftsmanship
3. Craftsmanship y Scrum
Antes que procesos y herramientas
buscamos individuos e interacciones
y nos comportamos como profesionales
4. Craftsmanship y Scrum
Antes que documentación extensiva
preferimos software funcionando
y del cual estemos orgullosos
5. Craftsmanship y Scrum
Antes que negociación contractual
preferimos colaborar con el cliente
y buscamos alianzas productivas
7. Simplicidad
Con código simple mantenemos controlados los costos
de mantenimiento
TDD como camino a la simplicidad
Sin refactoring no hay código simple
Sin buenas pruebas no ha refactoring
Sin TDD no hay buenas pruebas
¿Qué otra manera propones para lograrlo?
8. Comunicación
Debemos mejorar nuestra comunicación
– Verbal - Precisión en el lenguaje
– Escrita - Riqueza, puntuación, eficiencia
– Visual - Facilitación y documentación gráfica
Si no nos entienden o nos entienden mal
¿Cómo lograremos comunicarnos?
9. Realimentación
Ningún profesional del desarrollo de software
puede permitirse el lujo de no validar
internamente y externamente su trabajo.
Queremos hacer lo que el cliente necesita, que
no siempre es lo que nos pide…
10. Respeto
Debemos romper el círculo vicioso del engaño
mutuo
Para romper ese círculo, debemos entender el
punto de vista del que paga
Antes que pedir respeto debemos
ganárnoslo, comportándonos como
profesionales
11. Coraje
Para decir “No”
Para aceptar errores
Para sostener nuestras estimaciones
Para tomar control de nuestro software
Para cambiar de entorno si no puedo cambiarlo
Nadie mejor que nosotros mismos para
defender nuestros intereses
13. Condiciones de trabajo
Ningún médico operaría a un paciente si el
anestesista o el quirófano no fuera confiable
Ningún notario permitiría una operación si no nos
pudiese identificar según las reglas
Como profesionales, debemos exigir condiciones
seguras de trabajo
(TDD, IC, pair programming, refactoring, entorno
apropiado, sin interrupciones, cliente
accesible, deploy automatizado, etc.)
14. Estado de “flow”
El estado de flow se logra por acciones
“secundarias”
Si estoy bloqueado o me distraigo fácilmente
Pair programming
Si quiero ir rápido y sostenido
Prolijo, ordenado, pequeños pasos
Si el trabajo parece demasiado
Entregas pequeñas y frecuentes (cadencia)
15. Mejorando habilidades
Duras
– Un lenguajes y paradigma nuevo cada año
– Participar en un proyecto open source
Blandas
– Entender explicando
– Aprender enseñando
– Presentar en eventos
– Participar en la comunidad
16. Codificando ágilmente
Simplicidad
Test Driven Development
La regla del boy scout
Cadencia de corto plazo (Pomodoro)
Principios de diseño e ingeniería
Programamos para el usuario/cliente
Optimizamos velocidad solo si se justifica
Mantener la calma en la crisis
Debugger driven development -> ¡FAIL!
Mal humor o desmotivación -> ¡FAIL!
Horas extra -> ¡FAIL!
Atajos del IDE o editor
Zona de flow
Pair programming
Arquitectura ágil
17. El camino hacia software craftsmanship
• Lenguajes y paradigmas
– Ruby, Io, Java, Scala, Prolog, Erlang, Clojure, etc.
• Herramientas
– Editores: Vim, Sublime, IDEs (aprender atajos)
– Git, Heroku, Travis
– VM con Linux (mucho mas fácil todo)
• Libros
– Clean Code
– The Clean Coder
– Pragmatic Programmer
18. El camino hacia software craftsmanship
• Herramientas
– TDD con JUnit, NUnit, RSpec, QUnit
– ATDD (Fitnesse, Cucumber, JBehave, SpecFlow)
• Tutoriales
– Koans sobre distintos lenguajes
– Git, Subversion, políticas de branching y commit
– Diseño con objetos (sigan a @HernanWilkinson)
– Principios SOLID
– Patrones de diseño (solo después de 5 años)
– Katas y Dojos, muchos, en diferentes entornos
19. El camino hacia software craftsmanship
• Videos
– TDD con James Shore, Robert Martin
– http://holatdd.com/
– Agile Planning de Mike Cohn
– http://www.cleancoders.com/
– ¡Comparte tus propios videos!
20. “The trouble with quick and dirty is that
dirty remains long after quick has been
forgotten.”
“El problema con rápido y feo es que lo feo
se mantiene mucho después de que nos
olvidamos que fué rápido.”
Steve McConnell
(Code Complete, Rapid Development, Software Estimation, etc)
21. “Make it run, make it right, make it fast.”
“Primero que funcione, luego que sea
limpio, por último que sea rápido.”
Lampson
http://c2.com/cgi/wiki?MakeItWorkMakeItRightMakeItFast
22. “Premature optimization is the root of all
evil.”
“La optimización prematura es la causa de
todos los males.”
Knuth
http://c2.com/cgi/wiki?PrematureOptimization
23. Referencias
• On line
– http://agilemanifesto.org/
– http://manifesto.softwarecraftsmanship.org/
• Libros
– Clean Code - 2009 - (Robert Martin)
– The Clean Code - 2011 - (Robert Martin)
– The Pragmatic Programmer - 1999 - (Andrew Hunt, David Thomas)
• Videos
– http://www.jamesshore.com/Blog/Lets-Play/Lets-Play-Test-Driven-
Development.html
– http://holatdd.com/
– http://www.cleancoders.com/