Recently I was listening to the
excellent episode of
Software Engineering Radio about the new
Guardian.co.uk website.
I was eagerly sucking up the facts the two architects Matthew Wall and Erik Doernenburg are presenting in the podcast.
But after about 20 min I was shuddering: At this point Matthew and Erik are talking about applying
Domain Driven Design (DDD), specifically about enforcing
aggregate rules, when the host (Markus Völter) was stating the following:
If I had done that, I probably would have defined a domain specific language, for example a textual DSL, that would know about those concepts. Then you could actually write programs using those common language terms as first class citizens.
This made me cringe. I know the Markus Völter is an expert in MDSD and DSLs, but stating the above quote in such a casual manner rings a lot of my alarm bells.
I just have a bad gut feeling if someone wants to build such essential infrastructure up front. That's when my
invented-elsewhere-syndrome kicks in.
[YAGNI, Race to Running Software, Less Mass are other things that come to mind ...]
I have just seen too many projects, that invented their very own framework.
In the beginning everything goes smooth and it is very cool to work on
TheFramework(tm) and not having to solve the real business problem. You can really feel smart ... But then the 80-20 rule kicks in and all the special cases threaten to turn
TheFramework(tm) into
a big ball of mud.
And that's even before maintenance becomes an issue of its own ... who is going to hatch
TheFramework(tm) when the underlying technology evolves?
I think that endeavors like this should not be taken light-headed. This can cause a lot of suffering.
As my self-confidence as developer is growing, I think I would refuse to work on a project with this premise.
I think it is exactly the point of domain driven design that it is
not about technology but about concepts. People too often rush head first into technical realizations. Thats also what Eric Evans says when he mentions that the
competent developers often are not invoved in "domain crunching".

On the other hand, some years ago I would not have been so hesitant and precautious. As a highly motivated graduate, I would myself have rushed headfirst into the challange, working on a cool
TheFramework(tm) of my own ... So one could ask:
Why did I loose my faith?
Honestly I don't know... could it be that I lost my courage in the trenches of enterprise-developement?