Sunday, August 26, 2001

Oracle, Extreme Programming, Project Management

This article appears in slightly different form in the July/August 2001 issue of IEEE Micro © 2001 IEEE.

This time I look at books that delve into how things work. One is an outstanding overview of a complex software package. The others deal with real projects and the lessons learned from them.

How Oracle Works

Oracle Essentials, 2ed by Rick Greenwald, Robert Stackowiak, and Jonathan Stern (O'Reilly, Sebastopol CA, 2001, 364pp, ISBN 0-596-00179-7,, $34.95)

I love books like this. I wish there were more of them. I spent over a year working with the Oracle server technology publications group and wrote some of the documentation that this book is based on. The few hours that I spent reading this book gave me a much better sense of all the pieces and how they fit together than I ever achieved reading or writing Oracle documentation.

The economics of the computer book business seem to favor books that cover a wide variety of features in a cursory way. Many books provide excellent task-oriented instructions for end users or even administrators, but give them little insight into the underlying structure and concepts.

The authors of Oracle Essentials follow a different path. They present a concise, coherent picture of the entire Oracle system. This picture does not cover every feature of Oracle, nor does it cover any feature in complete depth. The picture is broad enough and deep enough to give you a good understanding of the main structures, processes, and issues involved in planning for and deploying Oracle, developing and optimizing schemas and applications for it, and administering its use.

One of the hardest tasks in working with Oracle is understanding the kind of big picture that this book presents. Thousands of highly skilled software developers have worked on the system over a period of more than twenty years. Inevitably, layer upon layer of enhancements have distorted and obscured the clarity of the original design. Furthermore, the system is so large and complex that people who start to work with it usually join a group that specializes in one aspect of it. Even the oldtimers in the group may not know much about the rest of the system. And because they are comfortable in their corner of the product, they may not even consider it important to orient newcomers to the whole system.

The difficulty with this situation surfaces when different groups of specialists must work together to solve a common problem. Activities ranging from developing new versions of the product to designing new applications suffer from the inability of groups of specialists to understand one another's problems and issues. For that reason, I think this book will do as much good within the walls of Oracle Corporation as it will outside.

If you work with any aspect of Oracle, or if you'd just like to understand the ins and outs of an important complex technology, this book is a must. 

Project Lessons

Last time (Micro Review, May/June 2001), I wrote about project retrospectives. The three books I look at here don't arise out of formal retrospectives, but they do provide insights into real projects.

Roundtable on Project Management--A SHAPE Forum Dialogue, ed by James Bullock, Gerald M. Weinberg, and Marie Benesh (Dorset House, New York NY, 2001, 198pp, ISBN 0-932633-48-X,, $21.45)

Gerald Weinberg moderates the SHAPE (Software as a human activity, performed effectively) forum, an online discussion group. He charges subscribers $60.00 per year, which compensates him for the time he spends keeping the signal to noise ratio high. Weinberg has been working in this field for a long time. Dorset House has recently republished two of his classic books from the 1970s (The Psychology of Computer Programming and Introduction to General Systems Thinking) in silver anniversary editions. I recently reread parts of The Psychology of Computer Programming that seemed very radical to me when I first read them in 1971. As I look around at today's programmers, I can see what a large, beneficial effect that work has had.

This book arises from several SHAPE discussion threads on project management. The unifying theme is the analysis of a project that didn't go as well as its leader, a SHAPE subscriber, had hoped. The editors have distilled from the original threads the outline of a treatise on project management. The insights of 40 experts take you quickly through the entire process -- from getting started properly to drawing project and personal lessons when the project is complete.

The conversation moves briskly, and the insights are marvelous. I'm sure that experienced project managers will find much to like in this book. People who participated in the original threads will surely welcome the summary. For beginners, on the other hand, it may be too concise. If you're a project manager who finds this book tantalizing but unsatisfying, consider subscribing to SHAPE and lurking for a year.

In reading this conversation, I noticed that the participants take certain background information for granted. For example, if you haven't read Weinberg's The Secrets of Consulting (Dorset House, 1985), you probably have no idea who Levine the Genius Tailor was or how the Second Law of Pricing works. If you haven't learned about the Meyers-Briggs personality types, you probably have no idea what an NT is. Such shared parables, aphorisms, and classifications are more common in the liberal arts than in technical fields. In the long run they greatly increase the depth and efficiency of the dialog. The book's bibliography consists of only 17 items (4 by Weinberg), so it shouldn't be too hard to come up to speed.

Extreme Programming in Practice by James Newkirk and Robert C. Martin (Addison-Wesley, Boston MA, 2001, 224pp, ISBN 0-201-70937-6,, $29.99)

I have reviewed several books about extreme programming (XP) over the last year or so. XP is an iterative and incremental development technique. The widespread excitement over XP, given its completely egoless programming approach, is a good example of how far we have come in the 30 years since Weinberg's The Psychology of Computer Programming first appeared.

In this book the authors describe an actual small project from start to finish -- from exploration to lessons learned. They show the use cases, plans, time estimates, and source code listings. They take you through false starts, mistakes, testing, refactoring, misunderstandings between them and their customer, and all the warts of a real programming project.

Call me strange, but to me this book is like a good novel. It's a good story that's hard to put down, and when you're done reading it, you have a deeper understanding of the characters and situations that it explores. If you're using XP, or even if you're just considering it, I know you'll enjoy this book.

J2EE Technology in Practice by Rick Cattell, Jim Inscore, et al. (Addison-Wesley, Boston MA, 2001, 328pp, ISBN 0-201-75870-9,, $39.99)

In June I attended the JavaOne conference in San Francisco. J2EE (the Java 2 platform, enterprise edition) was the main focus of this year's conference. The organizers gave copies of this book to all 20,000+ attendees. If you're interested, you shouldn't have much trouble finding a copy to borrow.

This book is an excellent example of technical marketing. It first makes the business case for J2EE, then provides a useful summary of its components and how they fit together. The remainder of the book consists of case studies of 10 organizations that developed enterprise-scale applications around J2EE. The organizations wrote the case studies, which adds credibility to the business case. I find these accounts quite interesting. They lay out the problem area and give a clear, moderately detailed overview of the technical approaches the organizations took to designing and implementing the software. I especially like the sections on technology adoption and design patterns in AT&T Unisource's account of their CORE system for managing their voice network.

This isn't a deep book, but it contains enough detail to make it very helpful. You can learn a lot by reading about real projects. Unfortunately, organizations tend to keep such information to themselves. This book does a valuable service by making details of so many real world projects public. If you develop enterprise software, it's worth reading.