Beware the Glue Amount

Working with glue is messy. You have to be very careful where you place so it doesn’t drip over anything. You also have to apply it carefully so it doesn’t stick to your hands; and you also have to store it carefully so it doesn’t stick the entire drawer together. All this trouble applies to every time you apply glue, so the more you use, the easier it gets to get in trouble. The funny thing is that after all this trouble we don’t know how long the solution is going to last.

And yet we use it again and again because is the best way to fix things, to get things to work together when they are not built from one piece. Of course there are better alternatives, to glue, like duct tape or wielding but in the end they are used for the same end, to bring many different parts built, many other people, to form the final structure that will be usable for our purpose.

We run into the same problems in when building software projects. There are several big components in our projects that are built by us, and many many others built by our colleagues and even many more that are built by people we will never meet and that stand at the core of our projects either as libraries or entire frameworks.

In order to this apparent mess to work, we have to be very careful how we glue them together and the amount of glue used.

We can glue them at the lowest level and with such strength that they become one new piece making the entire thing feel smoother and the parts undistinguishable from one another; at the cost of not being able to distinguish which part is which and thus not being able recognise which components are problematic and which aren’t, which ones need to be reworked and which ones don’t. And as far for upgrading external dependencies you can forget about it because although what has started as something external is now so deeply infiltrated in the system that is has become the system itself.

The alternative is to use glue here and there, wherever necessary and at the most surface level possible leaving all components in the same pristine condition they were when you first integrated them. This approach will make very easy to distinguish between healthy and problematics components; and more important, it will enable you to upgrade, downgrade or even swap entire parts of the system with minimum required changes in the entire system itself.

The use of glue is inevitable but you can control the outcome. Use it at the most surface level where it has the least impact on the entire system.