sábado, octubre 25, 2014

TDD/BDD práctico para aplicaciones con dominio rico / scbcn14


  • Contexto
    • Tipo de aplicaciones (No hacemos web :-) )
    • Deliveries (cli, http, amqp)
    • Sistema gestion info 20%
    • Sistema monitorización/control/scada 40%
    • Sistema orquestación/configuración 40%
  • Contexto Desarrollo
    • Bounded contexts
    • DDD / OO
    • No acoplamiento a framework
    • TDD
  • Pirámide testing
    • No testeamos vista (no suficiente ROI)
    • Tests unitarios (Muchos)
    • Tests contrato (1 por wrapper/librería)
    • Tests integración (Pocos) (sobre todo infraestructura)
    • Tests integración end2end (Muy pocos)
  • TDD Mockist
    • Casi siempre entrando por lógica de dominio
    • Tests unitarios con aislamiento por clase (1 por clase)
    • Conclusiones
      • Buena cobertura
      • Granularidad en caso de error muy buena (aunque a veces rompen en cascada)
      • Poco coste mental (una vez aprendido el proceso)
      • Coste alto mantenimiento / refactor (se genera fricción)


  • TDD por funcionalidad
    • Tests unitario con aislamiento por funcionalidad
    • Siempre Outside In, comenzando por lógica de negocio
    • Negocio puro y duro
    • Conclusiones
      • Terminología de negocio
      • Buena cobertura
      • Granularidad en caso de error buena
      • Coste de mantenimiento muy bajo
      • Se disfruta refactorizando :-)
      • Mucha menos tendencia a la MEGACONSTRUCCION
      • Valor de negocio mucho antes (Arbol en anchura vs profundidad)
      • Feedback mucho antes
    • Dificultades
      • Necesitas arquitectura hexagonal o similar
      • Cuesta identificar puertos
      • Requiere algo más de poder mental (se pueden usar mocks como andamiaje).
  • Actualmente
    • TDD por funcionalidad (sin duda)
    • Para nosotros buen ROI
  • Flujo funcionalidad (green field)
    • Análisis
    • Identificación de puertos
    • Dobles para puertos
    • TDD funcionalidad
    • Adaptadores (Repositorios, Servicios SNMP, etc…)
      • Tests de contrato (wrappers librerías infraestructura)
      • TDD con dobles para los wrappers de librerías
  • Flujo funcionalidad (brown field)
    • Análisis / donde impacta
    • for each desired change, make the change easy (warning: this may be hard), then make the easy change (Kent Beck)
    • TDD funcionalidad usando dobles para puertos
    • Adaptadores (Repositorios, Servicios SNMP, etc…) (Si hay nuevos)
      • Tests de contrato (wrappers librerías infraestructura)
      • TDD con dobles para los wrappers de librería
  • Show me the Tests
  • Numeros
    • 660 tests unitarios clase 1s
    • 180 tests unitarios funcionalidad 0.6s
    • 180 Tests integracion 14s
      • 50 Aprox de contrato

viernes, octubre 24, 2014

Podcasts/Talks 2014 16-24 Oct

These are the most interesting talks I saw these last days:
  • Towards an Evolutionary ArchitectureVenkat Subramaniam. Good advise about how to delay decision and maintain the options open. Don't resolve problems that you don't have and of course make decision based on knowledge.
  • CQRS/DDDGreg Young. Very interesting talk about CQRS and Event Source with a very good introduction about Bounded Contexts, Ubiquitous Language and DDD economics.

sábado, octubre 18, 2014

Software Craftsmanship Barcelona 2014 / Charla TDD/BDD práctico para aplicaciones con dominio rico


Este fin de semana que viene (25 y 26 Octubre) tengo el placer de poder ir al Software Craftsmanship Barcelona 2014 para poder compartir mi pasión por el desarrollo del software con otros profesionales del gremio.

El evento está creado por y para profesionales que comparten los valores y principios de la artesanía del software por lo que el ambiente de aprendizaje creo que va a ser inmejorable.

Nestor Salceda, Guillermo Pascual y yo (eferro) aportaremos nuestro granito de arena presentando la charla TDD/BDD práctico para aplicaciones con dominio rico.

En la charla mostraremos el flujo de desarrollo que usamos (TDD/BDD) y la evolución que hemos tenido desde un TDD mockists a un TDD más clásico y orientado a la funcionalidad.
Vamos a intentar que la presentación no dure más de media hora para que nos de tiempo a discutir esta forma de trabajar con el resto de artesanos.

Esta presentación es una evolución de la presentación que realizamos en el AOS 2014 de Valladolid.

Nos vemos en el Software Craftsmanship Barcelona.

miércoles, octubre 15, 2014

Podcasts/Talks 2014 1-15 Oct


The interesting talks I've seen are:

Until the past week I don't know Fred George ideas about software development and his talks have impressed me a lot (although I have ethical restrictions on some of the business that he describe). So I decide to see all the presentations I could find.

All the presentations have some interesting tips and ideas...

domingo, octubre 12, 2014

Review. The Lean Mindset:Ask the Right Questions



Great book that explains using real examples, the lean thinking applied to product development, software mainly, but not only.

It has substantially changed my way of dealing with software projects. It has helped me to focus more on the objectives / intrinsic problems to solve, relegating the normal flow of creating software continuously without really asking myself "why".

I recommend this book to anyone in product development (not only software), especially to all  passionate developers that sometimes forget "why" we develop software.
“What’s next is to stop thinking about software development as a delivery process and to start thinking of it as a problem-solving process, a creative process.”

And remember:
“There is nothing quite so useless as doing with great efficiency something that should not be done at all.”

Passionate developer, Read it now!!!

https://www.goodreads.com/review/edit/18635263
http://www.amazon.com/The-Lean-Mindset-Right-Questions/dp/0321896904

Thanks @pasku1 for the recommendation...

miércoles, octubre 08, 2014

Taller y charlas seleccionadas para la PyConES 2014 Zaragoza



Ya se han seleccionado las charlas para la PyConES 2014 (Zaragoza). De las que habíamos presentado, finalmente han seleccionado las siguientes:


Podéis ver la descripción de todas las charlas en http://2014.es.pycon.org/talks

Para el caso del taller, el objetivo es poder crear una aplicación en la que el negocio sea el centro y que la arquitectura emerja del propio proceso de creación. Se trabajara en parejas y usaremos TDD para la creación. Por supuesto se requiere que los asistentes se lleven un portátil con un python + virtualenv instalado.


Nos vemos en Zaragoza !!!!