Stone Age Programming

by John Wyatt
copyright 2002

Oog looked at the stone he had shaped – it was a good stone. A soft piece of limestone with sharp corners where he wanted them and soft curves where they belonged. Oog was proud of his stone, his best effort yet. Proudly, Oog took his stone to the Clan Woman, who was collecting stones to make the clan fire pit.

“Oog make good stone.” Oog’s leathery hand extended the finely crafted stone. Clan Woman hefted the rock and scowled.

“Oog, I need big granite chucks to make fire pit. This no good! This not fit! Also, you late by hours, and this not even right kind of rock!”

Oog was incensed! How dare the clan woman rebuff his fine effort! While it was true that she had asked for rocks to make the fire pit, Oog knew that his rock – his work of art – was better than any rock found on the ground! How dare she belittle his fine artistic talent! How dare she tell him how quickly to create art! Oog knew that maintaining his integrity as an artist was more important than Clan Woman’s imagined needs.

“Make it fit!” Oog shouted as he stormed away.

Oog’s spirit was reincarnated as a computer programmer. As a programmer, he loved crafting finely tuned programs. Sometimes, when he did not have the time to write the code himself, he would buy a program; although he always knew that he could have coded it better himself. Oog knew that a well written program was always in need and that his customers would appreciate the time he spent ensuring that each line of code had just the right amount of elegance.

Clan Woman was reincarnated as Oog’s project manager in the Information Systems department. Clan Woman was concerned about meeting the needs of the company – on time and within budget. However, Oog’s programs remained 90% done for months at a stretch, and many of his programs were merely solutions that were looking for a problem to solve. Clan Woman tried to explain to Oog that computer science is not the same thing as software engineering, and that discipline was needed to ensure that the solution fit the problem, but Oog never seemed to get the point. She talked about the budget and the schedule, but Oog only replied that programming was an art and that it was not possible to put a time constraint on art.

One day, Oog presented clan woman with a finely crafted database. It was true that the company already had a database, but this database was far better because he had coded it with the right amount of elegance. Oog explained that this was the ideal solution to the company’s information problems. Clan Woman, fearful of angering Oog, installed the database onto the computer network.

Installing the new database required buying a new server, since the new program could not coexist with the old database. All of the information had to be transferred manually from the old database to the new one, since Oog had not written a data converter. This caused numerous transcription errors, which Oog knew were entirely the fault of the underpaid transcribers that had been hired. The new program also had a plethora of annoying defects.

“The program crashes when I do this!” one person complained to Oog.

“Then don’t do that!” Oog replied.

“I don’t understand this user interface!” complained another.

“I don’t see what’s so confusing about it.” Oog commented. “It looks perfectly simple to me.”

“This feature doesn’t work right!” shouted a third.

“That’s because you didn’t install yesterday afternoon’s software patch!” Oog retorted. “You should have asked me if I had fixed that!”

Many programmers are like Oog – carefully crafting software while naively believing that computer science is the same thing as software engineering. Like Oog, they create solutions where there are no problems, or present solutions without analyzing the problem. Sometimes, solutions are presented before problems are even identified. They tell Clan Women that the program is “90% done” throughout half of the project, and then deny that software schedules are even possible. Oogs view software engineering and systems engineering as simply the act of writing larger and more elegant programs – rather than defining the problem and designing the solution. As a result, many projects begin with “we need this database” and end with “why didn’t your system work?”

Today, Information Systems is often presented with solutions – Oog’s finely crafted stones – and simply instructed to implement them. Oog’s approach to engineering is oxymoronic – implementing a computer program without defining the problem or designing the solution. The answer is to establish the discipline of software and systems engineering, and forcing the Oogs of the world to act as Clan Women; then perhaps they will see the error of their ways and advance out of the stone age of programming.