SlideShare una empresa de Scribd logo
1 de 10
Mob programming:
Refactorización de código legacy
Maikel González Baile
Software Engineer @Ontruck
@mgonzalezbaile
Luis Matesanz Barroso
CTO @Gstock
@sitocasla
#phpmadmobprogramming
¿Por qué no una charla al uso?
● Charlas teóricas pero poco debate en posibles implementaciones.
● Mob programming, live coding, kata ...
● Serie de workshops para intentar llegar desde una aplicación con código
legacy a una aplicación distribuida y escalable.
Code Review Marketplace
Hemos creado un Marketplace en el que un
usuario puede crear una Pull Request y solicitar
su revisión a cualquier revisor registrado en la
plataforma.
El sistema calculará la cuota que el creador de
la PR debe pagar para ver las revisiones.
Casos de uso:
● Crear Pull Request:
○ Código, Revisores, Fecha de Revisión
● Calcular cuota
○ #LOC, Fecha de Revisión, #Revisores
● Enviar notificación a revisores
● Cambiar el código de la Pull Request
Show me the code
Show me the code
1. No sigue principios SOLID:
a. SRP: Crear PR + Persistir + API en una
misma función.
b. OCP: “nueva regla de negocio, notificar al
creador del PR”. ¿Podemos extender el
código sin modificarlo?
c. ISP: N/A No hay interfaces
d. DIP: N/A Acoplamiento hacia clases
concretas, no abstracciones.
2. Testeo complicado, lógica en el controller
y pre-persist.
3. Legibilidad del código compleja:
a. Cálculo del quote en un subscriber
b. Creación de la PR en el Controller
c. Envío de notificaciones en la Entidad
4. Escalar la aplicación. Por ejemplo: “nueva
regla de negocio, tu primera PR es gratis”
Refactoring - Por dónde empezar?
TESTS!!!!
"A good architect maximizes the number
of decisions not made"
Uncle Bob - Clean Architecture
Retrospectiva
¿ Que mejoras has visto ?
¿ Es más fácil este dicho código ?
¿ Es más legible el código ?
Feedback:
https://es.surveymonkey.com/r/XJ92FPJ
¡Gracias!

Más contenido relacionado

Similar a Mob programming: Refactorización de código legacy

El rol de mediciones formales en proyectos de tecnología
El rol de mediciones formales en proyectos de tecnologíaEl rol de mediciones formales en proyectos de tecnología
El rol de mediciones formales en proyectos de tecnología
GeneXus Consulting
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
Darwin Durand
 
Ncpc art presentacion
Ncpc art presentacionNcpc art presentacion
Ncpc art presentacion
Camilo Moreno
 
B D D con Cucumber
B D D  con CucumberB D D  con Cucumber
B D D con Cucumber
Martin Trejo
 

Similar a Mob programming: Refactorización de código legacy (20)

Mulesoft Anypoint platform: Design Center
Mulesoft Anypoint platform: Design CenterMulesoft Anypoint platform: Design Center
Mulesoft Anypoint platform: Design Center
 
El rol de mediciones formales en proyectos de tecnología
El rol de mediciones formales en proyectos de tecnologíaEl rol de mediciones formales en proyectos de tecnología
El rol de mediciones formales en proyectos de tecnología
 
La importancia de las APIs en los chatbots
La importancia de las APIs en los chatbotsLa importancia de las APIs en los chatbots
La importancia de las APIs en los chatbots
 
Charla LogicApps en el CEUS
Charla LogicApps en el CEUSCharla LogicApps en el CEUS
Charla LogicApps en el CEUS
 
APIs Mercado Libre
APIs Mercado LibreAPIs Mercado Libre
APIs Mercado Libre
 
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOLCURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
CURSO DE PROGRAMACION AVANZADA EN JAVA EN ESPAÑOL
 
Cocomo II
Cocomo IICocomo II
Cocomo II
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Orquestando Procesos de Negocio de manera ágil con Bonita BPM (v1.0)
Orquestando Procesos de Negocio de manera ágil con Bonita BPM (v1.0)Orquestando Procesos de Negocio de manera ágil con Bonita BPM (v1.0)
Orquestando Procesos de Negocio de manera ágil con Bonita BPM (v1.0)
 
Ncpc art presentacion
Ncpc art presentacionNcpc art presentacion
Ncpc art presentacion
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
EasyDev
EasyDevEasyDev
EasyDev
 
Net conf ar v2018 start up
Net conf ar v2018 start upNet conf ar v2018 start up
Net conf ar v2018 start up
 
07 Microsoft
07 Microsoft07 Microsoft
07 Microsoft
 
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
¿Como asegurar el exito de una Migracion a Microsoft Dynamics NAV (Navision)?
 
Comparación de API y SOA
Comparación de API y SOAComparación de API y SOA
Comparación de API y SOA
 
WorkshopCamp México - BDD
WorkshopCamp México - BDDWorkshopCamp México - BDD
WorkshopCamp México - BDD
 
B D D con Cucumber
B D D  con CucumberB D D  con Cucumber
B D D con Cucumber
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 

Mob programming: Refactorización de código legacy

  • 1. Mob programming: Refactorización de código legacy Maikel González Baile Software Engineer @Ontruck @mgonzalezbaile Luis Matesanz Barroso CTO @Gstock @sitocasla #phpmadmobprogramming
  • 2. ¿Por qué no una charla al uso? ● Charlas teóricas pero poco debate en posibles implementaciones. ● Mob programming, live coding, kata ... ● Serie de workshops para intentar llegar desde una aplicación con código legacy a una aplicación distribuida y escalable.
  • 3. Code Review Marketplace Hemos creado un Marketplace en el que un usuario puede crear una Pull Request y solicitar su revisión a cualquier revisor registrado en la plataforma. El sistema calculará la cuota que el creador de la PR debe pagar para ver las revisiones. Casos de uso: ● Crear Pull Request: ○ Código, Revisores, Fecha de Revisión ● Calcular cuota ○ #LOC, Fecha de Revisión, #Revisores ● Enviar notificación a revisores ● Cambiar el código de la Pull Request
  • 4. Show me the code
  • 5. Show me the code 1. No sigue principios SOLID: a. SRP: Crear PR + Persistir + API en una misma función. b. OCP: “nueva regla de negocio, notificar al creador del PR”. ¿Podemos extender el código sin modificarlo? c. ISP: N/A No hay interfaces d. DIP: N/A Acoplamiento hacia clases concretas, no abstracciones. 2. Testeo complicado, lógica en el controller y pre-persist. 3. Legibilidad del código compleja: a. Cálculo del quote en un subscriber b. Creación de la PR en el Controller c. Envío de notificaciones en la Entidad 4. Escalar la aplicación. Por ejemplo: “nueva regla de negocio, tu primera PR es gratis”
  • 6. Refactoring - Por dónde empezar?
  • 8. "A good architect maximizes the number of decisions not made" Uncle Bob - Clean Architecture
  • 9. Retrospectiva ¿ Que mejoras has visto ? ¿ Es más fácil este dicho código ? ¿ Es más legible el código ? Feedback: https://es.surveymonkey.com/r/XJ92FPJ