SlideShare una empresa de Scribd logo
1 de 49
Fernando Escolar
Pablo Bouzada
Coding Kihon: mejora tus
técnicas de programación
BARCELONA DEVELOPERS CONFERENCE 2012
6 dic – 7 dic – 8 dic
www.pasiona.com
info@pasiona.com
(+34) 669 333 333
@pasiona            Barcelona                 Bilbao                      Madrid           Londres
                    Pujades 350, 10ª planta   Gran Vía 19-21, 2ª planta   Pinar 5,         1 Northumberland Avenue
                    08019 · Barcelona         48008 · Bilbao              28006 · Madrid   London · WC2N 5BW
Qué es



Microsoft                                 Innovación                                      Pasión
socio 100% alineado                       ligada a la mejora continua y basada            somos grandes entusiastas de todo
partner 100% especializado                en las nuevas oportunidades tecnológicas        aquello que creamos y vemos crecer


Desarrollo                                Tecnología                                      Experiencia
capacidad para realizar proyectos de      soluciones a cada una de las necesidades        o la garantía de la habilidad derivada
ámbito tecnológico con un fin de mejora   empresariales que se platean en cada ámbito     de años de vivencias y observación


Especialización                           Conocimiento                                    Valores humanos
ofrecemos soluciones a medida con         adquirido a través de la realización de         guía de lo que hacemos y pretendemos
las mejores herramientas tecnológicas     proyectos, formación e innovación tecnológica   que nos enseña y nos conduce día a día
Servicios
Consultoría   Proyectos    Auditoría




              Servicios profesionales    Social      Formación
                                         Media



                                        Innovación    Azure
Pablo Bouzada
   @pbousan
pbouzada@pasiona.compbousan@techdencias.net
    Fernando Escolar
       @fernandoescolar
    fescolar@pasiona.com fernandoescolar@techdencias.net

         Quique Martínez
            @quiqu3
         qmartinez@pasiona.com quiqu3@techdencias.net
@techdencias

@pasiona




    #BCD12
Agenda
¿Qué es un coding dojo?
Pair Programming
TDD
SOLID
Algunos trucos
¿Qué es un coding dojo?
Las katas son pequeños ejercicios que nos
ayudan a aprender.
Dave Thomas – The pragmatic programmer
Pair Programming
Test Driven Development
SOLID
 Single responsibility
 Open-closed
 Liskov substitution
 Interface segregation
 Dependency inversion
 KISS
 DRY
 YAGNI
 …
 ¡¡Sentido común!!
Algunos trucos
cuidado con los comentarios
métodos o clases
demasiado largas
clases con muchos
atributos

métodos con muchos
parámetros
verbo + sujeto = peligro
nombres iguales
diferentes significados
métodos que no llaman el
     propio objeto
ocultar métodos heredados
Kata FizzBuzz
Existe un juego que se practica en Estados Unidos a la hora de beber unas copas con los amigos. Consiste en que cada
uno vaya diciendo un número secuencial en orden. Pero con unas normas especiales. Las premisas son simples:
    Si un número es divisible entre 3 se dice “Fizz”
    Si un número es divisible entre 5 se dice “Buzz”
    Si es divisible entre 3 y entre 5 decimos “FizzBuzz”



Queremos desarrollar un software que sepa jugar a este juego. Y para este fin sacamos una serie de especificaciones:

Especificaciones unitarios para pruebas:
    Devuelvo el número que me toca: Cuando te paso 1, 2, 4, 13, 50, 72 devuelve el mismo número.
    Múltiplos de 3: Cuando te paso 3, 12, 39, 78 digo “Fizz”
    Múltiplos de 5: Cuando te paso 5, 10, 50,75, 95 digo “Buzz”
    Múltiplos de 3 y 5: Cuando te paso 15, 30, 60, 90 devuelvo “FizzBuzz”.
this page has been left blank intentionally
Pablo Bouzada
   @pbousan
pbouzada@pasiona.compbousan@techdencias.net
    Fernando Escolar
       @fernandoescolar
    fescolar@pasiona.com fernandoescolar@techdencias.net

         Quique Martínez
            @quiqu3
         qmartinez@pasiona.com quiqu3@techdencias.net
@techdencias

@pasiona




    #BCD1
    2
