Tuesday, September 21

Layered Architecture vs Living Domain Model

Update: Fowler has blogged about this.

I just finished a great talk with Jon Tirsen, basically he points out that a layered architecture can get between you and your domain model.

We were discussing that the "small talk way" (i.e. the OO way) is to have a rich, living, useful domain model that does all the interesting things in your application.

If you have a layered architecture, you can end up having a service layer that seperates your client code (view or action) from your domain model.

Jon pointed out that having one of these layers, when you dont need one, is like burning $50 notes. You end up writing hundreds of lines of code in your service layer including marshalling and unmarshalling across the boundaries.

Another bad effect is that teams often end up implementing functionality as transaction scripts rather than in the domain where it belongs. The more you do this, the more anemic your domain model becomes, and the less useful your domain language becomes for solving problems in the future.

The advice from all this is that the one kind of appliction that does NOT need a layered architecture is a web application. Your views can and should have a rich and close collaboration with your domain code.

This conversation really got me thinking, is it actually possible to maintain a living domain model with a service layer in the way?

Thursday, September 16

Are Index Cards Kaikaku?

My friend Julian Boot pointed out this Japanese word to me - Kaikaku - meaning a revolution. People sell a Kaikaku experience to help promote a cultural change.

I think the idea is that really experiencing new ideas at an emotional level is needed to get cutural shift to happen.

For me, good old index cards for planning can be a physical token of the cultural change involved with Agile planning.

Are you using a spreadsheet for your agile project? Try index cards and see if you dont get better results, perhaps not because they are index cards, but because they are totally different to the old way of doing it.

Developer Estimation: Good or Evil?

In some projects, estimation seems be harmful to the team members where in other environments it can be benificial.

The important difference is how you use the number. If you are using the number as a commitment to complete a task in a specific time or tracking individual developers success or failure against an estimate, then you have a problem.

If, on the other hand, you use the number as a rough guide you are better off. Even better if you use the sum total of everyones estimates to get a holistic picture for planning.

Why is this second way better? Because if you are using the first technique, you are setting people up to fail. Developers will often fail to deliver to their original "promise" and this is stressful, demoralising and unnessesary.

Mike Williams has written this post on how the name you use for your estimates can also effect how they are percieved.

Friday, September 10

Bookshelved

Have you discovered Bookshelved yet? It is a Wiki community around books.

While I was browsing through the site I discovered a treasure trove of technical book suggestions from some very well read software developers. I added the books that sounded interesting to my bookshelved wiki page:

See my bookshelved page here: http://bookshelved.org/cgi-bin/wiki.pl?BenHogan


Friday, September 3

Geekbeers?

I'm interested in building and participating in the community aspects of software development, particularly Agile, XP, OO, Java, .Net and other geeky things.

I find some good beer really helps the conversation along.

My first experience with this kind of community was the Extreme Tuesday Club (XTC) in London, where some of the best developers in the world seem to hang out. Inspired by this I started a Brisbane XTC, but sadly moved to Sydney before gaining much momentum. I am now involved with the Sydney XP Activities Club.

If you want to learn new things, this is a very enjoyable way to do it. Hanging out with smart people over a beer is very different to reading a book alone.

I'd like to invite you to give it a try, have a look at the Agile Alliance site for your local group.

ActiveMQ adds messaging to HTML

James Strachan recently pointed out that the ActiveMQ project has added some code that allows you to "...make HTTP requests from inside JavaScript to make a DHTML web page which can do dynamic, real time messaging."
Joe Walnes demoed this to me at ADC 2004 with a real working example. I'll update this blog entry with a mini tutorial when I get time to check it out.