Use your head
From time to time, as a software developer, I encounter a client who wants the electronic brain to do something that the human brain can do so much more easily.
Nothing outstanding here, I suppose. It's obvious that people can do a lot of stuff that computers can't. But what I am referring to is where it seems like a job for a computer, but on closer examination it's a tough call. It's where computation is involved, but I think the confusion happens in scenarios where the decisions require a fair degree of flexibility - computers are not known for their flexibility!
If you're interested in the gory details, here's a case in point: in software for the administration of sports competitions, the process of allocating games/matches to venues (grounds / pitches / courts / fields etc). Many sports competitions follow a "round robin" schedule. Each team should play once against each other team. Each team should have a even number of games "home" and "away". So far, so good... these are mathematical problems and the programmer can sort it out with a minimum of headaches.
And then - where are they going to play? This is where mathematics bumps headlong into practical reality. Does each team have a "home ground", based on the club/school they represent? Is this venue subdivided into a number of fields/courts? If so, we can allocate a venue according to the home ground of the home team. That is, unless this venue already has a match allocated to it from another competition (grade/league). Can we make sure this does not happen? Well, if every grade has the same number of teams, and if each club has enough home fields for the number of teams, and if each club has only one team in any given grade, then I think it may be theoretically possible. Does this ever happen? No, in practice the reality is normally far from this. What does this mean? It means there will always be venue clashes, based on the playing schedule that the computer works out mathematically. It's inevitable.
So, now what can we do? We can get the computer to check through the match details, and identify the venue clashes. This can be done during the process of calculating the playing schedule, or afterwards. And it also needs to be done whenever a manual change of venue or playing time is made. Ok, fair enough, we can do that - that's mathematical.
And then what? Does it seem like we can just get the computer to sort out the double-booking? Well, here's the answer - if we can define the rules in sufficient detail, regarding what the computer should do when it encounters a venue clash, then theoretically we could resolve many of the clashes.
It might go something like this... For each clashing match, see if the opposing team has a vacant field. If so, would this create a situation of more than 3 home games in a row for any team? If not, put the game there instead. If so, see if the original home team has a field available at another timeslot? If not, is there a neutral field available at that time within 50 Km? And so on. Of course, a solution according to the rules may in fact be mathematically impossible, or so complex that it would take a normal PC many hours to calculate it. And of course, the rules for resolving clashes are likely to be peculiar to each organisation, and it would take a huge number of hours of programming to get them working right.
So, in practice, in most cases the resolution of scheduling clashes requires human intervention. Is this a drag for the administrator? Possibly (though using software like SportsRunner will still be hugely preferable to doing the whole darn thing manually). But this is where the human flexibility factor comes to the fore. The administrator knows the venues, and knows the competitions. If the software provides the administrator with:
-
a popup warning when data is entered which results in a venue clash
-
a list of matches where the venues are double-booked
-
a list of all possible venues showing which ones are already booked when
... then the administrator will normally be able to sort out a suitable playing schedule much more easily than the computer could. Juggling and jockeying and creativity may be involved, and making computers juggle and jockey and be creative is not easy, believe me.

I've been to a very interesting meeting tonight. When you're really busy, and especially focussed (as tends to happen with micro-ISVs), it's easy to get absorbed in one's own little corner of business life. So sometimes it's great to see what others are doing - stuff you wouldn't normally have contact with.

