Friday, May 19, 2017

Big Ball of Mud

Recently I've spoken to people at quite a few companies where Delphi is used to develop their software. There's a pattern which is very hard to miss or ignore: Every one of them so far wants to get away from Delphi. They are all very dependent on it and still need it to continue running their businesses but they are unhappy about it and their long-term plan is unequivocally to move away from it. Often they would like to migrate to the Web, using the browser as the user interface and things like Microsoft ASP.NET and Azure as the back end.

An often-mentioned reason why they'd like to migrate away from Delphi is that their systems evolved into what can be described as the "Big Ball of Mud".

But wait. How's that related to a particular language or development environment? This (anti-)pattern applies to software design in general, right? Regardless of the language or the IDE?

Think about how fast and easy (compared with other tools) you can bang out a quick prototype in Delphi. Think about how often those prototypes end up in production after all, never rewritten or revisited again. In the article above, they are referred to as the "throw-away code"; code which was supposed to be thrown away but for some reason that never happened.

Which is what, as the throw-away code accumulates, eventually leads to the Big Ball of Mud pattern.

Does perhaps Delphi, by making it so easy to produce throw-away code, support a tendency leading to the creation of "Big Ball of Mud" systems?

What do you think?