Contact Us



Thoughts on Software Development

This image is a reference to the Weblog RSS feed.

Michael Stiefel's thoughts and opinions on software development.

Send comments to

Monday, March 15, 2004

Over lunch the other day, a programmer mentioned that Gamma, et.al’s book Design Patterns revolutionized his thinking about software development. He asked me what programming books revolutionized my thinking. I agreed that Design Patterns changed the way I think about software, but I did not consider it revolutionary.

Thinking about this later, I realized that the most important books that I had read were not about the mechanics of programming itself, or about designing, or architecting software. They were about the cultural anthropology of programmers.

Cultural anthropology studies the patterns of human relationships in areas such as language, communication, socialization, relationships, and politics. Cultural anthropologists try to relate the organization of a person’s mind to their behavior. Books that helped me understand the programmer’s mind, and how it relates to their behavior have revolutionized the way I think about software development.

The success or failure of programming projects that I have been part of usually has less to do with the technology, than of the patterns of human relationships. One of my favorite examples is the software project whose architecture followed the corporate structure – the application groups designed the applications, the graphics group the graphics, the database group the database, and the user interface group the user interface. The resulting program was like feudal Europe; it did not work well together.

Here, in no particular order, are the books that have really influenced me.

The Mythical Man-Month by Frederick P. Brooks – pure wisdom about why software projects succeed or fail. See my review of it here.

The Psychology of Computer Programming by Gerald M. Weinberg – the first book that got me to see programming as a human activity, and why understanding human behavior is important to understanding how to build better software.

Both these books have been republished with new material. Get the latest editions.

Peopleware by Tom Demarco and Timothy Lister – a great book on the workplace and software teams. This is a book your supervisor should read as well. There is a second edition of the book, but I have not read it.

Donald E. Knuth wrote two essays that strongly influenced me. While dated, and I do not recommend them as strongly as the others, I feel obliged to mention them. The first, “Structured Programming with goto statements”, written in 1974, made me realize the importance of thinking about software structure, and not language constructs. The point of the article is not that gotos are great things; but that the correct level of abstraction is critical to writing good programs. The second, “Literate Programming”, written in 1984, got me to realize that software programs could be written clearly using literary concepts. Programs that are clear to human readers are better programs because they are clear about what they want to accomplish. Both essays have been reprinted in the book Literate Programming.

Archives

02/29/2004 - 03/06/2004   03/14/2004 - 03/20/2004   06/13/2004 - 06/19/2004   06/27/2004 - 07/03/2004   08/08/2004 - 08/14/2004   10/31/2004 - 11/06/2004   12/12/2004 - 12/18/2004   12/19/2004 - 12/25/2004   03/06/2005 - 03/12/2005   03/27/2005 - 04/02/2005   07/31/2005 - 08/06/2005   10/23/2005 - 10/29/2005   11/13/2005 - 11/19/2005   02/05/2006 - 02/11/2006   03/12/2006 - 03/18/2006  

This page is powered by Blogger. Isn't yours?


All Content (c) 2000 - 2004 Reliable Software, Inc. All rights reserved.