SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
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 Aldama
Zen 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 design
1. Runs all the tests
2. Has no duplicated logic
3. States every intention important to the
programmer
4. Has the fewest possible classes and methods
Kent Beck
4 rules of simple design
1. Passes the tests
2. Reveals intention
3. No duplication
4. 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 Evolutiva
Crecimiento 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
eventosVS
Ejemplo
Supervisión:
resolver fallos
parciales
Supervisión:
Reiniciar a estado
conocido
VS
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

Más contenido relacionado

Más de Eduardo Ferro Aldama

CODE ContinuousDelivery. germinando una cultura agile moderna
CODE  ContinuousDelivery. germinando una cultura agile modernaCODE  ContinuousDelivery. germinando una cultura agile moderna
CODE ContinuousDelivery. germinando una cultura agile modernaEduardo Ferro Aldama
 
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?Eduardo Ferro Aldama
 
Acelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega ContinuaAcelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega ContinuaEduardo Ferro Aldama
 
SCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetasSCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetasEduardo Ferro Aldama
 
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisionesCAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisionesEduardo Ferro Aldama
 
Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)Eduardo Ferro Aldama
 
Python Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonPython Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonEduardo Ferro Aldama
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iEduardo Ferro Aldama
 

Más de Eduardo Ferro Aldama (12)

CODE ContinuousDelivery. germinando una cultura agile moderna
CODE  ContinuousDelivery. germinando una cultura agile modernaCODE  ContinuousDelivery. germinando una cultura agile moderna
CODE ContinuousDelivery. germinando una cultura agile moderna
 
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
CAS2017 Agilidad. Hacia la entrega continua ¿Qué te lo impide?
 
Acelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega ContinuaAcelerando la cultura DevOps mediante Entrega Continua
Acelerando la cultura DevOps mediante Entrega Continua
 
SCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetasSCPNA2017 El arte del patadon pa'lante / libro de recetas
SCPNA2017 El arte del patadon pa'lante / libro de recetas
 
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisionesCAS2016 El Arte del patadon pa'lante / Posponer decisiones
CAS2016 El Arte del patadon pa'lante / Posponer decisiones
 
Golang design4concurrency
Golang design4concurrencyGolang design4concurrency
Golang design4concurrency
 
Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)Python Herencia vs Composición (Luke soy tu padre)
Python Herencia vs Composición (Luke soy tu padre)
 
Tdd bdd-practico-dominio-rico
Tdd bdd-practico-dominio-ricoTdd bdd-practico-dominio-rico
Tdd bdd-practico-dominio-rico
 
Python SOLID
Python SOLIDPython SOLID
Python SOLID
 
Mejor framework-pythonoo-solid
Mejor framework-pythonoo-solidMejor framework-pythonoo-solid
Mejor framework-pythonoo-solid
 
Python Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones PythonPython Madrid empaquetamiento deb aplicaciones Python
Python Madrid empaquetamiento deb aplicaciones Python
 
Madrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_iMadrid devops empaquetamientodeb_i
Madrid devops empaquetamientodeb_i
 

Scbnc17 simplicidad para_desarrolladores