Mittwoch, 18. August 2010

Uncle Bob calls for a silver bullet

Robert C. Martin, one of the agile manifesto signers (a.k.a. Uncle Bob), argues in his blog post "Software Calculus: The Missing Abstraction" that one must find a new abstraction on how to approach programming.

Something should be found that is like the invention of calculus for mathematics that yielded not only huge advancements in mathematics but also in physics and the start of engineering practices as we know them today.

Uncle Bob regards programming from the aspect of managing sequence, selection and iteration. Languages and notations invented for fifty years now are meant to organize these three ways of processing data. Martin points out that structured programming, 4GLs or database scripts do not make the cut of the "all curing abstraction". The author's frustration that the "software calculus" was not found yet is apparent as he says "we simply cannot keep piling complexity upon complexity". There must come an "organizing principle that revamps the very foundations of the way we think about software".

In the essay "No silver bullet" the veteran engineer Fred P. Brooks quite convincingly showed that complexity is an essential part of software projects and not an accidental one that can just be dealt with by a brilliant idea that makes all complexity go away. Has uncle Bob forgotten that no silver bullet idea will kill the werewolf that seems to be accidentally everywhere you find programming tasks, i.e. where essential complexity lives?

Some commentators of the blog seem to be less oblivious and either refute this idea completely or believe that it will be a couple of good ideas that will bring down the software werewolf.

The real question is I think in programming projects to deal with complexity on a technical level effectively.
The existing technical complexity of computer devices and its software can be mitigated but not eradicated completely as they are to some extent essential in the life span of a computer system. The domain complexity such as how an insurance contract works for instance in all its nuances and special cases is as well an essential complexity of a software system and adds to its technical complexity.
On top of these essential parts of software complexity are the more accidental ones such as the human factor of using and maintaining the software system. But it can be argued as humans will create, use and maintain software for years to come that the human part is somewhat as well essential.

One of the commentators shares my above view I think by asking uncle Bob if he forgot about Dijkstra's philosopher stone referencing to a talk by the Dutch scientist. The talk shows that computer science as a field is tempted to undergo quests for a "philosopher stone" and an "elixir" much like alchemists in medieval times. The stone gives the perfect programming language like the ultimate abstraction that uncle Bob calls for while the elixir is a programming dialect that enables humans to program in their natural language with ease (The talk dates back to the beginning of the 80s with several nice references to the cold war such as the USSR prohibited their high school instructors to teach BASIC since it is seemed such a bad abstraction).

In 2010 who are the alchemists that are in search of the "philosopher stone" and the "elixir"?
I think SAP stated just a while ago that their SOA approach enables business people to easily implement their business processes and systems without programming. So far for the "elixir". The "stone" quest is perhaps undertaking by the MDA field or SOA evangelists and others that want to find the perfect methodology for programming.

PS: By the way Leibniz the other inventor of calculus thought that all scientific or philosophical discussions would stop by the 20th century and philosophers would just calculate the correct answer of all philosophical questions as there must be some perfect theory of everything that gives an algorithm to settle all questions forever.
Since Goedel and Turing we know that all complex theories have holes and are not "entscheidbar". Sometime ago I read an article by Steven Hawking that pointed out physics with their quest for the theory of everything found similar holes as Goedel did in number theory in the physical laws that encompass our actions. That does not mean all bets are off in the real world as well as in software complexity reduction but there are certain limits that only silver bullets can overcome. The silver bullet is like the tooth fairy – a story for kids and sometimes for our foolish inner self.

Keine Kommentare:

Kommentar veröffentlichen