Modellare un dominio applicativo può essere decisamente complesso; in questa sessione vedremo come Event Storming ed Event Sourcing permettono di prendere una idea, darle forma usando un rotolo di carta e dei post-it e tradurla in codice C# sfruttando BDD e Machine Specifications... alla velocità della luce.
Presentazione a 4 mani di Alberto Brandolini e Andrea Balducci.
Every organisation pretends to be unique, but they mostly follow similar mechanics. Discover how your organisation too falls into common pitfalls and antipatterns and how you can leverage the situation to improve it.
Organisations and usually pretty bed when it comes to self diagnose their own problem and even worse when choosing a solution for the badly diagnosed problem.
Understanding the basic of complexity and system thinking can help a lot, providing foundations for a different mindset and a surprising solutions toolkit.
Is growth hacking bullshit matt lerner FODM 2016 - Revised & Expanded with ne...Matt Lerner
An updated version of my "Is Growth Hacking Bullshit" talk (originally given at Stanford Business School). This one has more history & examples, and emoji. I lead 500 Startups Distro Dojo London, this is the process we use with our companies.
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Alberto Brandolini
Il mio talk a Better Software 2013 riveduto e corretto. Dove parlo di Kanban, management, e del virus dell'esternalizzazione guidata dal mantra della "riduzione dei costi".
Too often we model processes around the myth of Database Transactions, ofter forgetting what a transaction really means in the real world. This talk shows an easy and cheap approach to use together with EventStorming in order to include User Experience into process modelling
Every organisation pretends to be unique, but they mostly follow similar mechanics. Discover how your organisation too falls into common pitfalls and antipatterns and how you can leverage the situation to improve it.
Organisations and usually pretty bed when it comes to self diagnose their own problem and even worse when choosing a solution for the badly diagnosed problem.
Understanding the basic of complexity and system thinking can help a lot, providing foundations for a different mindset and a surprising solutions toolkit.
Is growth hacking bullshit matt lerner FODM 2016 - Revised & Expanded with ne...Matt Lerner
An updated version of my "Is Growth Hacking Bullshit" talk (originally given at Stanford Business School). This one has more history & examples, and emoji. I lead 500 Startups Distro Dojo London, this is the process we use with our companies.
Kanban unbounded - Cosa succede sulla linea di faglia tra il team ed il resto...Alberto Brandolini
Il mio talk a Better Software 2013 riveduto e corretto. Dove parlo di Kanban, management, e del virus dell'esternalizzazione guidata dal mantra della "riduzione dei costi".
Too often we model processes around the myth of Database Transactions, ofter forgetting what a transaction really means in the real world. This talk shows an easy and cheap approach to use together with EventStorming in order to include User Experience into process modelling
Vs04 - DevOps: Continuous Deployment con Windows AzureAntonio Liccardi
Il termine DevOps è tra quelli più ricorrenti in questi ultimi anni. Con questo termine si identifica una metodologia di sviluppo che si basa sulla stretta collaborazione fra team di sviluppatori e di "IT operations" necessaria al fine di semplificare l'intero processo di realizzazione e messa in produzione di un software. In questa sessione vedremo come automatizzare i processi di deployment usando Visual Studio Online e Windows Azure.
http://www.communitydays.it/events/2015/vs04/
Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...Marco Parenzan
Windows Azure sta cambiando profondamente la nostra vita professionale portando le nostre risorse nel Cloud. Rinominando Team Foundation Services in Visual Studio Online, si è pronti a fare un passaggio ulteriore: portare parte dell'attività di sviluppo totalmente online. "Monaco" è un progetto ancora agli inizi, ma molto promettenti, per sviluppare progetti web completamente nel browser. Vediamo cosa possiamo farci, tra sviluppo , scelte tecnologiche, gestione del progetto e deployment.
Connettere le persone per raccontare un territorio | Todi Appy DaysOfficina Turistica
Dal corso Network for Tourism all'Associazione di Promozione Sociale Maremmans. Da hashtag a stile di vita. Un modello di rete tra operatori per la promozione del territorio. Presentazione in occasione di Todi Appy Days 27 settembre 2014. A cura di Robi Veltroni.
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesso in modo molto visuale e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
Cosa abbiamo scoperto in questi 20 anni? Che cercare di cambiare il mondo focalizzandoci su un singolo aspetto, il processo, il TDD, il clean code, non porta da nessuna parte. I veri cambiamenti avvengono quando scopriamo le reali interazioni tra le parti, quando lasciamo la specializzazione e cominciamo a vedere il vero quadro d'insieme.
In questo talk vedremo come scelte architetturali apparentemente innocue, finiscano per impattare il processo, ed in generale di come processi, pratiche, architetture, persone e scelte di business non possano essere considerate come elementi disaccoppiati tra loro.
Lessons learned on collaborative modeling: how EventStorming survived, and helped us survive the pandemic. And how it evolved to support new collaboration paradigms.
EventStorming was born as a massively in-person workshop to discover and model complex businesses and design event-driven software. But the old ways are no longer viable. After one year of experiments and discoveries in a forced-remote setting we know a lot more about what is still working and what is not.
What happens when you have the luxury of leading software projects without trade-offs and you're a Domain-Driven Design fanatic? You start stretching DDD concepts until it hurts and make experiments un uncharted territory.
In this talk, we'll see a few unconventional approached to Context Mapping and what happens when you fully embrace CQRS and Small Aggregates as a modeling paradigm.
Can software architecture affect the culture and emotions in the workplace? In this talk I look to some ways architectural choices shape collaboration and survivability in the workplace.
Software design as a cooperative game with EventStormingAlberto Brandolini
You got the stickies and the paper roll, and possibly already run a large Big Picture workshop to highlight where the problem is. Now you're in a room with business, software and UX experts hungry for a solution.
How do you make the magic happen?
In this talk, we'll explore some strategies about how to deliver with collaborative modeling, and how to narrow the gap between stickies and working code.
I've spent the last years modelling complex businesses and Software Architectures with EventStorming. The original recipe evolved a lot from the initial one. This is EventStorming state of the art.
Can we write successful enterprise software without challenging assumptions? Agile doesn't happen in a vacuum. Here's what I discovered using EventStorming as a blade to cut through business, software and organisation dysfunctions. From XP2017 Cologne.
Most software development processes are focused on tracking and delivery. Unfortunately, writing code is no longer the bottleneck. The real bottleneck is the team ability to learn about the domain complexity and do the right thing.
Scrivere software per il business si riduce essenzialmente a due problemi. Capire il vero problema da risolvere, e trovare soluzioni interessanti, senza trasformare la cosa in un percorso ad ostacoli.
Vs04 - DevOps: Continuous Deployment con Windows AzureAntonio Liccardi
Il termine DevOps è tra quelli più ricorrenti in questi ultimi anni. Con questo termine si identifica una metodologia di sviluppo che si basa sulla stretta collaborazione fra team di sviluppatori e di "IT operations" necessaria al fine di semplificare l'intero processo di realizzazione e messa in produzione di un software. In questa sessione vedremo come automatizzare i processi di deployment usando Visual Studio Online e Windows Azure.
http://www.communitydays.it/events/2015/vs04/
Sviluppare applicazioni web (completamente) on-line con Visual Studio Online ...Marco Parenzan
Windows Azure sta cambiando profondamente la nostra vita professionale portando le nostre risorse nel Cloud. Rinominando Team Foundation Services in Visual Studio Online, si è pronti a fare un passaggio ulteriore: portare parte dell'attività di sviluppo totalmente online. "Monaco" è un progetto ancora agli inizi, ma molto promettenti, per sviluppare progetti web completamente nel browser. Vediamo cosa possiamo farci, tra sviluppo , scelte tecnologiche, gestione del progetto e deployment.
Connettere le persone per raccontare un territorio | Todi Appy DaysOfficina Turistica
Dal corso Network for Tourism all'Associazione di Promozione Sociale Maremmans. Da hashtag a stile di vita. Un modello di rete tra operatori per la promozione del territorio. Presentazione in occasione di Todi Appy Days 27 settembre 2014. A cura di Robi Veltroni.
Si è tornato a parlare molto di Machine Learning negli ultimi anni. Grazie anche al fatto che è possibile oggi processare enormi moli di dati in tempi (relativamente) veloci questa parte dell'informatica sta vivendo una seconda giovinezza.
In questa sessione vedremo cos'è il machine learning, quali sono le diverse casistiche tecniche e funzionali in cui può essere usato ed inizieremo a "giocare" con i dati per vedere fin dove possiamo spingerci, usando strumenti On-Premise e quindi spostandoci poi sull'offerta Azure Machine Learning dove, una volta fatta propria la teoria, si possono realizzare soluzioni estremamente complesso in modo molto visuale e sfruttare la scalabilità di Azure per avere performance ottimali. Il tutto senza dimenticare che gli algoritmi così ottenuti possono essere facilmente integrati nelle nostre applicazioni semplicemente invocando un web service.
Cosa abbiamo scoperto in questi 20 anni? Che cercare di cambiare il mondo focalizzandoci su un singolo aspetto, il processo, il TDD, il clean code, non porta da nessuna parte. I veri cambiamenti avvengono quando scopriamo le reali interazioni tra le parti, quando lasciamo la specializzazione e cominciamo a vedere il vero quadro d'insieme.
In questo talk vedremo come scelte architetturali apparentemente innocue, finiscano per impattare il processo, ed in generale di come processi, pratiche, architetture, persone e scelte di business non possano essere considerate come elementi disaccoppiati tra loro.
Lessons learned on collaborative modeling: how EventStorming survived, and helped us survive the pandemic. And how it evolved to support new collaboration paradigms.
EventStorming was born as a massively in-person workshop to discover and model complex businesses and design event-driven software. But the old ways are no longer viable. After one year of experiments and discoveries in a forced-remote setting we know a lot more about what is still working and what is not.
What happens when you have the luxury of leading software projects without trade-offs and you're a Domain-Driven Design fanatic? You start stretching DDD concepts until it hurts and make experiments un uncharted territory.
In this talk, we'll see a few unconventional approached to Context Mapping and what happens when you fully embrace CQRS and Small Aggregates as a modeling paradigm.
Can software architecture affect the culture and emotions in the workplace? In this talk I look to some ways architectural choices shape collaboration and survivability in the workplace.
Software design as a cooperative game with EventStormingAlberto Brandolini
You got the stickies and the paper roll, and possibly already run a large Big Picture workshop to highlight where the problem is. Now you're in a room with business, software and UX experts hungry for a solution.
How do you make the magic happen?
In this talk, we'll explore some strategies about how to deliver with collaborative modeling, and how to narrow the gap between stickies and working code.
I've spent the last years modelling complex businesses and Software Architectures with EventStorming. The original recipe evolved a lot from the initial one. This is EventStorming state of the art.
Can we write successful enterprise software without challenging assumptions? Agile doesn't happen in a vacuum. Here's what I discovered using EventStorming as a blade to cut through business, software and organisation dysfunctions. From XP2017 Cologne.
Most software development processes are focused on tracking and delivery. Unfortunately, writing code is no longer the bottleneck. The real bottleneck is the team ability to learn about the domain complexity and do the right thing.
Scrivere software per il business si riduce essenzialmente a due problemi. Capire il vero problema da risolvere, e trovare soluzioni interessanti, senza trasformare la cosa in un percorso ad ostacoli.
Using EventStorming to drill into domain modelling complexity: from the big picture into the design of aggregates, processes and read models. A different approach to enterprise software modelling.
Software development is not one size fits all. Domain-Driven Design is significant where there's high complexity and high value. In these areas different tools might be needed. EventStorming is the best way I know to gather requirements in a complex environment, and also maps with CQRS/ES architecture perfectly.
There are some recurring themes in Domain-Driven Design applications, and distant domains show more similarities that differences, especially when you start taking into account peculiarities of specific Bounded Contexts. This is where a different type of design could happen.
Put the key stakeholders in the same room with an unlimited modelling surface, and some tricks, and you'll end up not only with a viable model, but also with skeleton for continuous improvement.
Slides of my Pecha Kucha short talk at #ALE14 in Krakow.
There's too much noise around software estimation, and one of the problem is that we try to use the same approach, when we're in practice estimating totally different things.
1. Idea
Idea —> Post-It —>
Test Verdi
Post-it
Test Verdi!
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Alberto Brandolini!
alberto.brandolini@avanscoperta.it
@ziobrando
http://ziobrando.blogspot.com
Andrea Balducci!
andrea.balducci@prxm.it
@andreabalducci
2. Idea —> Post-it —> Test
verdi
Alberto Brandolini!
alberto.brandolini@avanscoperta.it
@ziobrando
http://ziobrando.blogspot.com
Andrea Balducci!
andrea.balducci@prxm.it
@andreabalducci
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
5. About me
Certified DDD Trainer
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
6. About me
Certified DDD Trainer
Post-it addicted
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
7. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
8. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
Chaos summoner
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
9. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
Chaos summoner
Idea thief
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
10. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
Chaos summoner
Idea thief
Lean & Agile
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
11. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
Chaos summoner
Idea thief
Lean & Agile
Entrepreneur
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
12. About me
Certified DDD Trainer
Post-it addicted
Visual thinker
Chaos summoner
Idea thief
Lean & Agile
Entrepreneur
…never satisfied
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
@ziobrando
alberto.brandolini@avanscoperta.it
DDD-IT
XPUG - Romagna
avanscoperta
14. Costo delle modifiche
10
9
8
Dobbiamo riscrivere
Costo di modifica
7
6
Non si può fare
5
4
“manutenzione”
3
2
Label
Illusione del greenfield
1
0
0
1
2
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
3
4
5
Complessità
6
7
8
9
10
27. Ignorance is the single
greatest impediment
to throughput.
Dan North
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
http://dannorth.net/2010/08/30/introducing-deliberate-discovery/
28. Learning is the
constraint
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
http://dannorth.net/2010/08/30/introducing-deliberate-discovery/
Dan North
31. Piano d’azione
1. Cominciare con il piede giusto
2. Rimuovere gli ostacoli
all’apprendimento
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
32. Piano d’azione
1. Cominciare con il piede giusto
2. Rimuovere gli ostacoli
all’apprendimento
3. Iterare alla massima frequenza
possibile
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
34. Event Storming
•
Tutti in una stanza
•
Rotolone di carta —> “unlimited
modelling surface”
•
Partiamo dai domain events!
•
Raffiniamo il modello un passo alla volta
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
36. Tutti in una stanza?
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
37. Tutti in una stanza!
•
Risoluzione anticipata dei conflitti
•
Visualizzazione di un artifact
•
Possibilità di osservare l’aspetto umano
•
Alto livello di energia.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
38. Si, TUTTO lo spazio
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
47. Bounded Contexts
•
Lavorando con le persone emergono i
naturali confini tra
•
le porzioni del dominio —>
subdomains!
•
i modelli in essere —> Bounded
Contexts
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
48. Ubiquitous Language
•
la discussione ci ha portato ad una
precisione del linguaggio sempre
maggiore
•
Il linguaggio è consistente e preciso
all’interno di un Bounded Context
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
49. Aggregati ed Invarianti
•
aggregati = unità di consistenza.!
•
Gli aggregati vengono individuati sulla
base del comportamento del sistema
•
Le invarianti sono garantite dagli
aggregati.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
54. Read Model
•
Gli aggregati prendono decisioni sulla
base dello stato corrente.
•
Gli utenti prendono decisioni sulla base
di quello che vedono…
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
55. Vedo i dati vecchi…
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
81. basta
duplicare tutte le strutture dati
tenere tutto sincronizzato
!57
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
82. basta
duplicare tutte le strutture dati
tenere tutto sincronizzato
versionare tutto
!57
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
83. basta
duplicare tutte le strutture dati
tenere tutto sincronizzato
versionare tutto
un bel flag “comando io”
!57
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
84. basta
duplicare tutte le strutture dati
tenere tutto sincronizzato
versionare tutto
un bel flag “comando io”
mapping! mapping! mapping! (cit)
!57
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
93. A. var aggregate = repository.GetById<TAggregate>(id);
B. aggregate.Command(a,b,c);
C. repository.Save(aggregate, commitId, h => h.Add(k,v));
!66
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
94. A. var aggregate = repository.GetById<TAggregate>(id);
B. aggregate.Command(a,b,c);
C. repository.Save(aggregate, commitId, h => h.Add(k,v));
Store Commit
Commit
Headers
Event1
Event2
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
!66
95. A. var aggregate = repository.GetById<TAggregate>(id);
B. aggregate.Command(a,b,c);
C. repository.Save(aggregate, commitId, h => h.Add(k,v));
Store Commit
Observers
Commit
Headers
Event1
Event2
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Dispatch
Commit
Projections
Process Managers
Clients
!66
148. Elogio alla community
“…gli user group sono stati lo strumento che maggiormente mi
hanno permesso di imparare sia come scrivere software in modo
nettamente migliore, sia come affrontare le altre componenti
relative alla gestione di un prodotto o di un progetto. Ciò è stato
possibile grazie al dialogo e al confronto con persone intelligenti
e disponibili a scambiare gratuitamente le proprie idee, opinioni
ed esperienze, col coraggio di riportare anche quelle fallimentari,
invece di chiudersi nel proprio orticello cercando di nascondere i
propri segreti. Questo è lo scambio culturale, che porta ad
un’effettiva crescita, a cui tutti coloro che svolgono la nostra
professione farebbero bene a partecipare e contribuire.”
Elogio alla community - @ste8
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
!96
152. EventStorming non è la
pillola per diventare
intelligenti
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
153. EventStorming ci
permette di scoprire
dove abbiamo torto
…il prima possibile
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
154. rapporto costi/benefici
•
Alcuni domini chiamano a gran voce
EventSourcing
•
…su altri non è che ci sia poi tutta
questa complessità.
•
ma…
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
155. CRUD
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
Assumo ORA di non avere
bisogno della storia del dato
in futuro
156. Quanto costa la colla?
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
157. Ignorance is the single
greatest impediment
to throughput.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
http://dannorth.net/2010/08/30/introducing-deliberate-discovery/
Dan North
161. Domain Events
•
Lo-Fi —> Gli esperti ci correggono
•
Transizioni di stato —> Maggior
precisione e ricchezza del linguaggio
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
162. Domain Events
•
Lo-Fi —> Gli esperti ci correggono
•
Transizioni di stato —> Maggior
precisione e ricchezza del linguaggio
•
Non ragiono più in tabelle. —> non
costringo gli utenti ad adattarsi.
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
163. Domain Events
•
Lo-Fi —> Gli esperti ci correggono
•
Transizioni di stato —> Maggior
precisione e ricchezza del linguaggio
•
Non ragiono più in tabelle. —> non
costringo gli utenti ad adattarsi.
•
Faccio le domande giuste
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
171. Per saperne di più…
•
http://ziobrando.blogspot.it/2013/11/
introducing-event-storming.html
•
https://it.groups.yahoo.com/neo/groups/
DDD-IT/
•
19 marzo a Roma / 2 aprile a Bologna
#CDays14 – Milano 25, 26 e 27 Febbraio 2014
173. Q&A
Tutto il materiale di questa sessione su
http://www.communitydays.it/
!
Lascia il feedback su questa sessione,
potrai essere estratto per i nostri premi!
!
Seguici su
Twitter @CommunityDaysIT
Facebook http://facebook.com/cdaysit
#CDays14
#CDays14 – Milano 25, 26 e 27 Febbraio 2014