Some years ago, we delivered a “Training Calendar” workflow application to a client. It was a system where the training department could upload new training events and invite selected/ all employees to participate. Here is how it worked:
– Once the employee signed up, the manager would be alerted to approve/ reject this.
– If it was rejected, the employee would be notified.
– If it was approved and if a slot was available, the employee’s participation would be confirmed and s/he and the manager would be notified of this.
– If a slot was not available, the employee would be placed on a waiting list; if anyone else cancelled a confirmed spot, this employee would move up in the list and possibly get confirmed (exactly like an airline/ railway booking system).
Since it was a Web-based application (upon the request of the IT manager there), everything went to a central server, and the employee got a notification immediately after the manager’s approval/ rejection.
About a month after the installation, my colleague Sanjay [name changed] went to the same client’s office for another project. When the IT manager saw him, he buttonholed Sanjay and explained that the employees from the remote locations were finding it too slow to use the browser to get into the Training Calendar. Therefore, could Sanjay create replicas at various locations so the employees could access the system more easily?
Sanjay was in no way connected with this project. Yet, eager to please the man he was facing, he immediately made four replicas, making a total of five instances. When he returned to the office that afternoon, he informed me rather proudly of what he had done.
Initially, I panicked that I had made a mistake somewhere, and that this knight in shining armour had helpfully saved me from a possible embarrassing situation. Five minutes later, it hit me: how could this system ever work?!! This was exactly like an airline booking system — if the limit was 30, and if many people logged into different instance, 30 seats could very well be assigned by each instance before all of them synchronized at night. Can you imagine the scenario here? Instead of 30 slots, 30×5 = 150 slots would be confirmed!
I explained this to Sanjay, and he returned to the client’s office the very next day to remove the replicas. I have no idea what the IT manager’s reaction was.
As I reflected on the incident, a few things ran through my mind:
1. At first, I was irritated with the IT manager that he had discussed this Sanjay and not even bothered to call me, when he knew full well that I was handling this project. Later, though, I realised that as far as the client was concerned, he was merely discussing the problem with some representative of our organization — and when the client’s contract is with the organization and not with an individual, it’s OK for him to pass on the message to anyone.
2. It’s not as if I had quit the organization and was unavailable for comment. It should have occurred to Sanjay to say that he was not associated with the project, and that he would pass on the message to me. True, these were the days when cell phones were not common, but he could have at least called the board number at our office/ e-mailed me to ask if he should go ahead. (Needless to say, I never got even a hint of an apology from Sanjay later.)
3. Thank Heaven for small mercies, though: He at least informed me of this, and he informed me that very day — it could have been worse. Had he not told me, we would have ended up with this “overbooked” situation (like the international airlines of yore) — and I would then have been called upon to answer why the system was malfunctioning!
Anyway, a few days later, I discussed the matter with the IT manager. I offered that we could certainly support the replicas, but that no trainee would receive an immediate confirmation until all the instances had synchronized with each other at night. He said it was not a big deal — they were anyway upgrading their Internet connections — so they would stay with the original Web-based, single-server system. Since I did not hear from them again, I assume they lived with it happily ever after — or scrapped it! [If it was the latter, all I can say is that it was nice of them to pay for it!]