(In Yiddish folklore, the village of Chelm is renowned as a town of fools–a place where wisdom, learning, and inspiration need never be hampered by common sense. The people of Chelm can, therefore, be considered the spiritual ancestors of all software designers.)
One day, the programmers of Chelm decided to write a new database for the synagogue. “It must keep track of every family in Chelm,” pointed out Shmul, who liked to think of himself as the project leader. “We need to know who’s married to who, who are their children, and every first and second cousin.”
“I see,” said Mendel. “It must be a relational database.”
“But who should we relate to who?” asked Moshe.
“Well, I certainly don’t want my son marrying your daughter,” objected Avram.
“Gentlemen, gentlemen,” called out Shmul, “let’s remember what we’re here for. Now I say we need a table for men, a table for women, a table for families, and a table for children.”
“Does the rabbi get his own table?” asked Avram. Everyone agreed that he should, as he was wise.
“What about the user interface?” asked Moshe.
Everyone looked at Shmul. “There should definitely be one,” he said. “Otherwise, who would use it?”
“Yes, but should it have a speedbar, smarticons, or a floating toolbar? And what kind of help should it have?”
“Does it need help?” asked Mendel. “Does not the Talmud say that we should study? Let us write documentation that scholars can pour over and discuss at length.”
But Moshe still wasn’t satisfied. “What happens if Yussel and Shandel have another baby? How does Mordcha, the rabbi’s best student, make note of that?”
“Everyone knows what he does,” answered Avram. “He writes it down on a piece of paper.”
“Which he then uses to wrap fish,” added Mendel.
“Yes, but what will he do when our system is complete?” Everyone agreed that this was a very good question.
It didn’t take Shmul long to come up with an answer. “He’ll turn on his computer, enter our database, and type in the name of the new baby.”
“But how will the database know that Yussel and Shandel are the parents?”
“Don’t be ridiculous,” said Avram. “Chelm is a small village. Everyone knows everyone else. When there’s a new baby, how can someone not know the parents?”
“How do people know?” asked Mendel.
“That’s easy,” Avram answered. “Before the baby is born, they can tell by looking at the father. Why can’t our program do the same?”
“Because a computer doesn’t have eyes.”
“Ah!,” cried Shmul. “The computer doesn’t have eyes, but Mordcha does, and Mordcha can tell the computer everything he sees. And if he says ‘Yussel looks very happy’ one day, and ‘There’s a new baby in town’ on the next, the program will figure it out.”
Mendel considered this. “Perhaps, but I don’t like depending on Mordcha telling the computer everything he sees. If he forgets to tell the computer that he saw the rabbi eat, will the program think it’s Yom Kippur? It would be better if we write a query routine that will help Mordcha find a family. After all, are we not programmers? Mordcha could run the query from the main menu, and that will bring him to a view of Yussel and Shandel’s family.”
“Will he be able to enter a new baby from this view?” asked Moshe.
“Of course not,” said Mendel. “For that, he’d need to go to the New Baby form, which he can get to from the main menu. So after he’s done a query and found Yussel and Shandel, he can click a button to go back to the main menu. From there, he can go to any part of the database he wants.”
Moshe suspected there was something flawed here, and after a few minutes he figured out what. “But if he leaves the query and goes back to the main menu, how will the computer know that the new baby belongs to Yussel and Shandel?”
This question so greatly troubled the programmers of Chelm that Avram was moved to ask “Does Maimonides say anything about this?”
“Ach,” cried Moshe. “Who cares about Maimonides–he used COBOL.”
Just then Shmul found the solution. “It’s simplicity itself! We’ll put a button on the New Baby form that will let Mordcha do a query on the family table. When he finds Yussel and Shandel, he can press the button that will bring him back to the main menu, and from there return to the New Baby form.”
“That’s brilliant!” cried Moshe. Then he thought about it. “But when he goes back to the New Baby form, will the computer know that Yussel and Shandel are the parents?”
“Of course not. But he can always push the query button again.”
Moshe wasn’t too sure. “What if he doesn’t like being part of an infinite loop?”
“Let him complain. He’s studying to be a rabbi, isn’t he? He needs to learn about the infinite.”
“I have a better idea,” interjected Moshe. “We can simply make all the new babies belong to Yussel and Shandel.”
The programmers all agreed that this was the best plan yet. They were congratulating themselves when Avram had a thought. “Oy vey! There’s something we overlooked. What will Mordcha wrap his fish in?”
Moshe laughed. “But that’s so simple. We’ll add an option for him to print a special report.”