cqrs for dummies – an interlude – is cqrs the ‘shiny new thing’?

The next substantive post on the command layer should be up this week, but thought I would comment on this.

For various reasons, a question has arisen of whether cqrs is some shiny new thing.  define what that means however you wish.

The short answer is, yes, but no.

As Papa Greg has mentioned/stated before, cqrs is ‘only’ separating your codebase in such a way that commands and queries use different services (or classes if like me you are allergic to services).  Which is absolutely correct.  Typically, however, mention of cqrs tends to involve a lot more than that.  Having a separate event store from the reporting store, maybe using Event Sourcing, maybe involving Eventual Consistency, yada yada yada.

There is no doubt (“Don’t speak, I don’t want to hear it…..”) that when an even remotely possibly good idea pops up, it can be misapplied or abused.  Since cqrs, either in its strict (“it ain’t a f^&king application design”) form or in its relaxed (“yeah, fine, but it can lead to kickass application design”) form, is a remotely possibly good idea, it can be misapplied or abused.  The whole “I have a hammer” yada yada yada issue is almost inevitable. 

But, that’s okay.  From a statistical perspective, e.g., TDD is probably rarely practiced, and TDD really sucks, so it is misapplied and abused as well.  The advantage, if you can call it that, is that ‘leading’ developers will try TDD way before most other people, and find out the ways that it can be misapplied and abused, and they will probably blog about it, making it easier for everyone else to get along. 

Same goes with cqrs.  Because of its inherent intuitive plausibility, people will try to implement it.  And, like most development efforts, most implementation efforts will have problems.  But, THAT’S OKAY.  Sorry for yelling, but it is okay.

If you are someone interested in cqrs in either its strict or relaxed form, keep in mind that it is no different from DI or IOC or blah blah blah.  There are places where it works and makes sense and other places…well, maybe not. 

I lean towards the cqrs junkie side if only because the relaxed form of it suggests doing things in code that I’d already been doing anyway, but even so, I am aware that it is no more a panacea than CORBA <fill in blank of industry saving code practice ideas that actually sucked here>, whatever. 

You still have to be smart about it.

posted on Tuesday, March 09, 2010 7:20 PM Print
No comments posted yet.

Post Comment

Title *
Name *
Comment *  
Please add 8 and 2 and type the answer here: