Saturday, January 5, 2013

Big Ball of Mud

Software design is challenging.  "Big Ball of Mud" is a term that is used to describe a bad software design:  "A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle."  If you want to write good code, you want to avoid creating a big ball of mud.

Software might start as a ball of mud, or it might degenerate from a coherent design to a ball of mud.  If you want to create good software, you need to have some understanding of lousy software.  I recommend you read the original paper by Brian Foote and Joseph Yoder:  http://www.laputan.org/mud/

You can watch  Brian Foote lecture on the Big Ball of Mud to programmers at Google in Mountain View, California.  The lecture (1 hour 6 minutes) is available at YouTube: http://www.youtube.com/watch?v=h6Y9aJhqO78.  I recommend it.  (If you want to be careful, go to You Tube and search for the Big Ball of Mud.)  The video has new content, not in the original paper.  You should see in this video his comment on the development process called Agile Software Development.  This comment is on the slide labeled "Agile Ike." It makes an important point with humor.

You will hear Dr. Foote refer to The Mythical Man-Month by Frederick Brooks.  Yes, every programmer should read this book.  He specifically mentions one essay from the book, No Silver Bullet -- Essence and Accident in Software Engineering.  You can download this from the internet from this website:  http://faculty.salisbury.edu/~xswang/Research/Papers/SERelated/no-silver-bullet.pdf.

Fred Brooks' "Essence and Accident" essay is interesting, but I can recommend a more practical exposition on writing good code:  Code Simplicity: The Fundamentals of Software by Max Kanat-Alexander.  This is small book and well worth your time.  There have been very many books written about writing good code.  This is the most practical book in that genre.

Robert

No comments:

Post a Comment

Comments require my approval before they appear. Be patient. It will take a day or two for your comment to appear.