Aprender DDD de forma práctica?

PlayingDead

Hola,

Me estoy dando cuenta de que para mi trayectoria profesional es fundamental aprender DDD, al menos como web backend con Laravel lo piden bastante, imagino que con otras tecnologías de back será igual.

La cuestión es que todo lo que veo de DDD son implementaciones diferentes, gente que discute acerca de los conceptos, proyectos en los que se hace de diferente manera...

Y leer el libro original creo que es un tostón importante, por eso busco alguna forma más amena y práctica de aprenderlo.

Experiencias respecto a esto?

Gracias! Un saludo.

[Como nota dejo que tengo nociones de arquitectura y patrones de diseño. He leído libros como Clean Architecture de Robert C Martin y Head First Design Patterns]

NoRfOlk

Mírate los cursos de CodelyTV, creo que tienen uno de DDD, Arquitectura hexagonal, CQRS que está bastante bien.

1 1 respuesta
PiradoIV

Si nada más que te quieres centrar en la "parte táctica" de DDD, Carlos Buenosvinos tiene por ahí algún repositorio en PHP y libro que te pueden ayudar.

Para la "parte estratégica", te va a tocar leerte uno de los libros "tostón". Distilled, el verde, es el menos tostón y más práctico que será el que te pueda interesar a ti.

En la práctica, es muy raro encontrarte empresas que hagan DDD, porque involucra a toda la empresa. En general, las empresas simplemente utilizan pequeñas partes de la "parte táctica", como las que comenta #2, para hacer entrevistas y poco más.

2
MTX_Anubis

DDD basicamente se divide en dos partes: Estratégico y Táctico.

El táctico que es del que hablas ni es DDD ni nada, son simples buenas prácitcas de OOP pero todo el mundo le ha dado bola a eso porque el blue book le dedica medio libro porque en su momento era necesario (2003, todo el software que se hacía era basura donde los modelos no representaban nada del negocio que implementaban, basicamente eran contenedores de datos). También porque es un libro técnico y nos gusta hablar de arquitecturas, tecnologías y demás mierdas en vez de resolver problemas reales de negocio.

DDD va de hablar con expertos de dominio, consagrar un lenguaje ubicuo para que todo el mundo hable el mismo idioma, definir bien los bounded context, sus límites y relaciones entre ellos, y hacer explícito todo ese negocio en el código. Lo que hablas son formas de implementar lo dicho anteriormente pero sin un buen trabajo previo no te va a servir de nada.

Por eso lo que ves son formas diferentes de implementarlo.

Y todas las empresas que dicen que hacen DDD no lo hacen

7 1 respuesta
PiradoIV

Creo recordar que Erics Evans dijo que, si pudiera volver atrás en el tiempo, eliminaría toda la parte táctica del libro azul xD

En cualquier caso, vamos, está bien leer y aprender estas cosas, sin glorificarlas. Incluso siendo imposible de implementar en la mayoría de empresas, puede ser útil en alguna entrevista.

1 respuesta
MTX_Anubis

#5 Creo que lo que dijo es que la reduciría y pondría al final xD

Para mi se centra demasiado en cómo modelar casos concretos pero como digo hay que poner el libro en contexto, es del 2003. A mi no me parece mal, da algunos patrones majos y pautas como separar dominio de negocio de detalles de infra y app (que a estas alturas todo el mundo debería conocer, salvo quizá el de agreagados).

Pero si que eché en falta mucho más contenido sobre el estratégio (y sigue faltando mucho hoy día en general). Sí que entiendo que es algo más multidisciplinar y complejo de hacerlo bien porque va a varia en cada caso, al final quieres sistematizar un negocio y eso es algo muy complejo y cualquiera que haya leído sobre sistemas (incluso algo más ligero como Thinking in systems) y abierto algo los ojos lo sabe.

1 1 respuesta
PiradoIV

#6 Yep, totalmente. Hay que leérselo, extraer todo lo que te pueda aportar y poco más. Ni idea de por qué se ha glorificado tanto, supongo que será por la cantidad de cursos y artículos de blog que puedes hacer con eso.

Personalmente me habrá aportado un 10% de lo que me han aportado otros libros, como The Pragmatic Programmer o Designing Data-Intensive Applications.

1
NoRfOlk
#4MTX_Anubis:

Y todas las empresas que dicen que hacen DDD no lo hacen

Real como la vida misma. Y así con la mayoría de cosas xD.

1 respuesta
Konishi

Ya que se está hablando del tema, yo tenía pensando leerme el libro de DDD porque me encuentro bastante flojo en diseño y arquitectura. ¿Me recomendaríais otra cosa más práctica para "software de cárnicas"?

1 respuesta
PiPePiTo

#8 A mi siempre me han gustado las que te preguntan SOLID a saco en la entrevista y te encuentras el monolitazo cuando preguntas.

1
MTX_Anubis

#9 En el Blue Book no vas a encontrar nada de arquitectura. Vas a encontrar ciertas prácticas de cómo diseñar tus modelos.

En el Red Book (Implementing DDD) tampoco, vas a ver esbozos de cómo diseñar una aplicación y aquí tienes los ejemplos:

https://github.com/VaughnVernon/IDDD_Samples

Además algunas cosas son bastante discutibles y cuestionables.

En el Green Book (Distilled DDD) es basicamente un resumen de lo que es DDD y consejos prácticos a la hora de diseñar y gestionar un proyecto hecho en DDD.

Vamos que ninguno te va hablar de temas de arquitectura ni system design

Usuarios habituales

  • MTX_Anubis
  • PiPePiTo
  • Konishi
  • NoRfOlk
  • PiradoIV
  • PlayingDead