Saturday, April 29, 2006

More notes on the ACCU conference

At the risk of boring you, my dear reader, I’d like to make a few more comments on presentations at the ACCU conference. Those of you who read this blog for the musings on change and product management might like to skip this entry, its for the guys who design programs.

Nico Josuttis is an ACCU conference regular, he is probably best know for his book The C++ Standard Library but (incredible) that was over 6 years ago now. Like the rest of us he’s moved on a bit. These days he’s more of a software architect so it was fitting his main presentation was on Service Oriented Architecture - SOA.

SOA is in fashions this year - along with last seasons MDA. The easy way to think about SOA is that is “doing it with SOAP” but there is more to it than that - for a start you need to add in a service bus. As with any good software architecture fashion it will increase flexibility, reduce development time, increase software reuse, reduce coupling, increase business value, reduce development costs and generally just fix the whole problem with software.

Well Nico discussed all these issues and more. He exposed it for what it is, a good idea with some advantages but not a cure all. You still have dependency problems, re-use isn’t automatic (far from it) and you can still make the same big mess you made without SOA.

What I really liked about Nico was that he was talking from experience, he had a hard case study he could draw lessons on and he has stories to tell. The audience often guessed the way the story would turn out before he got to the end - because, as I said, SOA suffers from the same problems as many other architecture fashions.

The slot before Nico was Klaus Marquardt who presented some of his software as medicine patterns. I’ve been familiar with Klaus’ ideas for a few years and I’d already ready several of the patterns he presented but this was the first time I felt I really understood the point he’s trying to make.

Klaus introduced several ideas about software illnesses - many of which were actually organizational illnesses. The two that stick with my most are palliative care for software and proactively wait. Let me explain.

Palliative care exists in medicine to deal with disease management and pain control when we can’t actually cure the disease. Klaus suggested that sometimes a similar situation exists in software - and I have to say I agree with him. Sometimes software gets into a mess and fixing it completely isn’t really an option - takes too long, costs too much, nobody really understands it, etc. - so we should consider what we can do to make it more manageable and reduce the pain we get from it.

The second idea that will stick with me is “Proactive wait.” In other words, sometimes you can’t do anything now, or perhaps the patient doesn’t want you to do anything, so you wait. You know your waiting, you may take some actions to prepare yourself while you wait but you don’t do anything until the patient is ready for you.

I think this is good advice and I intend to follow it were I can. I see two places were I can use the idea, first myself, sometimes I should wait. Rather than rushing in to fix something it might be better to wait until a better time or even until the pain is higher and the patient will accept your intervention.

To be honest I already do this at times but I had no term to describe it. Sometimes saying to someone “you don’t want to do that” is the wrong thing. They will perceive you as a busybody, a control-freak, a micro manager, or just a pain. Sometimes its better to let someone do it their way even if you know a better way, often they will learn a lesson - they may learn it the hard way but they will learn it better than you telling them.

(Of course if they are about to put their hand in the fire this is a bad time to apply this idea - only do it if nobody will be hurt.)

Second, and in someway this is an extension of what I’ve just said, it is better to wait for someone to ask for help than to give it without asking. It is better for someone to appreciate they need some help and ask for it than for you to start helping out - no matter how well intentioned you are.

Conclusion: timing can be important.

That’s almost it for my ACCU notes, normal service will be resumed soon.