46
Simplicidad para desarrolladores

Scbnc17 simplicidad para_desarrolladores

Embed Size (px)

Citation preview

Page 1: Scbnc17 simplicidad para_desarrolladores

Simplicidad para desarrolladores

Page 2: Scbnc17 simplicidad para_desarrolladores
Page 3: Scbnc17 simplicidad para_desarrolladores

chema comenzó un nuevo producto

Era sencillo, claro y requeria pocas funcionalidades... y por tanto poco código.

Page 4: Scbnc17 simplicidad para_desarrolladores

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…

Page 5: Scbnc17 simplicidad para_desarrolladores

Foco en lo visible

Page 6: Scbnc17 simplicidad para_desarrolladores

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...

Page 7: Scbnc17 simplicidad para_desarrolladores

Dolor, DOLOR, CAOS, ANSIEDAD, Frustración.

Page 8: Scbnc17 simplicidad para_desarrolladores

Hold the door,HOld th door,Hold t door,Hol t door,Hol door,

hodor!!!

Page 9: Scbnc17 simplicidad para_desarrolladores

Lucha por la simplicidad O la

complejidad ganará y vivirás el

infierno

Page 10: Scbnc17 simplicidad para_desarrolladores

Buenas!Eduardo Ferro AldamaZen Developer / Chamán@eferro

Page 11: Scbnc17 simplicidad para_desarrolladores

SACACORCHOS

Page 12: Scbnc17 simplicidad para_desarrolladores

Centrarnos en el futuro

¿Qué hace complicado el código?

Conocimiento progresivo

Page 13: Scbnc17 simplicidad para_desarrolladores

No somos adivinos

Abraza el cambio

Abraza la incertidumbre

Page 14: Scbnc17 simplicidad para_desarrolladores

¿Qué hace complicado el código?

Intentar hacerlo RE-USABLE

Page 15: Scbnc17 simplicidad para_desarrolladores

“Keep reusability for libraries, not for

services”@ufried

Page 16: Scbnc17 simplicidad para_desarrolladores

Porno Tecnológico

¿Qué hace complicado el código?

CvDrivenDevelopment

Page 17: Scbnc17 simplicidad para_desarrolladores

Somos profesionales ¿No?

Page 18: Scbnc17 simplicidad para_desarrolladores

0.¿Cómo HACERLO simple?

Page 19: Scbnc17 simplicidad para_desarrolladores

¿Cómo hacerlo simple?

Poca complejidad

Soluciones simples

Eliminando complejidad de forma continua

Page 20: Scbnc17 simplicidad para_desarrolladores

Aproximaciones sucesivas

Page 21: Scbnc17 simplicidad para_desarrolladores

Suficientemente bueno× TIENE TESTS× Se entiende× Es pequeño

× Producción (a por feedback)

Page 22: Scbnc17 simplicidad para_desarrolladores

¿Cuando lo vuelvo a cambiar?

Page 23: Scbnc17 simplicidad para_desarrolladores

1.Código simple

Page 24: Scbnc17 simplicidad para_desarrolladores

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

Page 25: Scbnc17 simplicidad para_desarrolladores

4 rules of simple design

1. Passes the tests2. Reveals intention3. No duplication4. Fewest elements

Martin Fowler

Page 26: Scbnc17 simplicidad para_desarrolladores

TDD cycle

Red Green Refactor

Page 27: Scbnc17 simplicidad para_desarrolladores
Page 28: Scbnc17 simplicidad para_desarrolladores

“Software is messy because it reflects our evolving understanding

of the problem as we wrote it”

SArah MEi

Page 29: Scbnc17 simplicidad para_desarrolladores

2.arquitectura simple

Page 30: Scbnc17 simplicidad para_desarrolladores

Arquitectura Adaptable

Page 31: Scbnc17 simplicidad para_desarrolladores

Arquitectura EvolutivaCrecimiento orgánico

Page 32: Scbnc17 simplicidad para_desarrolladores

Muchas herramientas y soluciones

Page 33: Scbnc17 simplicidad para_desarrolladores

Refactor continuo

Page 34: Scbnc17 simplicidad para_desarrolladores

LA constante es el cambio

Page 35: Scbnc17 simplicidad para_desarrolladores

Supervivencia no garantizada

Page 36: Scbnc17 simplicidad para_desarrolladores
Page 37: Scbnc17 simplicidad para_desarrolladores

Identificar puntos de fallo de un

sistema

Chaos engineeringVS

Ejemplo

Page 38: Scbnc17 simplicidad para_desarrolladores

Mantener estado/Conf

servidores

Servidores InmutablesVS

Ejemplo

Page 39: Scbnc17 simplicidad para_desarrolladores

Calcular cambios de estado

Almacenar eventos VS

Ejemplo

Page 40: Scbnc17 simplicidad para_desarrolladores

Supervisión: resolver fallos

parciales

Supervisión: Reiniciar a estado

conocidoVS

Ejemplo

Page 41: Scbnc17 simplicidad para_desarrolladores

Calcular trabajo pendiente y

rendimiento

Moving average rendimiento actualVS

Ejemplo

Page 42: Scbnc17 simplicidad para_desarrolladores

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.”

Page 43: Scbnc17 simplicidad para_desarrolladores

“Keep it simple, make it valuable, build it

piece by piece”

RON Jeffries

Page 44: Scbnc17 simplicidad para_desarrolladores
Page 46: Scbnc17 simplicidad para_desarrolladores

GRacias!!!@eferro & www.eferro.net