Los zombis están de moda…
@pbousan                            Q&A
pbouzada@pasiona.compbousan@techdencias.net
    Fernando Escolar
       @fernandoescolar
    fescolar@pasiona.com fernandoescolar@techdencias.net

         Quique Martínez
            @quiqu3
         qmartinez@pasiona.com quiqu3@techdencias.net
BARCELONA DEVELOPERS CONFERENCE 2012
                        |   6 dic – 7 dic – 8 dic

Más contenido relacionado

Destacado

Ocean view
Ocean viewOcean view
Ocean viewkrylonky
 
Relación entre la guerra fría y la historia
Relación entre la guerra fría y  la historiaRelación entre la guerra fría y  la historia
Relación entre la guerra fría y la historiaSebas Cortes
 
Escuela politécnica
Escuela politécnicaEscuela politécnica
Escuela politécnicaOchaetaJoc
 
Domenica i cow boy a diano raduno "amici del cavallo"
Domenica i cow boy a diano   raduno "amici del cavallo"Domenica i cow boy a diano   raduno "amici del cavallo"
Domenica i cow boy a diano raduno "amici del cavallo"LiForYou
 
Colegio de bachilleres palntel 8
Colegio de bachilleres palntel 8Colegio de bachilleres palntel 8
Colegio de bachilleres palntel 8llaverito16
 
Comunicación y tecnología educativa
Comunicación y tecnología educativaComunicación y tecnología educativa
Comunicación y tecnología educativaMojgan Hashemi
 
2do parcial mencia david
2do parcial mencia david2do parcial mencia david
2do parcial mencia davidDavidMencia
 
11 Surprising Health Benefits of Sleep
11 Surprising Health Benefits of Sleep11 Surprising Health Benefits of Sleep
11 Surprising Health Benefits of SleepConsumer Health Digest
 
Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Alex Espinoza
 

Destacado (20)

Ocean view
Ocean viewOcean view
Ocean view
 
SOLID para CatDotNet
SOLID   para CatDotNetSOLID   para CatDotNet
SOLID para CatDotNet
 
Relación entre la guerra fría y la historia
Relación entre la guerra fría y  la historiaRelación entre la guerra fría y  la historia
Relación entre la guerra fría y la historia
 
El ayuno
El ayunoEl ayuno
El ayuno
 
Katy simbaña
Katy simbañaKaty simbaña
Katy simbaña
 
Escuela politécnica
Escuela politécnicaEscuela politécnica
Escuela politécnica
 
Psicología inversa
Psicología inversaPsicología inversa
Psicología inversa
 
Domenica i cow boy a diano raduno "amici del cavallo"
Domenica i cow boy a diano   raduno "amici del cavallo"Domenica i cow boy a diano   raduno "amici del cavallo"
Domenica i cow boy a diano raduno "amici del cavallo"
 
Consejo
ConsejoConsejo
Consejo
 
Colegio de bachilleres palntel 8
Colegio de bachilleres palntel 8Colegio de bachilleres palntel 8
Colegio de bachilleres palntel 8
 
Consejo
ConsejoConsejo
Consejo
 
Comunicación y tecnología educativa
Comunicación y tecnología educativaComunicación y tecnología educativa
Comunicación y tecnología educativa
 
Tecnología Educativa
Tecnología EducativaTecnología Educativa
Tecnología Educativa
 
2do parcial mencia david
2do parcial mencia david2do parcial mencia david
2do parcial mencia david
 
11 Surprising Health Benefits of Sleep
11 Surprising Health Benefits of Sleep11 Surprising Health Benefits of Sleep
11 Surprising Health Benefits of Sleep
 
Katy simbaña
Katy simbañaKaty simbaña
Katy simbaña
 
Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.Registro en una página web para la renta de vehículos hecho en java.
Registro en una página web para la renta de vehículos hecho en java.
 
Medio ambiente
Medio ambienteMedio ambiente
Medio ambiente
 
Parte II
Parte IIParte II
Parte II
 
Feliz Nawruz
Feliz NawruzFeliz Nawruz
Feliz Nawruz
 

Similar a Coding kihon + Zombie Code Survival Guide

TypeScript, ¿la solución definitiva?
TypeScript, ¿la solución definitiva?TypeScript, ¿la solución definitiva?
TypeScript, ¿la solución definitiva?Pablo Bouzada
 
