Sunday, April 15, 2007

Looking Back over 20 Years

This article appears in slightly different form in the March/April 2007 issue of IEEE Micro © 2007 IEEE.

With this issue I start my twenty-first year writing the Micro Review column. Microsoft Windows, the World Wide Web, Java, the Y2K flap, the dotcom bubble, and a new wave of globalization all happened on my watch (not to mention the Loma Prieta earthquake, the Oakland/Berkeley Hills fire, 9/11, the Afghanistan and Iraq wars, the Indian Ocean Tsunami, and Hurricane Katrina).

Quite a lot has changed in our industry since my April 1987 column, in which I reviewed Motorola's manual for the MC68851 paged memory management unit and Danny Hillis's book about the connection machine. That year I reviewed Michael Slater's marvelous book, Microprocessor-Based Design and Maurice Bach's The Design of the Unix Operating System. I also looked at Microsoft Word 3.0.1 (for the Macintosh, of course) and an implementation of Donald Knuth's TeX.

Microprocessors and Computer Architecture 

Over the years I have branched in many directions, but I continue to focus on Micro's core themes. I reviewed the long awaited Hennessy and Patterson book on computer architecture in 1990 and their sequel on hardware/software integration in 1994. I reviewed Mike Johnson's Superscalar Microprocessor Design in 1991. I have reviewed books on cache design, busses, spread spectrum, high-speed digital circuits, logical design, the Pentium architecture, the PowerPC architecture, and more. Especially notable were Muhammad Ali Mazidi's coffee table sized book on the 80x86 architecture and Clive Maxfield's quirky Bebop to the Boolean Boogie (Micro Review Sep/Oct 1995) and its sequel, BeBop Bytes Back (Micro Review Jul/Aug 1997).

Computers and Consciousness

A consistent theme of my columns over the years has been the human mind and how it works -- especially when the workings turn out to be similar to computer architectures. In 1988 I reviewed Johnson-Laird's The Computer and the Mind. This got me into trouble with my friend Bernie Baars, because I never did review his much better book on the same subject, A Cognitive Theory of Consciousness. In subsequent years I reviewed Penrose's The Emperor's New Mind, Dennett's Consciousness Explained, Dyson's Darwin among the Machines, and, in 2004, Dan Lloyd's Radiant Cool -- A Novel Theory of Consciousness

If we broaden the subject to include decentralization and self-organizing behavior, we can include my Nov/Dec 1994 column, in which I reviewed Michael Resnick's Turtles, Termites and Traffic Jams -- Explorations in Massively Parallel Microworlds. In that book Resnick puts forth the general theory that Systems don't need a controlling intelligence to achieve purposeful behavior. No leader directs birds to fly in formation or ants to form trails from their nests to food sources. Instead, large numbers of independent entities, each following simple rules, produce the large scale patterns that we observe. This is also, essentially, Dennett's idea of how consciousness works. It is also the theme of Michael Crichton's Prey, which I reviewed in my May/Jun 2003 column.

Globalization

In 1988 I took issue with a blurb on the back of a book about WordPerfect. The blurb quoted Andy Rooney as saying that the author had written the first book about computer software that does not appear to have been translated from the Japanese. I said, somewhat pompously, that the situation that Andy Rooney mocks does not result from an inability of Japanese speakers to express themselves but from a general unwillingness of Americans to learn the language of a people whose products they crave insatiably. I'm mellower now, but Andy Rooney hasn't changed. 

China, India, and 9/11 have placed American concerns about Japan on the back burner, but in 1990 I reviewed The Fifth Generation Fallacy, a book about the difficulties of processing Japanese characters using computers. Moore's law has made that problem vanish too. Language processing that seemed out of reach in 1990 is commonplace today.

I began to focus on globalization in 2005 with the publication of Tom Friedman's The World Is Flat. Since then I have reviewed several more books on the subject. My Job Went to India by Chad Fowler, which I reviewed in my Jan/Feb 2006 column looks at how individual workers can remain valuable to employers. In my Jan/Feb 2007 column, I reviewed Joseph Stiglitz's Making Globalization Work, which authoritatively identifies the essential problems of globalization and shows how to solve them.

