Where are the Writers?

by Charles Miller on July 8, 2003

Joseph Ottinger asks Where are the Writers?

...It seems like everyone wants to write very focused, pigeon-holed articles about this tiny behaviour. Nobody writes anything sweeping, nothing is submitted that actually shows a lot of organized thought. I'm impressed (occasionally) in fits and starts, but nothing really seems to stand out and make me think, "Now this article is going to be talked about for a long time."

The industry has had some of it, to be sure - Fred Brooks, and Dyjkstra, McConnell as well… but those are old works, from the industry's infancy. Java has nothing on that stature, unless perhaps it's the GoF book - but even there you're talking about something that's fairly hoary with age.

Well, to start with, all the examples in the GoF book are in C++ or Smalltalk, so Java can't really adopt that either.

You very rarely see a lasting work of ”stature” in computing that is tied to a particular programming language. In The Mythical Man Month Brooks' subject was writing a mainframe OS, but the book transcended that subject to be about the truths of development in general. Knuth invented MIX specifically to make The Art of Computer Programming independent of any particular architecture.

There are books being written today on development methodologies and technologies that use Java for its example code. I've seen books on design patterns, OO architecture, genetic algorithms, compiler design and so on, all with Java code inside them. Think of AOP: a general programming technique with its most well-known implementations in Java.

Why then, don't all these nifty things percolate down to the pages of the Java Developers Journal?

The real answer is that the JDJ is a magazine for practitioners. It's the same reason that the books on the “Software Engineering” shelf in my bookshelf contain all the interesting stuff, while the Java shelf is full of useful but un-inspiring books on specific tools and APIs. Interesting movements in Computer Science end up in more general journals (I first read about AOP in the Communications of the ACM on a co-worker's desk), the JDJ attracts a more practical article.

This makes the rest of my essay largely pointless, and I'm not sure I even agree with it entirely myself. It's an alternate explanation, though.

Expansive, inspiring, sweeping developments in the field of computer science just doesn't suit Java's character.

Java fits into a particular, closed programming niche. It is a practical language designed from the start to leverage existing technologies to solve certain problems. It was designed to be easy to pick up, to protect you against certain common coding mistakes, and to be friendly to migrating C++ programmers. The Java Virtual Machine was a pretty exciting deployment platform, but unlike its forefathers, the JVM is a black box: you have no real ability to alter the behaviour of the VM from inside the language, so when programming it is largely an irrelevance.

You won't find too many ground-breaking articles or books written about Java, because Java is not a ground-breaking language. Java was a language born into middle-age. It's solid, rather set in its ways, bloated here and there, but it doesn't throw wild parties or disturb the status-quo. It certainly doesn't fire the imagination.

You really have to blame its parents. It was a designer baby. When something is born as a product, rather than as a language in its own right, it is always going to be pushed into maturity a little faster than it is able to handle.

While Java itself is rather boring, its boringness has brought it a quick ubiquity. Its got a huge available range of libraries and tools, and its in the areas of these tools that Java as a platform continues to grow. Hence while Java does nothing to fire the imagination of the language purist, there is more than enough happening around Java in a practical sense to keep people interested. Which explains why there is an interest in writing, and reading articles about particular tools.

In addition, Java has been quickly working its way into the middleware world: Java's niche of being the COBOL replacement for the new century. And when I say niche, I must point out that this is abig niche. When viewed from the perspective of programmers employed, lines of code written and the direct influence on peoples lives from day to day over the last half century, COBOL is the elephant in the programmers' kitchen that everyone seems to try to ignore.

But in terms of advancing the art of computer programming, it's a niche nonetheless. The history of COBOL development has lied in advancing the art of COBOL, without appreciably much of that art making it beyond that barrier. When you're sitting in this niche, what you want out of your trade journal are not articles about the next big thing, but how to make better use of the thing you have: which leads us nicely back to Joseph's complaint.

Previously: The Importance of Dogfood

Next: Run while you still can