Get Mauro speaking at your event.

Here is the list of talks ready to be delivered. Get in touch to arrange details.

All our microservices are wrong header image

All our microservices are wrong


It always starts well. At first glance, the requirements seem straightforward, and implementation proceeds without hiccups. Then the requirements start to get more complex, and you find yourself in a predicament, introducing technical shortcuts that smell for the sake of delivering the new feature on schedule. In this talk, we’ll analyze what appears to be a straightforward e-commerce shopping cart. We’ll then go ahead and add a few more use-cases that make it more complex and see how it can negatively impact the overall design. Finally, we’ll focus our attention on the business needs of these requirements and see how it can shed light on the correct approach to designing the feature. Walk away with a new understanding of how to take requirements apart to build the right software.

More information...


Available in: Italiano | English

An AWS journey from SQS and SNS to architecture...and back header image

An AWS journey from SQS and SNS to architecture...and back


Unnecessary coupling brings every distributed system to a grinding halt. A great way to decouple services is to use messages exchanged over queues instead of HTTP. AWS offers at least two prominent options for messaging, SQS and SNS, which have some overlap. After this talk, you will understand the difference between SQS and SNS, and when and how to use them. You'll learn how messaging has the potential to shape your systems in powerful ways, not only with AWS. Join me for valuable lessons to stop fearing about coupling — all with examples in C#.

More information...


Available in: English

Be like water, my friend header image

Be like water, my friend


L’acqua è quasi inarrestabile, basta un pertugio e si propaga. Basta un po’ di pressione e con facilità il pertugio diventa una voragine e lascia spazio ad una piena. La conoscenza e l’esperienza in un team possono essere come l’acqua. Il sapere deve poter scorrere senza freni, con solo degli argini che lo guidino al fine di evitare un’inondazione. È possibile strutturare un’organizzazione al fine di garantire la diffusione del sapere? Quali sono i processi e gli strumenti che possiamo mettere in campo per essere certi che conoscenza ed esperienza siano diffuse, ma anche che non vi sia un’inondazione? Lasciatevi trasportare da Mauro nei meandri di Particular Software, per scoprire come una realtà “dispersa” su 17 time zone gestisce collaborazione e condivisione del sapere. Analizzeremo sia i processi, che ci siamo creati, che gli strumenti digitali che usiamo quotidianamente.

More information...


Available in: Italiano

Designing a UI for Microservices header image

Designing a UI for Microservices


How do we design a UI when the back-end system consists of dozens (or more) microservices? We have separation and autonomy on the back end, but on the front end this all needs to come back together. How do we stop it from turning into a mess of spaghetti code? How do we prevent simple actions from causing an inefficient torrent of web requests? Join Mauro in building a Composite UI for Microservices from scratch, using .NET Core. Walk away with a clear understanding of what Services UI Composition is and how you can architect front end to be Microservices ready.

More information...


Available in: Italiano | English

Got the time header image

Got the time


'Check if overdue invoices are paid.' Seems simple enough. But when are invoices due? Are they all due on the same day? 'Apply discounts to customers whose balance is more than $500.' Well, that sounds simple too. But are customers' balances and discounts stable? Or do they change over time? When designing a system from 'requirements', it's not always easy to spot the impact of the passage of time. It's too easy to fall into the trap of solving a business problem with a technical solution. We end up using batch jobs to try to catch up, resulting in a plate of spaghetti. In this talk, we'll analyze what appears to be a straightforward billing system that needs to deal with invoices and discounts. How hard can it be? We'll then add a few more use-cases that make it more complicated and see how that can negatively impact the overall design. Finally, we'll focus our attention on the impact of time on the design, and see how it sheds light on the correct approach to designing features. (All we want, two, three, go! Time, got the time tick tick tickin' in my head!)

More information...


Available in: Italiano | English

Live long and prosper header image

Live long and prosper


Microservices for all the things, they say. Nowadays, it seems that if architectures are not microservice-based, they are not worthy. Is that truly the case? Do we really need a (micro) services-based architecture? We should design our systems with longevity, maintainability, and simplicity in mind; not hype. Long living systems are our primary goal. In this session, we’ll analyze the most common errors in software design and how the right architecture can be a game changer. Join Mauro in a journey that aims to disclose what it means to build a distributed system based on a (micro) service-oriented architecture.

More information...


Available in: Italiano | English

Living organizations, Particular Software header image

Living organizations, Particular Software


We are so used to organizations based on the traditional org-chart structure that we get for granted that it's the only option. Is a different approach possible? When I first joined Particular Software, it was a traditional, yet distributed, organization. We had directors and a hierarchy. A year later conscious decision to change everything from the ground up was made. It was the best decision ever. Join Mauro on a journey that aims to disclose that another organization model is possible, that top/down decisions making is not the only viable solution, and that we can organize work schedules around our private life to achieve the best possible life-work balance.

More information...


Available in: Italiano | English

Product Owner is dead, long live Product Ownership header image

Product Owner is dead, long live Product Ownership


What if products were not managed by manager? Or even, what if there are no managers at all? Who will be responsible to define backlog priorities? In Particular Software there are no managers. Product management belongs to everyone. If this sounds like the inmates have taken over the asylum, you're only partially right. Nowadays more and more companies are transitioning to adaptive organizational structures. What can be done to enable anyone to make decisions at any level? Is there a way to have a shared decision making process? We'll have a look at how Particular Software is structured in order to enable all the above. We'll analyze how problems are handled and which processes and tools we use to make decisions. All this without nurses, ooops, managers.

More information...


Available in: Italiano | English

The road to a Service Oriented Architecture is paved with messages header image

The road to a Service Oriented Architecture is paved with messages


One of the options on the table when implementing a Service Oriented Architecture (SOA) is to use messages and a service bus foundations. This talk will drive you through the basic SOA building blocks, introduce message based architectures, and will connect the dots between the technology and the architectural principles through some samples using NServiceBus. Finally analyzing advantages and issues we may face when choosing this option.

More information...


Available in: Italiano | English

The agony and the ecstasy of working remotely header image

The agony and the ecstasy of working remotely


Working remotely as a solution architect is amazing and brings a lot of autonomy to my life but the more geographically dispersed my team becomes, the more friction gets added to my daily job. This session discloses how we work internally at Particular Software - how we manage daily tasks, communication, and long term goals in a company whose employees span 17 time zones.

More information...


Available in: Italiano | English

Welcome to the (state) machine header image

Welcome to the (state) machine


Stateless all the thing, they say. In the last few years we’ve been brainwashed: design stateless systems, otherwise they cannot scale, they cannot be highly available, and they are hard to maintain and evolve. In a nutshell stateful is bad. However complex software systems need to do collaborative processing, that is stateful by definition. Stateless myth busted! Collaborative domains deal with long business transactions and need to interact with distributed resources. The traditional distributed transactions approach, even if tempting, is a time bomb. This is when Sagas come into play. Sagas allow to model complex collaborative domains without the need for distributed transactions and/or orchestration across multiple resources. Join Mauro on a journey that aims to disclose what sagas are, how they can be used to model a complex collaborative domain, and what role they play when it comes to designing systems with failure and eventual consistency in mind. (It’s all right, I know where you’ve been)

More information...


Available in: Italiano | English