KnockoutJs at We Love Js event
KnockoutJs at We Love Js eventKnockoutJs at We Love Js event
KnockoutJs at We Love Js eventMarc Rubiño
 
Aplicaciones moviles nativas con Xamarin
Aplicaciones moviles nativas con XamarinAplicaciones moviles nativas con Xamarin
Aplicaciones moviles nativas con XamarinMarc Rubiño
 
SPA ASP.NET MVC & AngularJS codemotion 2013
SPA ASP.NET MVC & AngularJS  codemotion 2013SPA ASP.NET MVC & AngularJS  codemotion 2013
SPA ASP.NET MVC & AngularJS codemotion 2013Marc Rubiño
 
BcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMSBcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMSEdin Kapic
 
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdf
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdfDIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdf
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdfEduardoLara533622
 
Àlex de Anta "Estratègia online" #FIBOReus
Àlex de Anta "Estratègia online" #FIBOReusÀlex de Anta "Estratègia online" #FIBOReus
Àlex de Anta "Estratègia online" #FIBOReusfiraReus
 
d2i Digital Innovation Institute Panama 2014
d2i Digital Innovation Institute Panama 2014d2i Digital Innovation Institute Panama 2014
d2i Digital Innovation Institute Panama 2014d2i institute panama
 
D2I Institute Panama Programacion 2015 Q1
D2I Institute Panama Programacion 2015 Q1D2I Institute Panama Programacion 2015 Q1
D2I Institute Panama Programacion 2015 Q1d2i institute panama
 
Mvp cluster - Línea de movilidad
Mvp cluster - Línea de movilidadMvp cluster - Línea de movilidad
Mvp cluster - Línea de movilidadMVP CLUSTER
 
Tegnologia y sociedad corte 1 by sergio
Tegnologia y sociedad corte 1 by sergioTegnologia y sociedad corte 1 by sergio
Tegnologia y sociedad corte 1 by sergioandres24752
 
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...Zyncro
 
Presentación Pixel Studios
Presentación Pixel StudiosPresentación Pixel Studios
Presentación Pixel StudiosSantiago Núñez
 
Deloffalon Raúl Casañas
Deloffalon Raúl CasañasDeloffalon Raúl Casañas
Deloffalon Raúl CasañasRaúl Casañas
 
Presentacion 5ol
Presentacion 5olPresentacion 5ol
Presentacion 5olCinco Oele
 

Similar a Coding kihon + Zombie Code Survival Guide (20)

TypeScript, ¿la solución definitiva?
TypeScript, ¿la solución definitiva?TypeScript, ¿la solución definitiva?
TypeScript, ¿la solución definitiva?
 
Level up your skills
Level up your skillsLevel up your skills
Level up your skills
 
We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)We Love Js 6 - Knockout js (with Marc Rubiño)
We Love Js 6 - Knockout js (with Marc Rubiño)
 
KnockoutJs at We Love Js event
KnockoutJs at We Love Js eventKnockoutJs at We Love Js event
KnockoutJs at We Love Js event
 
Aplicaciones moviles nativas con Xamarin
Aplicaciones moviles nativas con XamarinAplicaciones moviles nativas con Xamarin
Aplicaciones moviles nativas con Xamarin
 
SPA ASP.NET MVC & AngularJS codemotion 2013
SPA ASP.NET MVC & AngularJS  codemotion 2013SPA ASP.NET MVC & AngularJS  codemotion 2013
SPA ASP.NET MVC & AngularJS codemotion 2013
 
BcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMSBcnDevCon12 - Una vuelta por Orchard CMS
BcnDevCon12 - Una vuelta por Orchard CMS
 
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdf
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdfDIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdf
DIPLOMADO EN TRANSFORMACION DIGITAL EMPRESARIAL.pdf
 
Àlex de Anta "Estratègia online" #FIBOReus
Àlex de Anta "Estratègia online" #FIBOReusÀlex de Anta "Estratègia online" #FIBOReus
Àlex de Anta "Estratègia online" #FIBOReus
 
d2i Digital Innovation Institute Panama 2014
d2i Digital Innovation Institute Panama 2014d2i Digital Innovation Institute Panama 2014
d2i Digital Innovation Institute Panama 2014
 
