« May 2004 | Main | July 2004 »

June 2004 Archives

June 1, 2004

Peopleware, Metrics, and Second-Order Effects

I bought a copy of the famous "Peopleware" book by DeMarco and Lister last week in a second-hand store. I haven't been disappointed in it either. Anyway, in one of the chapters, they cite the infamous Glib's Law:

Anything you need to quantify can be measured in some way that is superior to not measuring it at all.

Some time back, "Jason Yip" came up with a corollary to this which got dubbed (by others) as Yip's Law:

Anything can be made measurable in a way that is inferior to not measuring it at all

This lovely piece of sarcasm is 100% accurate. As DeMarco and Lister points out, Glib's Law does not say that anything can be measured in a way that is cheap, easy, or cost-effective. Typically, for something nebulous like productivity, what you actually end up measuring are second-order effects1. Now, there isn't anything inherently wrong with this.

DeMarco and Lister make the very strong point that, for this measurements to be effective, they can not be given to management. This sits well with my experience. I, as an individual, can use impartial and incomplete metrics to highlight areas of weakness that I need to improve. Furthermore, I can do this without deliberately skewing the metric; after all, I know that the numbers aren't fundamentally important.

However, the instant these figures get into the hands of management, they become something used to measure my productivity. I will start to have incentives to ensure that the numbers trend in a positive fashion. In other words, in order to get a better performance review (and the subsequent financial rewards), I have a strong interest in optimising the numbers. This invariably has a strong negative effect on productivity (Lines of Code, anyone?).

This is a corollory to Yip's Law that I would like to add now:

Given the choice between not measuring and using an ineffectual measurement, management will always chose the ineffectual measurement, as long as it is cheap

The problem here is that managing by second-order effects is a management anti-pattern. People will optimise the second-order effect at the cost of the primary effect you are really interested in, and this will have serious negative effects. Using the Lines of Code example, developers start cutting-and-pasting large chunks of code rather than simply calling a method; this, in turn, causes defects to reproduce throughout the system2, which lowers productivity because of the need to correct this. However, the impact of this on productivity can be hidden simply be cutting-and-pasting more code. :)

----

1 A second-order effect is a symptom, not a cause. Managing via second-order effects is like placing a person with a fever due to the 'flu into air-conditioning (or an ice-bath) to bring their temperature down.

2 I'm really bad for cutting-and-pasting code. Whenever I do it, there will invariably be a syntax error that will prevent the code from compiling. Over the years, I've become convinced that this is a self-defence trick being played by my sub-concious. ;)

June 2, 2004

Object Thinking

It's not every day that reading a book teaches you a cool new word for yourself. Object Thinking, by David West, managed to show me that I am a hermeneutic thinker.

Continue reading "Object Thinking" »

June 4, 2004

An acid test for "Best Practices"

Dale Emery proposes a simple test to see if a best practice really is.

Continue reading "An acid test for "Best Practices"" »

June 8, 2004

Sun Developer Day Review

As I said earlier, I went to the Sun Developer Day in Sydney today. Overall, well worth the price of admission. Heck, I'd have paid double. ;)

Continue reading "Sun Developer Day Review" »

Annotation question answered

I've cleared up a question I didn't get answered at the Developer Day; the syntax for using annotations.

Continue reading "Annotation question answered" »

June 9, 2004

How not to comment code

I've often encountered the attitude that code or scripts should be commented to the extent that someone unfamiliar with the language being used can understand what's going on. I most recently encountered this with a set of Ant build scripts I had developed.

Doing this would be bad.

Continue reading "How not to comment code" »

June 10, 2004

/** no comment */

Chris Justus managed to totally miss my point. He assumes that I was advocating for crappy uncommented code. That is not the case.

Continue reading "/** no comment */" »

Commenting example

In response to Chris Justus again, here's how I'd comment his example.

Continue reading "Commenting example" »

Another Sun Dev Day Review

Steve Mactaggart reviews the Melbourne Sun Developer Day. Looks like his thoughts were similar to mine

Continue reading "Another Sun Dev Day Review" »

A feature that I would like in Java 1.5 that's not there...

Looking back over the notes from the Dev Day I took, I was reminded of a feature that I would have liked to have seen in 1.5: named parameters.

Continue reading "A feature that I would like in Java 1.5 that's not there..." »

June 11, 2004

/** Still no comment */

Cedric takes exception to my earlier post;; another who didn't get what I was saying. I think that says a lot for my ability to explain ideas, uh?

Continue reading "/** Still no comment */" »

June 16, 2004

Why some web frameworks don't distinguish between GET and POST

aniel Hinojosa asks What the hell ever happened to doGet() and doPost?

Continue reading "Why some web frameworks don't distinguish between GET and POST" »

June 17, 2004

Circle/Ellipse Paradox... NOT!

There's a (somewhat controversial) design principle in object-oriented programming called the Liskov Substitution Principle. One of the classic examples is about Circles being Ellipses.

Continue reading "Circle/Ellipse Paradox... NOT!" »

June 18, 2004

Mixing <ant> and <subant> leads to confusion...

Update: It's not a bug, it's a feature! Seriously. ;) It turns out that the <ant> task effectively sets the basedir property as a user-property, which means that it can't be changed. User-properties are propogated through regardless of the inheritAll flag. The doco could have been clearer, but that's life.

The easy work around: don't use the dir attribute to locate the file, actually specify it in full (see the bug report for the example).

----

I lodged a bug report with Apache Ant today; first one in a long while. It turns out the the <ant> and <subant> tasks aren't entirely compatible.

Continue reading "Mixing <ant> and <subant> leads to confusion..." »

Remote Exceptions and the LSP

Why did I rabbit on about the Liskov Substitution Principle anyway? Because the infamous RemoteException is an example of the issue.

Continue reading "Remote Exceptions and the LSP" »

June 22, 2004

Grades of licenses for cars

Saw this article in the Sydney Morning Herald. Bloody excellent idea.

Continue reading "Grades of licenses for cars" »

June 29, 2004

First impressions of Maven

I'm down with the 'flu today, so I thought I'd do something to take my mind off it and check out Maven. I've been somewhat critical of Maven in the past, but only tentatively as I've never really played with it. So I thought I'd rectify that.

Continue reading "First impressions of Maven" »

Don't you hate it when your expectations crash?

I just discovered that Checkstyle doesn't (yet) support Java 1.5. I found myself shocked by this for some reason; the Checkstyle project is such an active and evolving one that I just didn't think they wouldn't have put in some 1.5 support yet.

Continue reading "Don't you hate it when your expectations crash?" »

June 30, 2004

Wow... Free Visual Studio versions

One of the great strengths of the Java community is the quality of the free (as in both speech and beer) development environments, Eclipse and NetBeans. Although Microsoft let you have the .NET SDK for free (as in beer), there was no free IDE. Until now.

Continue reading "Wow... Free Visual Studio versions" »

Controlling your log4j settings

Nick over at the System Mobile Web Log was having trouble with Log4J and his unit tests. Seems that he was getting the log4j.properties file from XDoclet, instead of the one he wanted.

Continue reading "Controlling your log4j settings" »

About June 2004

This page contains all entries posted to Software is too expensive to build cheaply... in June 2004. They are listed from oldest to newest.

May 2004 is the previous archive.

July 2004 is the next archive.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 3.35