Windows and Its Challengers

In the early days of my column, the software I reviewed, like my consulting business, was largely based on the Apple Macintosh. Microsoft Windows 3.1 tipped the balance in the early 1990s, and by the time Windows 95 came on the scene, most of the books and software I saw were PC-related.

My 1995 columns are full of books about the Internet and browsers. My favorite is Lamont Wood's The Net After Dark, which focuses on the fun side of the Internet. Netscape and the World Wide Web nearly derailed the PC train, but Microsoft took decisive action to avert the Netscape challenge. Courts later found some of that action to have been illegal, but it had the desired effect. In my Jan/Feb 1996 column I reviewed Bill Gates's The Road Ahead, in which he asserts Microsoft's intention to dominate the information superhighway. 

With Netscape subdued, another challenge to Microsoft arose. I devoted my May/Jun 1996 column to Java, which, with the advent of application servers, resulted in a platform to rival Windows. At the time, I contrasted Java with C++ and predicted that the Java and Microsoft lines would look more and more alike as time went on. Java has done very well since 1996, and Microsoft has moved strongly in the same direction with .NET. I have reviewed many books on Java and .NET, but my favorite is Josh Bloch's Effective Java, which I reviewed in my Jul/Aug 2002 column. I met Bloch at JavaOne in 2006, and he told me that sales of his book increased sharply after my review. I suspect that's just a coincidence, but I'm glad the book is doing well. It's essential reading for anybody who develops Java-based systems.

Of course, Microsoft's first important battle was the original DOS vs CP/M affair. In my Mar/Apr 2005 column I reviewed Harold Evans book They Made America -- From the Steam Engine to the Search Engine: Two Centuries of Innovation. The book is a collection of short essays about innovators and innovation. The one that drew me to the book describes the way Bill Gates outmaneuvered the brilliant, talented, idealistic Gary Kildall to freeze CP/M out of the IBM PC picture.

Programmers and Their Tools

Another major theme of my columns has been computer programming. I have looked at tools like the Brief editor, Visual SlickEdit, True Basic, the Microsoft and Borland IDEs for C++, the MKS Toolkit, UML, design patterns, the open source movement, Perl, Ruby, regular expressions, and Rails. I have reviewed books like Debugging, Code Complete, The Pragmatic Programmer, Literate Programming, The Cathedral and the Bazaar, Programming Pearls, and The Practice of Programming

Several publishers produce excellent books for programmers, but the undisputed leader is O'Reilly. In my Jul/Aug 1989 column, I reviewed Managing Projects with Make by Steve Talbott, one of the Unix in a Nutshell series. I have reviewed dozens of O'Reilly books since then, but my most recent favorites are the Head First series. My thirteen year old daughter is learning to program using Head First Java by Sierra and Bates. The depth of her understanding of the topics she has read about astonishes me.

In my Nov/Dec 1999 column, I reviewed Kent Beck's Extreme Programming Explained, the first of many books about that phenomenon. Extreme programming is part of a larger topic called agile programming. These methodologies try to strip away a lot of bureaucratic overhead. They follow a simple pattern of asking customers for requirements in small bites called use cases, then quickly implementing bits of software that satisfy the use cases. Agile techniques work well for small projects, but many large firms are finding ways to apply them to parts of large projects. 

The theme of programming is close to the themes of usability, interaction design, and project management, all of which have appeared many times in my columns. 

Usability and Interaction Design

In my Jan/Feb 1993 column I reviewed the second edition of Paul Heckel's The Elements of Friendly Software Design. My old friend, the late Rudolph Langer, then editor-in-chief of Sybex, was very fond of this book, which had gone out of print. He encouraged Heckel to republish it with Sybex. I'm not aware of a more recent edition, but the book's principles go beyond the details of particular software packages. I haven't seen another book that looks at interface design quite the way this one does. It is still worth reading today.   

In my May/Jun 1992 column I reviewed Tog on Interface by Apple Computer's human interface evangelist, Bruce "Tog" Tognazzini. Tog applied the Jungian I-E and N-S axes (popularized by Isabel Meyers-Briggs) to interface design. He pointed out that a small cadre of IN designers are creating interfaces for the great multitude of ES users. In The Humane Interface by Jef Raskin and The Inmates Are Running the Asylum by Alan Cooper, both of which I reviewed in 2000, the authors make the same point in different ways. Several years later, Cooper followed his observations with a detailed explanation of how to perform interaction design. It appears in his book About Face 2.0, which I reviewed in my May/Jun 2006 column.

Even more detailed and academic books on usability are User and Task Analysis for Interface Design by Hackos and Redish (Micro Review Mar/Apr 1998), Dynamics in Document Design by Karen Schriver (Micro Review Jul/Aug 1999), and the imposing Contextual Design by Hugh Beyer and Karen Holtzblatt, (Micro Review Jan/Feb 2001). 

Project Management

More than thirty years ago, long before I was a columnist, I read Gerald Weinberg's The Psychology of Computer Programming, where many ideas we take for granted today first appeared as startling innovations. For example, Weinberg is responsible for the concepts of egoless programming and code walkthroughs. Nowadays Weinberg frequently teams up with the wonderful small publisher Dorset House to produce pithy books on technical leadership. He has become a guru in this area, so that many Dorset books by other authors have the Weinberg look and feel. One of my favorites is Waltzing With Bears: Managing Risk on Software Projects by Tom DeMarco and Timothy Lister, which I reviewed in my Jul/Aug 2003 column. Failure to manage risks is one of the biggest reasons that software projects cost more and deliver less than their planners imagined that they would.

Another excellent Dorset book is Project Retrospectives: A Handbook for Team Reviews by Norman R Kerth, which I reviewed in my May/Jun 2001 column. Disdaining the usual 2-hour project post-mortem held in a conference room, Kerth suggests spending a few days at a resort (or at least off-site). The idea is to let people feel safe enough to speak their minds and then provide enough time to explore the issues that arise.

Yet another wonderful book about managing software projects is Tom DeMarco's Deadline: A Novel About Project Management, which I reviewed in my May/Jun 2000 column. Every bad management practice that has ever been inflicted on you is in this book, and DeMarco turns them all into aphorisms.

My Favorites

In writing a regular column, I tell you about many things that will soon be unimportant. Sometimes, however, I write about something that gives me, and I hope you, a special feeling. Here, in chronological order, is a list of reviews that I look back on with special pride:
  • Consciousness Explained by Daniel Dennett (Mar/Apr 1992)
  • The Man Who Knew Infinity (about S. Ramanujan) by Robert Kanigel (Mar/Apr 1993)
  • Code Complete by Steve McConnell (Jul/Aug 1993)
  • Digital Mantras by Steven R Holtzman (Mar/Apr 1995)
  • Java (May/Jun 1996)
  • Only the Paranoid Survive by Andy Grove (Mar/Apr 1997)
  • Darwin Among the Machines by George B Dyson (Jul/Aug 1997)
  • Extreme Programming Explained by Kent Beck (Nov/Dec 1999)
  • The Pragmatic Programmer: From Journeyman to Master by Hunt and Thomas (Jan/Feb 2000)
  • Bill Joy's warning from the April 2000 Wired Magazine (Jul/Aug 2000)
  • The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper (Sep/Oct 2000)
  • Effective Java by Joshua Bloch (Jul/Aug 2002)
  • Me++: The Cyborg Self and the Networked City by William Mitchell (Nov/Dec 2003)
  • The World Is Flat: A Brief History of the Twenty-First Century by Tom Friedman (May/Jun 2005)
  • The Singularity is Near: When Humans Transcend Biology by Ray Kurzweil (Jan/Feb 2006)