Another year has come and gone and economically, it has been a tough one for almost everyone. A new administration will be taking over in the United States in late January of 2009 and we can only hope that this change will help right the list of the world economy. A massive downturn is also expected in the IT field, layoffs numbering in the thousands have already been announced at several major companies. Yet within this darkest of clouds, there is still reason for optimism.
IT is now such an integral part of how business is done that it is literally easier to go without offices and other physical structures than it is to go without the equipment of the IT component. All businesses will be looking to cut the costs of doing business and some of the latest technologies hold the promise of helping to do that. Ironically, this downturn has also led to the retention of systems that otherwise were scheduled to be phased out. This means that skills needed to operate legacy systems will be kept operating a little bit longer. Although to be honest I wouldn't consider it to be much in the area of job security.
What I present here is my list of best books of the year. It is important to note that one of the books mentioned here was published in 2007 but I did not encounter it until 2008. I consider the book to be so valuable that I am willing to stretch the definition of 2008 so that it will be included.
In software development, the soft stuff is generally the hardest stuff. Many people consider technical knowledge to be the "hard" skills and people skills to be "soft" skills. The process of managing a large and diverse group of people doing the various tasks needed to create a piece of software is the most difficult of tasks. Since it deals with managing people with their egos, fears and foibles, doing it right is the ultimate of soft skills. Two of my best books of the year deal with this problem.
The first is "Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior" by the Principles of the Atlantic Systems Guild. It contains a list of behaviors found in projects, some of which will make them a joy and others that will make them a terror. Some of the titles are "Project Sluts", "Soviet Style", "Dead Fish" and my favorite "Miss Manners." In this one, the authors point out that if the social structure of the organization is such that every item of work must always be commented on with a "Good job" then the result is mediocrity. To be successful people must be able to give and receive constructive criticism.
One of the pioneers in many areas of software development has written another masterpiece that should be required reading of everyone working in software development. The book "Perfect Software and other illusions about testing" by Gerald Weinberg pulls some of the nastier realities about software testing out into the critical glare of scrutiny. In many ways, software testing reminds me of the laws of thermodynamics, where no matter how efficient you are, complete efficiency is impossible. Modern software is so complex that nothing even close to exhaustive testing is possible. The only hope that anyone has to do an effective job in testing is to first recognize the limits and then to adopt a testing plan that does the best that can be done. There is no one better at describing this process than Weinberg.
Donald Knuth has achieved a great deal of respect and admiration for his authoring of the three-volume set "The Art of Computer Programming." If there is any set of books that can be considered to contain knowledge that will guarantee success in computer science if you can acquire it, the ACP set by Knuth is it. In 2008, the first section of volume 4, "Introduction to Combinatorial Algorithms and Boolean Functions" was published. Knuth's plan is to publish a sequence of fascicles that together will comprise the later volumes of the series. In this book, Knuth maintains the high standards that have made his earlier volumes items that no computer scientist can do without.
The IT trade literature is full of articles about the skills that IT workers need to learn in order to stay employed and advance up the hierarchical chain. One of the skills that are constantly mentioned is the ability to understand the business side of the organization. One of the best books in this area is "Metrics-Driven Enterprise Software Development" by Subhajit Datta. If you can't measure it, you cannot manage it and that means you have to have measuring tools that are both understandable and applicable. In a field as inherently uncertain as software development, finding such tools is not an easy task; Fortunately, Datta has done much of that work for you.
Software development is but one type of project management, so managers of IT projects must possess a great deal of knowledge regarding the principles of management. The effective manager is able to devise reasonable standards for all the components of a large project. In the book "Fundamentals of Effective Program Management: A Process Approach Based on the Global Standard", author Dr. Paul Sanghera puts forward detailed explanations of the nine main components of a project that must be managed. They are, "Integration", "Scope", "Time", "Cost", "Quality", "Human Resource", "Communication", "Risk" and "Procurement." While some of these components have more applicability to IT than others, good management tactics are effective independent of what the product is. Therefore, whatever the section you read, you will find management knowledge of value.
The last book that I mention contains very little material on computer science. It is "Strange Attractors: Poems of Love and Mathematics" edited by Sarah Glaz and JoAnne Growney. Although many people will argue to the contrary, an elegant program or the documentation of a program is a work of literary merit. People who work in software development should spend more time reading material where words are used to express abstract concepts for that is what software is. If people were to do this, then the level of understandability of programs and their documentation will improve. This book is a collection of poetry by everyone from the masters to people aspiring to be one. It is good for the soul and although some people firmly believe that programmers have no soul that is a myth perpetuated by the gremlins that are always active in making the lives of programmers miserable.
Books mentioned in this article in order of their appearance
"Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior", by Tom DeMarco, Peter Hruschka, Tim Lister, Steve McMenamin, James Robertson and Suzanne Robertson, Dorset House Publishing, New York, NY, 2008. ISBN 978-0-932633-67-5.
"Perfect Software and other illusions about testing", by Gerald Weinberg, Dorset House Publishing, New York, NY, 2008. ISBN 978-0-932633-69-9.
"The Art of Computer Programming: Volume 4 Fascicle 0, Introduction to Combinatorial Algorithms and Boolean Functions", by Donald Knuth, Addison-Wesley, Boston, Massachusetts, 2008. ISBN 978-0-321-53496-5.
"Metrics-Driven Enterprise Software Development" Effectively Meeting Evolving Business Needs", by Subhajit Datta, J. Ross Publishing, Fort Lauderdale, Florida, 2007. ISBN 978-1-932159-64-6.
"Fundamentals of Effective Program Management: A Process Approach Based on the Global Standard", by Dr. Paul Sanghera, J. Ross Publishing, Fort Lauderdale, Florida, 2008. ISBN 978-1-932-159-69-1.
"Strange Attractors: Poems of Love and Mathematics", edited by Sarah Glaz & JoAnne Growney, AK Peters, Wellesley, Massachusetts, 2008. ISBN 978-1-56881-341-7.
Charles Ashbacher: "My Best Books Of the Year 2008", in Journal of Object Technology, vol. 8, no. 1, January-February, pp 129-131 http://www.jot.fm/books/review23/