CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeremy D. Miller -- The Shade Tree Developer

Under the hood and working with .Net, TDD, Software Design, and Agile Stuff

An idle thought

I've had a couple conversations recently about Eric Evan's Domain Driven Design book.  I like the book, I like quite a bit of the DDD approach, I think it's an important book, and I'd recommend giving it a read.  That being said, we came to the conclusion at AgileATX lunch today that the DDD book might have supplanted the "Gang of Four" book as the leading cause of overdesign (except for SOA of course).  



Comments

Mike said:

That's interesting. Since I have been applying DDD concepts I have found myself eliminating wasteful design. I think that trying to build solely with DDD as a goal and without using the pragmatism of TDD practices leads to that kind of design bulge, tho. I think of DDD as a conceptual guide while I look to TDD as the way to realize the goals.

# August 31, 2006 3:39 PM

Geoff Stockham said:

I subscribe to the DDD mailing list, and I do find that there seem to be endless discussions on the best way to implement repositories and aggregates etc.  I found the most value from the DDD book (and Jimmy Nilsson's book) in the fact that it stopped me thinking about the infrastructure and made me concentrate on the domain.  I now design from the middle outwards, rather than from the database upwards, and leave the infrastructure to tools like NHibernate and IoC containers

# September 1, 2006 3:45 AM

Milan Negovan said:

It seems to me Jimmy tried to consolidate both doctrines (patterns/ refactoring/TDD, and DDD) in his book which worked out Ok. I think the GoF and DDD books will go hand-in-hand for some time.

# September 1, 2006 4:02 PM

Chad Myers said:

Jeremey: It seems your comment goes a little deeper than just DDD. The problems of overuse of GoF and DDD seem to be that the software development world is yearning for a standard of some sort. We've been doing database-driven apps for many, many years and yet still no one has figured out how to do it well, testable, reliable, maintainable, etc. We're STILL coming up with new ways of organizing software to work around databases. Still! It's ridiculous. In the standard engineering world (mechanical, architectural, civil, etc) there are pretty standard ways of solving common problems. You need to fasten two steel beams together? Ok, tell me a.) How much weight they support, b.) what the shear force is, and a few other variables and I'll look in the ASTM book and tell you what type of fastener to use.

Ask 3 programmers what the best way to query data from 6 tables in a relational database and you'll get blank stares for about 30 seconds, and then it'll descend into chaos as the arguing starts.

I'm embarassing, really. I'm embarassed to be a software developer sometimes and to call myself an 'engineer'.

It is my sincere hope that things like GoF and DDD help to raise the understanding an awareness of the art and practice of software development.

You scoff (as do many of us) at the overuse of DDD because the people are using it as a new type of hammer to pound the same old nails without really understanding why they're pounding nails in the first place.

Well, ask me why the ASTM listed that particular type of fastener for those criteria and I couldn't tell you. It's not important because that fact has been established and tested and is tried and true for many years. I think we, as software artists and quasi-engineers need to get to the point where there are obvious, easily-obtainable and implemented solutions for standard problems and we don't have to necessarily know or care why. DDD isn't the silver bullet, but it's one tiny step towards a standard way of dealing with a common, ubiquitous problem.

# September 1, 2006 8:17 PM

Chad Myers said:

"I'm embarassing" should be "It's embarassing"

But truth be told, I'm one of those guys who also can't seem to find a sure-fire, tried and true, works all time regardless of what language/framework you're using, way of accessing data from a database, so I guess I AM embarassing, as well as embarassed.

# September 1, 2006 8:20 PM

Jeremy D. Miller said:

Chad,

Be careful what you wish for.  I'm a developer because my original career in Mechanical Engineering was nearly devoid of creative thought -- because everything had been discovered.

If the best way to do everything in software development had already been discovered, software development wouldn't be as much fun.  Software development is still a new field.

As far as overusing DDD & GoF & PEAA for that matter, it's just a matter of getting higher up Bloom's Taxonomy and being able to make better judgements on the applicability of techniques instead of just following along with someone else's recipe.

Thanks for the comments.

# September 1, 2006 9:43 PM

Paul Gielens said:

Have a background in mechanical engineering as well and ended up in software engineering for the exact same reason!

Of course I disagree on the argument that the GoF nor Evan's book is the leading cause of over-design. Over-design has nothing to do with books, actually it's everywhere in our normal life... think about it.

# September 27, 2006 3:04 PM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Jeremy D. Miller

Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#. Check out Devlicio.us!

This Blog

Syndication

News

All opinions expressed here constitute my (Jeremy D. Miller's) personal opinion, and do not necessarily represent the opinion of any other organization or person, including (but not limited to) my fellow employees, my employer, its clients or their agents.

About Me

"Best Of" Compendium

StructureMap (Dependency Injection for .Net)

StoryTeller (Supercharged Fit)

Build your own Cab

TestDriven

MVP