Sometimes loose coupling doesn’t exactly give you what you want. At Gate 4 at San Diego airport today, I was sitting opposite a young man who evidently worked for one of the airlines. His girlfriend was stranded at some other airport, and he was trying to get her onto a plane that was just about to leave, talking alternately to her and to various people in his own office. He was telling her to stay at the gate (she didn’t); the man at the gate was telling her to go back through security to revalidate her ticket (she didn’t have time); the boyfriend was telling his pal to revalidate the ticket remotely (he did); he was telling the girlfriend what to tell the man at the gate (apparently the man at the gate could have been a lot more helpful, just get his name and number); he was checking the empty seats on his laptop (there were five); he told her to get back to the gate (why had she not stayed?); but the plane had left without her (he not happy, her feelings not recorded, probably off the scale); and he was left trying to find an alternative route home for her. I was minded of one of those toys that complex systems researchers use to demonstrate unpredictable non-linear behaviour: a jointed pendulum that swings chaotically in all directions.
Why do so many companies do this? Even for the girlfriend of an employee, even with the boyfriend pulling all the strings he could reach by cellphone, though the plane had empty seats, they couldn’t manage to get her home. Presumably any other customer in the same situation would have had even less chance.
This mess results from the worst kind of loose coupling – but it is a kind that is common to many organizations and systems. Simple-minded SOA people who chant “loose coupling” as a mantra must remember that sometimes tight coupling makes more sense. But then, on the other hand, if you have spent a lot of time dealing with the worst kind of tight coupling, loose coupling certainly has its attractions too.
But the answer isn't to oscillate erratically between loose and tight coupling, but to get the coupling right. This is an architectural challenge that really isn't well served by the kinds of modelling tools that SOA architects use today.