SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Nuestro código habla,
¿Qué nos dice?
MADRID · NOV 18-19 · 2016
Modesto San Juan
@msanjuan
MADRID · NOV 18-19 · 2016
Contexto
Este podría ser tu próximo compañero
“Hay que tocar ese código de hace 6 meses”
Tu yo del futuro te lo agradecerá
¿Qué podemos hacer?
• Estructura
• API
• Código
• Tests
• Datos
• Monitorización
• Historia
Estructura
Estructura
Estructura
Estructura
Estructura
Estructura
Tu API es una puerta a tu negocio
APIs
• Mínima sorpresa
• Códigos de retorno adecuados
• Verbos adecuados
• Tests
• Datos
• Monitorización
APIs: mínima sorpresa
/tasks/1/status /tasks/1/status /tasks/1/detail /tasks/1/errors
Código
Lenguaje del negocio
Arquitectura hexagonal*
Abstracciones correctas
Niveles de abstracción
Singleton
Tight Coupling
Untestability
Premature optimization
Indescriptible naming
Duplication
Single Responsibility
Open/Close
Liskov Substitution
Interface Segregation
Dependency Inversion
“Duplication is far
cheaper than the wrong
abstraction”
Sandy Metz
Falta de abstracciones: Primitivos voladores
Código
Tests
Deben hablar de funcionalidades
En el lenguaje del dominio
Legibles
Simples
VS
Datos
BBDD
Devops
Configuración
Parametrización
...
Una vez desplegado...
¿Monitorización?
Identificación de errores
Reproducción de errores
Toma de decisiones...
Proactivo vs Reactivo
¡Sin pasarse!
Historia
¿Dónde pongo el foco?
Silos de conocimiento
Acoplamientos inesperados
…
En resumen
Estructura
API
Código (incluyendo DevOps!)
Datos (BBDD, configuración,
parametrización)
Monitorización
Historia
Naming! Siempre Naming!
Gracias!

Más contenido relacionado

Destacado

Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016Luigi Dell'Aquila
 
Smau Bologna 2016 - Thomas Rechtsanwälte
Smau Bologna 2016  - Thomas RechtsanwälteSmau Bologna 2016  - Thomas Rechtsanwälte
Smau Bologna 2016 - Thomas RechtsanwälteSMAU
 
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016 Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016 Roberto Castaldo
 
Agriculture insurance in india
Agriculture insurance in indiaAgriculture insurance in india
Agriculture insurance in indiaDeepa Venkat
 
Smau Bologna 2016 - Aism
Smau Bologna 2016 - AismSmau Bologna 2016 - Aism
Smau Bologna 2016 - AismSMAU
 
Algal Harvesting in the Partitioned Aquaculture System
Algal Harvesting in the Partitioned Aquaculture SystemAlgal Harvesting in the Partitioned Aquaculture System
Algal Harvesting in the Partitioned Aquaculture SystemKatey Norvell
 
Chương trình hội nhập nhân viên mới
Chương trình hội nhập nhân viên mớiChương trình hội nhập nhân viên mới
Chương trình hội nhập nhân viên mớispk53
 

Destacado (9)

Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
Geospatial Graphs made easy with OrientDB - Codemotion Milan 2016
 
Smau Bologna 2016 - Thomas Rechtsanwälte
Smau Bologna 2016  - Thomas RechtsanwälteSmau Bologna 2016  - Thomas Rechtsanwälte
Smau Bologna 2016 - Thomas Rechtsanwälte
 
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016 Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016
Valorizzare e promuovere il territorio con la realtà virtuale - Smau 2016
 
Agriculture insurance in india
Agriculture insurance in indiaAgriculture insurance in india
Agriculture insurance in india
 
Smau Bologna 2016 - Aism
Smau Bologna 2016 - AismSmau Bologna 2016 - Aism
Smau Bologna 2016 - Aism
 
