How did we switch from a synchronous buying process to an asynchronous one?

(Une fois de plus, merci à Jason Tan pour son peer review!)

Critical use cases in applications are typically the more complex ones. One of these use cases at Sherweb is the process of buying something. Here is an (oversimplified) overview of that process:

1. Resolve the price of the item.

2. Check if there are any promotion available for the item.

3. Create necessary artifacts in the billing engine to properly bill the client.

4. Deliver the item’s associated services in external infrastructures (i.e., …

(Une fois de plus, merci à Jason Tan pour son peer review!)

When trying to apply strict DDD rules, you often face the DDD Trilemma ( Many approaches exist to address that problem. I have probably used them all over the years. But recently, I tried something new by myself, by combining other patterns together to solve that problem. And this is the approach I like the most.

First, a brief description of the problem. Consider that you have a Subscription aggregate root:

Also consider that you have the Customer aggregate root:

(Merci à Jason Tan pour sa révision de mon anglais qui n’est pas prod ready)

This is a topic that has already been well covered, so everything has probably been written about it. But here is my (very opinionated) take, based on my personal observations.

Over the past 10 years, I have seen many organizational changes, department restructuring, team reorganizing, new directors, new VPs and new developers’ arrival (and others quitting). All this in the same company. Over all those years, an overall goal remains: increasing department velocity while keeping a certain level of quality, all while addressing technical debt…

Merci à Jason Tan pour sa révision de mon anglais qui n’est pas prod ready :)

At which point does a debate about a piece of code become far too expensive in time? It is hard to tell, but here is an oversimplified summary of a discussion about DDD that took more than an hour involving 3 people. Feel free to share your similar experiences :)

Dev1: Hey look at my code, I have a well-defined Client aggregate root class. And instead of having a list of CreditCards, I wrapped the concept in a Wallet value object class and used…

The cost of software development is critical for business to ensure a return on investment (ROI) of delivered projects, and great decisions can lead to the perfect timing in a market opportunity window. Various metrics can be used to measure that depending of the management style driving your company.

Making architecture decisions about the way a feature or a project must be oriented can be difficult and can create frictions between people striving for the same goal, particularly when the YAGNI principle comes into play. I learned about this principle in university and when I started to work, a mentality…

Normand Bédard

French Canadian senior software developer for SherWeb since 2010. Ultramarathon, drones and camping enthusiast!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store