A big ball of mud code!

Big Ball of Mud diagram of many software applications today (Source – Myth of Uncertainty – Steve Bell)

I recently heard about software coding “big ball of mud” (BBM)  scenarios that are currently the de-factor standard for designing, developing and maintaining computer software applications. Just doing a quick Internet search for the terms “Big Ball of Mud” will delight one with many interesting articles about this software issue that lies right below the surface for many popular software programs we use daily.
As a veteran programer working on software projects in companies big and small,  I can attest to the real-world pressures of software companies today that force applications into the eventual state of the Big Ball of Mud coding and maintenance approach.  I’m sure you can relate and see how this occurs in real life as the end user of these huge and complicated software applications.

Common features of Big Ball of Mud Code

For those with a programming background, here are some common faults that exist today when developing and maintaining larger software products:

  • Data structures are haphazardly constructed or non-existent.
  • Everything talks to everything else.
  • Important state data is global.
  • State data is passed around though Byzantine back channels that circumvent the system’s original structure.
  • Variable and function names are uninformative and misleading.
  • Functions use global variables extensively, as well as long lists of poorly-defined parameters.
  • Functions themselves are lengthy and convoluted, and perform several unrelated tasks.
  • Code duplication.
  • The flow of control is hard to understand, and difficult to follow.
  • The programmer’s intent is next to impossible to discern.
  • The code is simply unreadable and borders on indecipherable.
  • The code exhibits the unmistakable signs of patch after patch at the hands of multiple maintainers, each of whom barely understood the consequences of what he or she was doing.
  • Did we mention documentation? What documentation?

There are many factors creating the big ball of mud effect on systems today and include:

  • Business pressures to create software in the cheapest and fastest way possible
  • Developer turnover and churn and continual company mergers, acquisitions, and project outsourcing
  • Requested last-minute features and fixes and changes in product directions
  • Continual rapid changes in various client user interfaces, technologies and hardware platforms
  • Backward compatibility and keeping up with competition

When Internet Software Sciences was started in 1995, founders well-experienced in the software design realized the most important feature of a piece of software is in its ability for the code to be easily understood, maintained, and updated by both the end user and the ISS programming staff for the long term!


A bit of Web+Center history

A complete rewrite of the original Web+Center 2.0 C++/ISAPI code was performed, converting the entire application from a very difficult C++ compile, debugging, ISAPI DLL and coding environment to the current VB/ASP coding environment that we use today.  We completely changed the model of the software web scripting language from being a compiled C++.DLL,  internal, proprietary software environment to one where our users can see, understand, modify and maintain our software almost as well as well our own internal staff.  Our open ASP source code has documentation throughout with a design criterion of being “readable, understanding” and using “straight-forward logic that is easy to follow”.


Conclusions

So the next time you are evaluating new software products, think about the big ball of mud concept and research if the products you are considering purchasing are just running a  mud ball of code.  Software designed with consistent, thoughtful approaches allow easier fixes and customizations and will promote a longer life and more successful use of the product.  Very few software companies disclose their product’s underlying architectures and coding styles.   Internet Software Sciences is fairly unique in that we provide 100% of the source code and a programmer’s guide to help explain the code-level details of the product for customizations.