Algal Harvesting in the Partitioned Aquaculture System
Algal Harvesting in the Partitioned Aquaculture SystemAlgal Harvesting in the Partitioned Aquaculture System
Algal Harvesting in the Partitioned Aquaculture System
 
Digitalizzazione, Industria 4.0 ed Economia Circolare
Digitalizzazione, Industria 4.0 ed Economia CircolareDigitalizzazione, Industria 4.0 ed Economia Circolare
Digitalizzazione, Industria 4.0 ed Economia Circolare
 
Chương trình hội nhập nhân viên mới
Chương trình hội nhập nhân viên mớiChương trình hội nhập nhân viên mới
Chương trình hội nhập nhân viên mới
 
Prosperous
ProsperousProsperous
Prosperous
 

Similar a Nuestro código habla, ¿Qué nos dice? - Codemotion 2016

Jornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º EdiciónJornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º Ediciónfernando sonego
 
Experiencia con Xamarin en el mundo real de los proyectos.
Experiencia con Xamarin en el mundo real de los proyectos.Experiencia con Xamarin en el mundo real de los proyectos.
Experiencia con Xamarin en el mundo real de los proyectos.Elbrinner Fernandes
 
Python Dominicana 059: Django Migrations
Python Dominicana 059: Django MigrationsPython Dominicana 059: Django Migrations
Python Dominicana 059: Django MigrationsRafael Belliard
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoFinizens
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
vOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSvOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSfernando sonego
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadJose Antonio Jimenez Bisbe
 
Fundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmáticaFundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmáticaLeoWong91
 
Daniel rabinovich php conference
Daniel rabinovich   php conferenceDaniel rabinovich   php conference
Daniel rabinovich php conferenceDaniel Rabinovich
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.ielssalinas
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAlex Casquete
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.jsINSIGNIA4U
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareSoftware Guru
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorEnrique Catala Bañuls
 
Improving as a developer through code reviews
Improving as a developer through code reviewsImproving as a developer through code reviews
Improving as a developer through code reviewsAnallely Olivares
 

Similar a Nuestro código habla, ¿Qué nos dice? - Codemotion 2016 (20)

FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017FULLSTACK JS DEV in 2017
FULLSTACK JS DEV in 2017
 
Jornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º EdiciónJornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º Edición
 
Experiencia con Xamarin en el mundo real de los proyectos.
Experiencia con Xamarin en el mundo real de los proyectos.Experiencia con Xamarin en el mundo real de los proyectos.
Experiencia con Xamarin en el mundo real de los proyectos.
 
Python Dominicana 059: Django Migrations
Python Dominicana 059: Django MigrationsPython Dominicana 059: Django Migrations
Python Dominicana 059: Django Migrations
 
Los reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológicoLos reinos de finizens - Nuestro stark tecnológico
Los reinos de finizens - Nuestro stark tecnológico
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
vOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRSvOpenvOpenUy: El misterioso CQRS
vOpenvOpenUy: El misterioso CQRS
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Estimación temprana de proyectos software #pmot #pmlat @iprocuratio
Estimación temprana de proyectos software #pmot #pmlat @iprocuratioEstimación temprana de proyectos software #pmot #pmlat @iprocuratio
Estimación temprana de proyectos software #pmot #pmlat @iprocuratio
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Fundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmáticaFundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmática
 
Daniel rabinovich php conference
Daniel rabinovich   php conferenceDaniel rabinovich   php conference
Daniel rabinovich php conference
 
Semana xiii.i
 Semana xiii.i Semana xiii.i
Semana xiii.i
 
Aplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a AspectosAplicaciones robustas con Programación Orientada a Aspectos
Aplicaciones robustas con Programación Orientada a Aspectos
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidor
 
Improving as a developer through code reviews
Improving as a developer through code reviewsImproving as a developer through code reviews
Improving as a developer through code reviews
 

Nuestro código habla, ¿Qué nos dice? - Codemotion 2016