Skip to content

Instantly share code, notes, and snippets.

@yujikiriki
Created June 12, 2015 12:54
Show Gist options
  • Save yujikiriki/d3d948a69b1fd032c87e to your computer and use it in GitHub Desktop.
Save yujikiriki/d3d948a69b1fd032c87e to your computer and use it in GitHub Desktop.
modelar sistemas Julián

Don Julián!

Me quedé sorprendido por las respuestas que le dieron a su pregunta de cómo enseñarle a nuevos devs a modelar un sistema.

Me horrorizó ver respuestas que hablaban que DDDesign es demasiado, o que FP y DDDesign no van; o peor aún, que sospechan que ágil y DDDesign no pueden ir juntas.

Hace unos años escribí sobre el concepto de la simpatía semántica, un copy/paste de la Simpatía Mecánica de Thompson. Considero que ese debería ser ppal mensaje que me hubiera gustado que me enseñaran cuando arranqué a trabajar "profesionalmente".

Si ese concepto es claro, no debería importar si ud usa UML o no, si usa cajitas y rayitas para definir mapas semánticos o lo que quiera. Parafraseando a Fowler, lo importante de UML es comunicar. En este caso, comunicar la abstracción del mundo real que luego convertirá en código fuente.

Si esta noción es fácil de entender, DDDesign entra derechito, particularmente para diseñar arquitectura: bounded context, relación entre dominios, entre otras categorías del diseño estratégico. De ahí a dedicidir qué tecnologías y cómo soportar los diferentes atributos de calidad del dominio de su problema es un ejercicio mecánico y trivial.

En mi caso, para arrancar proyectos uso varias actividades "ágiles": SWOT, impact mapping, event storming, diseño de dominio, escritura de user stories, user story mapping, persona, buy a feature, y más; todo depende de la complejidad del producto. Todas esas actividades me toman 2 semanas. Luego me tomo 3 días en describir con el equipo la arquitectura de lo que alcanzamos a entender. La siguiente semana, posterior a la aprobación del cliente, iniciamos el ciclo de ceremonias de Scrum (sólo si la madurez del equipo lo requiere).

Ahí con Event Storming y con diseño del dominio combinamos "ágil" y DDDesign. Fácil, rápido y valioso pues nos ayuda a tomar las decisiones de arquitectura de manera más acertada.

Luego, con base en el dominio definido y el plan establecido, nos vamos a hackear código en FP. Ahí combinamos "ágil", DDDesign, TDD y FP.

No se si finalmente respondí su pregunta jajajaja, pero espero que estas líneas le sean de utilidad.

Un abrazo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment