My Best Books of the Year 2003

An overview by Charles Ashbacher

space BOOKS

PDF Icon
PDF Version

In the past year, the major international news has of course been the war in Iraq. At this time, things do not look good, and there seems to be no scenario where American involvement can end soon. Inside the United States, another major conflict is brewing, one whose long term impact on American society may be greater than the war in Iraq. That conflict is outsourcing, where jobs in I.T. are moving out of the United States so fast that some observers are now raising national security concerns about how much development is being sent to countries other than the United States. Whether you favor it or not, the simple fact is that it is here to stay. The economic advantages of having high quality developers producing software for one tenth the cost of a U.S. programmer are too great to ever be prevented by legislation or labor organization.

If you are a U. S. developer and are facing the newfound challenges of global competition, the first thing to understand is that you do have advantages and much of your future is still under your control. In the U.S., your biggest advantage is your location. There are substantial quality control and security issues in outsourcing software, so if you can make yourself competitive in other ways, it is possible to win the competition. Keep in mind that many applications still cannot be exported outside the Unites States and Canada.
To keep yourself competitive, you must constantly be learning, and that demonstrates your second advantage. The educational system of the United States is still the envy of the world, as demonstrated by the large number of people who move here to study. The educational opportunities are there, you must have the drive and determination to take advantage of them. If you are not a U. S. developer, then your primary concerns are similar to those in the U. S., namely to keep your skills at a high level. All of the books on development that I have identified as the best of the year are those that I consider required reading for anyone wishing to maintain their personal, professional edge.

The most interesting book that I have read in the past year is Malware: Fighting Malicious Code, by Ed Skoudis and Lenny Zeltser and published by Prentice-Hall. It is both frightening and comforting to read about the enormous number of ways in which our systems are vulnerable. The ease with which some attacks can be launched against computer systems certainly raises concerns, but the solutions are often obvious. Most of the really damaging attacks were effective only against systems where the available and appropriate protection(s) had not yet been installed. From this, it is clear that some form of efficient patch management process is a sorely needed application. It is also comforting to understand that security workers are well-aware of the common modes of attack and have created appropriate defenses. If I were the manager of any group of computer users, I would mandate that they read a chapter of this book a week until done, even if it had to occur on company time.

The second edition of Death March, by Edward Yourdon and published by Prentice Hall is another of the “survivor” books. A software development project that stretches people beyond the point of exhaustion without concomitant rewards is the classic description of a death march. Yourdon emphasizes the social, political and psychological aspects of such projects, how they get started, how a “normal” project gets morphed into a death march and how to identify and survive them. He quite rightly places much of the blame for death march projects on developers, who optimistically believe that they can accomplish anything, if they want it bad enough. In many ways, as I read the book I started wondering if large numbers of death march projects are a necessary filter that helps drive the enormous technological strides that have been made. The situation of being pushed to the limit and sometimes succeeding but often failing is an act of technological Darwinism, and ferocious competition is where the most dramatic evolutionary change takes place.

Addison-Wesley has published the third edition of Martin Fowler’s now classic work, UML Distilled: A Brief Guide to the Shandard Object Modeling Language. What is surprising is that although the UML has grown since the previous editions were published, Fowler has resisted the temptation to add pages. In fact, the third edition is ten pages smaller than the second. However, there is no compromise in quality, as he once again captures what is the most significant subset of what is becoming a monstrosity.

Another Martin Fowler book that I consider essential is Patterns of Enterprise Application Development, published by Addison-Wesley. In simple terms, an enterprise application is a big project with a large number of semi-distinct parts that must work together. Put another way, the programs that run most of the world economy. The patterns in the book are generally “in the small” describing how one carries out details rather than answering the large architectural questions. Nevertheless, they are essential to making these hulks work, and anyone building an enterprise application can save themselves a lot of effort by looking up the solutions before creating their own.

Significant software development is all about taking and managing risks, and in the book, Waltzing With Bears: Managing Risk On Software Projects, by Tom DeMarco and Timothy Lister and published by Dorset House, the risks are catalogued and quantified. This is about making calculated gambles and keeping yourself and the project under control as it moves from the original idea to completion, and their mantra is, “If there is no risk in your next project, then don’t do it.” They also describe their free risk assessment tool, RISKOLOGY, which will help you organize and describe the risks unique to your project. Buy a copy and give it to your manager as a gift, even if you have to give it to yourself.

As an educator, I was particularly impressed by the book, Programming Challenges: The Programming Contest Training Manual, by Steven S. Skiena and Miguel A. Revilla. It is a list of programming problems that can be used to prepare students for programming contests. The solutions can be sent to a robot judge at for validation of the coded solution. In looking over the problems, I identified several that I will use as assignments the next time I teach a programming class. The problems are placed in several categories, including sorting, combinatorics, number theory, graph traversal, grid operations and geometry.

In the area of reference books, Addison-Wesley has published The Unicode Standard 4.0 by The Unicode Consortium. The name is self-explanatory and it is on my reference shelf right next to my dictionaries and other quick reference manuals. It is heavy enough to serve as exercise equipment, which emphasizes the thorough coverage of the standards. I consider it an essential component of my reference library and no academic library should be without it.

While most developers will not have a use for it, those who code mathematical formulas will find Mathematical Constants, by Steven R. Finch and published by Cambridge University Press to be invaluable. I was originally trained as a mathematician decades ago and have worked in many areas of the field. And yet, I was amazed at the number of constants there are. The coverage of each is brief, yet thorough and it is the first reference I consult when there is a problem coding mathematical formulas.

In closing, I would like to mention an event in technology. I consider the single greatest technological event of the last year to be the recent construction of one of the five fastest computers in the world, done by networking off the shelf computers produced by Apple. While the cost was still over five million US$, this does herald a new age in computing. It shows us that our abilities to have computers communicate for collaboration has grown to the extent that we can now consider many computers to be one. This indicates that distributed computing on demand is a feasible proposition, opening up many possibilities for collaborative production. I would be willing to bet that one or more of my best books for next year will be about programming clusters of computers to perform as a single entity.

Books mentioned in this article:

Malware: Fighting Malicious Code, by Ed Skoudis and Lenny Zeltser, Prentice Hall, Upper Saddle River, New Jersey, 2003. 647 pp., $44.99(paper). ISBN 0-13-101405-6.

Death March Second Edition, by Edward Yourdon, Prentice Hall, Upper Saddle River, New Jersey, 2003. 230 pp., $29.99(paper). ISBN 0-13143635-X.

Patterns of Enterprise Application Development, by Martin Fowler, Addison-Wesley, Boston, MA, 2003. 533 pp. $49.99(hardback). ISBN 0-321-12742-0.

UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition, by Martin Fowler, Addison-Wesley, Boston, MA, 2004. 175 pp., $34.99(paper). ISBN 0-321-19368-7.

Waltzing With Bears: Managing Risk On Software Projects, by Tom DeMarco and Timothy Lister, Dorset House, New York, New York, 2003. 208 pp., $33.95(paper). ISBN 0932633609.

Programming Challenges: The Programming Contest Training Manual, by Steven S. Skiena and Miguel A. Revilla, Springer-Verlag, New York, New York, 2003. 359 pp., $32.95. ISBN 0-387-00163-8.

The Unicode Standard 4.0, by the Unicode Consortium, Addison-Wesley, Boston, MA, 2003. 1462 pp., $74.99(bardbound). ISBN 0-321-18578-1.

Mathematical Constants, by Steven R. Finch, Cambridge University Press, New York, NY, 2003. 602 pp., $95.00(hardbound). ISBN 0-521-81805-2.

Cite this book review as follows: Charles Ashbacher: “My Best Books of the Year 2003”, in Journal of Object Technology, vol. 3, no. 1, January-February 2004, pages 177-180.