D2I Institute Panama Programacion 2015 Q1
D2I Institute Panama Programacion 2015 Q1D2I Institute Panama Programacion 2015 Q1
D2I Institute Panama Programacion 2015 Q1
 
Mvp cluster - Línea de movilidad
Mvp cluster - Línea de movilidadMvp cluster - Línea de movilidad
Mvp cluster - Línea de movilidad
 
Tegnologia y sociedad corte 1 by sergio
Tegnologia y sociedad corte 1 by sergioTegnologia y sociedad corte 1 by sergio
Tegnologia y sociedad corte 1 by sergio
 
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...
Webinar: Todo lo que siempre quisiste saber sobre Redes Sociales Corporativas...
 
Presentación Pixel Studios
Presentación Pixel StudiosPresentación Pixel Studios
Presentación Pixel Studios
 
Campus party
Campus partyCampus party
Campus party
 
Campus party
Campus partyCampus party
Campus party
 
Deloffalon Raúl Casañas
Deloffalon Raúl CasañasDeloffalon Raúl Casañas
Deloffalon Raúl Casañas
 
MediaNet Software
MediaNet SoftwareMediaNet Software
MediaNet Software
 
Presentacion 5ol
Presentacion 5olPresentacion 5ol
Presentacion 5ol
 

Más de Fernando Escolar Martínez-Berganza

Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Fernando Escolar Martínez-Berganza
 

Más de Fernando Escolar Martínez-Berganza (20)

Por qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta malPor qué todo lo que subo a azure esta mal
Por qué todo lo que subo a azure esta mal
 
Deconstrucción de SOLID
Deconstrucción de SOLIDDeconstrucción de SOLID
Deconstrucción de SOLID
 
Gapand - por qué odio git?
Gapand - por qué odio git?Gapand - por qué odio git?
Gapand - por qué odio git?
 
Betabeers - continuous deployment
Betabeers - continuous deploymentBetabeers - continuous deployment
Betabeers - continuous deployment
 
Devops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscaleDevops RoadShow: load testing and autoscale
Devops RoadShow: load testing and autoscale
 
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
Roslyn: Hello from the other compiler - dotNet Spain Conference 2016
 
Reconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTSReconnect 2015 - ALM VSTS
Reconnect 2015 - ALM VSTS
 
Codemotion 2015 - Unit Testing
Codemotion 2015 - Unit TestingCodemotion 2015 - Unit Testing
Codemotion 2015 - Unit Testing
 
Unit testing en Windows 10
Unit testing en Windows 10Unit testing en Windows 10
Unit testing en Windows 10
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 
Redis: no solo una caché
Redis: no solo una cachéRedis: no solo una caché
Redis: no solo una caché
 
DotNet Conference: code smells
DotNet Conference: code smellsDotNet Conference: code smells
DotNet Conference: code smells
 
Foro de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondoForo de Arquitectos: caché en azure a fondo
Foro de Arquitectos: caché en azure a fondo
 
Codemotion: descubriendo las cachés
Codemotion: descubriendo las cachésCodemotion: descubriendo las cachés
Codemotion: descubriendo las cachés
 
Unit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugsUnit tesing y el mito de los 0 bugs
Unit tesing y el mito de los 0 bugs
 
Mobile services by @quiqu3
Mobile services by @quiqu3Mobile services by @quiqu3
Mobile services by @quiqu3
 
Javascript no es vietnam
Javascript no es vietnamJavascript no es vietnam
Javascript no es vietnam
 
Where is my beer?
Where is my beer?Where is my beer?
Where is my beer?
 
Introducción a TDD
Introducción a TDDIntroducción a TDD
Introducción a TDD
 
Tests de carga en la nube
Tests de carga en la nubeTests de carga en la nube
Tests de carga en la nube
 

Último

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 

Último (10)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 

