Simplicidad para desarrolladores
chema comenzó un nuevo producto
Era sencillo, claro y requeria pocas funcionalidades... y por tanto poco código.
El producto crecía A buen ritmo
Nuevas funcionalidades, algunas muy valoradas y otras no tanto. Al mismo tiempo la complejidad del sistema crecía de forma sospechosamente NO lineal…
Foco en lo visible
chema comenzó a sentir el agobio
Más complejidad, más dificultad, mucha carga mental… nuevas funcionalidades, incorporar más gente, modificar cosas, era un DOLOR...
Dolor, DOLOR, CAOS, ANSIEDAD, Frustración.
Hold the door,HOld th door,Hold t door,Hol t door,Hol door,
hodor!!!
Lucha por la simplicidad O la
complejidad ganará y vivirás el
infierno
Buenas!Eduardo Ferro AldamaZen Developer / Chamán@eferro
SACACORCHOS
Centrarnos en el futuro
¿Qué hace complicado el código?
Conocimiento progresivo
No somos adivinos
Abraza el cambio
Abraza la incertidumbre
¿Qué hace complicado el código?
Intentar hacerlo RE-USABLE
“Keep reusability for libraries, not for
services”@ufried
Porno Tecnológico
¿Qué hace complicado el código?
CvDrivenDevelopment
Somos profesionales ¿No?
0.¿Cómo HACERLO simple?
¿Cómo hacerlo simple?
Poca complejidad
Soluciones simples
Eliminando complejidad de forma continua
Aproximaciones sucesivas
Suficientemente bueno× TIENE TESTS× Se entiende× Es pequeño
× Producción (a por feedback)
¿Cuando lo vuelvo a cambiar?
1.Código simple
4 rules of simple design1. Runs all the tests
2. Has no duplicated logic3. States every intention important to the
programmer4. Has the fewest possible classes and methods
Kent Beck
4 rules of simple design
1. Passes the tests2. Reveals intention3. No duplication4. Fewest elements
Martin Fowler
TDD cycle
Red Green Refactor
“Software is messy because it reflects our evolving understanding
of the problem as we wrote it”
SArah MEi
2.arquitectura simple
Arquitectura Adaptable
Arquitectura EvolutivaCrecimiento orgánico
Muchas herramientas y soluciones
Refactor continuo
LA constante es el cambio
Supervivencia no garantizada
Identificar puntos de fallo de un
sistema
Chaos engineeringVS
Ejemplo
Mantener estado/Conf
servidores
Servidores InmutablesVS
Ejemplo
Calcular cambios de estado
Almacenar eventos VS
Ejemplo
Supervisión: resolver fallos
parciales
Supervisión: Reiniciar a estado
conocidoVS
Ejemplo
Calcular trabajo pendiente y
rendimiento
Moving average rendimiento actualVS
Ejemplo
Edsger W. Dijkstra
“Simplicity is a great virtue but it requires hard work to achieve it and education to appreciate it. And to make matters worse: complexity sells better.”
“Keep it simple, make it valuable, build it
piece by piece”
RON Jeffries
● Simple made easy● 8 lines of code ● Postponer (CAS16) ● PosTponer: libro de recetas (SCPNA17)● Art of destroying software● Embracing Uncertainty ● Nature of software development ● Understading the 4 rules of simple design
GRacias!!!@eferro & www.eferro.net