Skip to main content

Uncle Bob on going meta

Posted by daniel on September 3, 2003 at 5:35 AM PDT

It is natural to want to proceed from the concrete to abstractions. You want to make general statements about the world around you based on your observations. You do, however, need to keep in mind that your generalizations are based on a finite set of data points. As you continue to observe the world you have to note the cases that don't fit your model and ask whether you need to reexamine your model.

In his first java.net weblog, Robert C. Martin (Uncle Bob), writes about the problems with "going meta" in Aristotle's Error or Agile Smagile. He begins with an analysis of Aristotle's incorrect theories of motion that were demonstrably incorrect with the technology of the day. Bob then finds examples of going meta in our own discipline.

Aristotle keeps very good company, especially in software circles. Consider what happened to the ideas of Edsger Dijkstra. In the late 60's and early 70's Dijkstra came up with a set of rules for structuring software. These rules were called Structured Programming. Dijkstra's goal was to define a structure for programs that would allow those programs to be proved correct. He found that this was much easier to do if the use of goto was restricted to implementing if-then-else, while, and do-while structures.

Dijkstra was not trying to find a set of rules that make software better in terms of maintenance, or flexibility. He was trying to find a set of rules that afforded formal provability. And yet, almost immediately, the industry twisted Dijkstra's intent to mean that programs were just better when structured, regardless of whether you tried to prove them correct or not.

You might appreciate that Bob resists the tempation of going meta about going meta. As an aside, I have learned a lot from Bob these past few years. My recent article Extreme Teaching: Introducing Objects uses the Fitnesse framework that Bob and his son Micah open sourced. I spent some time in the source code, not to alter it but to learn from it. (Oh, that's how you mock an object).

Other featured Weblogs today include Simon Brown's entry Using another painter's brushes. Simon asks what sort of input you get at work in choosing your own development environment. In The Coffee Grinder, Mason Glaves shares a question used in his company's hiring process. Given the code:

Object bar = new Object() {
  public void foo() {
    System.out.println(“foo method”);
  }
};

How do you call the foo method on the bar object? His presentation of this and other questions has spurred an interesting discussion in the talkback section to his entry.

In the Also today section we link to several resources on JSR 215. This Java Specification Request is designed to open up the community process. You have until Monday to comment on the proposal. Also, take a moment to visit the Javapedia page on JavaWebStart. Are you reconsidering using this technology to deploy your Java applications?

From the Java Today News Page, news editor Steve Mallett, has gathered the following News Headlines .

Registered users can submit news items using our submission form. All submissions go through an editorial review before being posted to the site. You can also subscribe to the java.net News RSS feed.

This blog is delivered weekdays as the Java Today RSS feed. Once this page is no longer featured as the front page of href="http://today.java.net"> Java Today it will be archived at href="http://today.java.net/today/archive/index_09032003.html">
http://today.java.net/today/archive/index_09032003.html. You can
access other past issues by changing the address appropriately.