I my last posts I have been talking about DDD and the CQRS Architecture. There are certainly situations where the CQRS Architecture would be a good solution form a theoretical point of view. I know from experience that rolling the best suitable architecture is not always the way to go.  We need to consider the people as well. It is really dependent on the culture in the company if a “new” architecture can be rolled out.

Company culture

In some companies being a craftsman is valued. You are working in an environment where creating unreadable code will get you in trouble and major design decisions are well thought thru.  There’s process, there’s design and there’s coding. The goal is to create code that can be maintained over time and at the same time meeting the needs of the business.

In other companies there is chaos. The recognition that software needs to be built with care does not exist. The goal is to create the next feature without any thought of the maintenance hell you will experience in the future. The developer who implements the next feature in the shortest amount of time is the one who gets rewarded. Spending time creating SOLID software with well proven development practices is not valued.

I’m painting a black and white picture here, and as we all know, the world is grey :) Now, let me continue my rant.

Both these companies can grow and gain marked share. If you are in a marked where you have monopoly, or are one among a few you can keep delivering mediocre software and still be in business. If you are in the “chaos company” category you will start seeing problems when competitors starts entering your marked or when you just can’t deliver more features in reasonable time. Suddenly you are dealing with crappy software, unmotivated developers and a bad business.  Not a good place to be if you are in the business of making software.

The best design decicions are not always the best design decisions.

Back to my original thought. Yes. I was planning to advice you not to apply the CQRS Architecture, or any architecture that requires a certain amount of thought in companies following the chaos model. You will probably cause more problems than you solve. You need to be able to control your environment to roll these kinds of solutions. Eric Evans talks about creating bubbles of quality software in your organization. These kinds of bubbles burst quickly if you are in the wrong company. In other companies a bubble is a viable solution.

Introducing new ideas in a company must be done with care and the first thing you need to consider is the people and the culture, not the best design from a technical perspective.

…and that was todays rant.  Makes sense ?  Hit me with a comment :)

F Share