Coding kihon + Zombie Code Survival Guide

  • 1. Fernando Escolar Pablo Bouzada Coding Kihon: mejora tus técnicas de programación BARCELONA DEVELOPERS CONFERENCE 2012 6 dic – 7 dic – 8 dic
  • 2. www.pasiona.com info@pasiona.com (+34) 669 333 333 @pasiona Barcelona Bilbao Madrid Londres Pujades 350, 10ª planta Gran Vía 19-21, 2ª planta Pinar 5, 1 Northumberland Avenue 08019 · Barcelona 48008 · Bilbao 28006 · Madrid London · WC2N 5BW
  • 3. Qué es Microsoft Innovación Pasión socio 100% alineado ligada a la mejora continua y basada somos grandes entusiastas de todo partner 100% especializado en las nuevas oportunidades tecnológicas aquello que creamos y vemos crecer Desarrollo Tecnología Experiencia capacidad para realizar proyectos de soluciones a cada una de las necesidades o la garantía de la habilidad derivada ámbito tecnológico con un fin de mejora empresariales que se platean en cada ámbito de años de vivencias y observación Especialización Conocimiento Valores humanos ofrecemos soluciones a medida con adquirido a través de la realización de guía de lo que hacemos y pretendemos las mejores herramientas tecnológicas proyectos, formación e innovación tecnológica que nos enseña y nos conduce día a día
  • 4. Servicios Consultoría Proyectos Auditoría Servicios profesionales Social Formación Media Innovación Azure
  • 5.
  • 6. Pablo Bouzada @pbousan pbouzada@pasiona.compbousan@techdencias.net Fernando Escolar @fernandoescolar fescolar@pasiona.com fernandoescolar@techdencias.net Quique Martínez @quiqu3 qmartinez@pasiona.com quiqu3@techdencias.net
  • 8. Agenda ¿Qué es un coding dojo? Pair Programming TDD SOLID Algunos trucos
  • 9. ¿Qué es un coding dojo?
  • 10. Las katas son pequeños ejercicios que nos ayudan a aprender. Dave Thomas – The pragmatic programmer
  • 13.
  • 14. SOLID
  • 15.  Single responsibility  Open-closed  Liskov substitution  Interface segregation  Dependency inversion
  • 16.  KISS  DRY  YAGNI  …  ¡¡Sentido común!!
  • 18. cuidado con los comentarios
  • 20. clases con muchos atributos métodos con muchos parámetros
  • 21. verbo + sujeto = peligro
  • 23. métodos que no llaman el propio objeto
  • 25. Kata FizzBuzz Existe un juego que se practica en Estados Unidos a la hora de beber unas copas con los amigos. Consiste en que cada uno vaya diciendo un número secuencial en orden. Pero con unas normas especiales. Las premisas son simples: Si un número es divisible entre 3 se dice “Fizz” Si un número es divisible entre 5 se dice “Buzz” Si es divisible entre 3 y entre 5 decimos “FizzBuzz” Queremos desarrollar un software que sepa jugar a este juego. Y para este fin sacamos una serie de especificaciones: Especificaciones unitarios para pruebas: Devuelvo el número que me toca: Cuando te paso 1, 2, 4, 13, 50, 72 devuelve el mismo número. Múltiplos de 3: Cuando te paso 3, 12, 39, 78 digo “Fizz” Múltiplos de 5: Cuando te paso 5, 10, 50,75, 95 digo “Buzz” Múltiplos de 3 y 5: Cuando te paso 15, 30, 60, 90 devuelvo “FizzBuzz”.
  • 26.
  • 27.
  • 28. this page has been left blank intentionally
  • 29. Pablo Bouzada @pbousan pbouzada@pasiona.compbousan@techdencias.net Fernando Escolar @fernandoescolar fescolar@pasiona.com fernandoescolar@techdencias.net Quique Martínez @quiqu3 qmartinez@pasiona.com quiqu3@techdencias.net
  • 31. Los zombis están de moda…
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48. @pbousan Q&A pbouzada@pasiona.compbousan@techdencias.net Fernando Escolar @fernandoescolar fescolar@pasiona.com fernandoescolar@techdencias.net Quique Martínez @quiqu3 qmartinez@pasiona.com quiqu3@techdencias.net
  • 49. BARCELONA DEVELOPERS CONFERENCE 2012 | 6 dic – 7 dic – 8 dic

Notas del editor

  1. El libro del que hemos sacado el título para esta charla, Apocalipsis Z de un escritor nacional, la serie TheWalkingDead, multitud de juegos como Plants vs Zombies, y, como no, Sálvame, el programa que más ha hecho por consumir los cerebros de los televidentes de este país...
  2. Ahora os preguntaréis, ¿a qué viene todo? Bueno, no es más ni menos que una metáfora. Personalmente me gusta hablar de las cosas técnicas usando metáforas, porque se entienden mejor y porque así puedo decir cosas malas sin que nadie se ofenda, porque no os voy a engañar, de lo que voy a hablar es sobre ... código de mierda que te encuentras por ahí. Pero queda mucho más molón referiste a eso como código heredado, deuda técnica o código zombi.Aquí va la metáfora:  El software esalgo vivo, como una persona, y si se infecta con el virus Z, va a degenerase y se convierte en zombie: camina, emite sonidos, realiza acciones básicas, pero ha dejado de ser algo vivo. El problema es que este código zombi no se pudre y se acaba descomponiendo, como le ocurriría a un cuerpo de un ser vivo. Sino que sigue vivo, no vivo no,... muerto, bueno, tampoco... sigue no-muerto (eso) mientras encuentre cerebros frescos de los que alimentarse. El casos es que esos cerebros frescos suelen ser los de los desarrolladores de un equipo de software, y sinceramente, si a un programador le quitas el cerebro, sólo te quedan un par de manos que teclean muy rápido y usan atajos de teclado para todo [Risas]
  3. Veamos un ejemplo de código zombi, este es muy significativo por lo mal hecho que está, y lo peor de todo es que ni siquiera hacía lo que se esperaba de él.Qué pasa cuando llegamos a este punto, que tanto el código como parte del equipo se han convertido en zombis??Entonces podemos decir que estamos en Zombieland!!
  4. Para el que no lo sepa, Zombieland es una peli que va sobre zombis, en la que salen, WoddyHarrelson, el que hace de Mark Zukemberg, la niña de Little Miss Sunshine y ... una tía con motosierra, que está buena, pero no sé quien es. Posiblemente es la mejor peli de zombis de la historia, al menos de las mejores que he visto… de las 2Y para qué os cuento esto, pues porque voy a aprovechar que en la peli se habla sobre las reglas para sobrevivir en zombieland, y eso es lo que vamos a hacer, vamos a presentar las reglas para acabar con el código zombie...
  5. La calidad debe ser un valor que se aplique a todos los niveles. Debe formar parte de la manera "normal" de hacer del equipo.
  6. SOLID – Patrones de diseño – TDD¿Cómo se detecta el código zombie? CodeSmell
  7. Que hayamos limpiado de código zombi nuestra pequeña parcela no quiere decir que el día de mañana no nos caiga encima una tras otra oleadas y oleadas de zombis con ganas de comerse nuestro cerebro.Es necesario acabar con el problema de raíz, a veces es por la desidia de uno o varios programadores, otras porque los clientes piden requisitos imposibles y no tenemos a nadie que les pare los pies, puede ser porque el equipo esté poco formado… sea cual sea el caso, esto provoca frustración y la frustración lleva al desanimo y el desanimo, a la ira, la ira al odio y el odio al código oscuro…
  8. No podía faltar una referencia a StarWarsEl tema es que hay que conseguir encontrar esas malas prácticas que se están repitiendo en el proyecto y acabar con ellas. Son los conocidos antipatrones, y para mencionar unos cuantos: Código espagueti, programación copy/paste, programación por permutación, el martillo de oro, …Cuando queráis os puedo dar otra charla sobre esto…
  9. No podía faltar una referencia a StarWarsEl tema es que hay que conseguir encontrar esas malas prácticas que se están repitiendo en el proyecto y acabar con ellas. Son los conocidos antipatrones, y para mencionar unos cuantos: Código espagueti, programación copy/paste, programación por permutación, el martillo de oro, …Cuando queráis os puedo dar otra charla sobre esto…
  10. Codereviews constantes, no para buscar los fallos de otros sino para aprender los unos de los otros. Para esto es imprescindible tener un espíritu crítico, primero con uno mismo y con su trabajo, y saber aceptar las críticas constructivas de los demás.Mejora continua: no sólo la formación, sino de los procesos. Cualquier proceso que sea largo y tedioso se dejará siempre para el final y será muy propicio a los errores. Hay que evitar esto, y lo podemos hacer con integración continua, despliegues continuos, … Mantener al equipo motivadoEn definitiva, hay que evitar la frustración.