If you have come to this page expecting to read about an awesome new problem solving technique, then I am sorry.
This post is about an anti-pattern that I have come across on occasions. I have named this phenomenon “The Problem Solving Bucket”.
Let’s look at an example. Many moons ago I was looking after a middleware project. Yes, I know. You are already feeling some sympathy for me. We had a set of applications that needed to send and receive data from each other s0 we decided to buy a product from a very, VERY BIG company that we just knew would solve all of our problems.
We then started having discussions with this VERY BIG company that went something like this:
“MQ adaptor?” “Yeah, we have one of those.”
“FTP adaptors?” “Yeah, we have those too.”
“XML support?” “Of course?”
“Wow! You are awesome!”
We were even shown breathtaking demos on how easy it was to use the lovely VB GUI to map fields from one format to another as well as plugging in new interfaces.
What could possibly go wrong?
Firstly, to no surprise of anyone older and wiser, after buying the product we had further discussion with said VERY BIG company that went something like this:
“MQ adaptor?” “Fine so long as you don’t want the messages real time.”
“FTP adaptor? “Well you are fine for files of size less than 100KB, otherwise stuffed.”
“XML support?” “”Yes, but only in Chinese right now.”
However, we also suffered from The Problem Solving Bucket syndrome. From the point at which we started talking middleware, all the way through the YEARS of implementations, we managed to pick up every last data transfer and message transformation requirement in the world. You have probably heard of us. And I am sorry we didn’t deliver for you.
No one seemed to think too long or too hard before saying:
“Look! There’s a middleware project over there, they will solve our problem for us. Nothing for us to do”.
We were their Problem Solving Bucket. They dumped their dependencies in our bucket and forgot about them until it was time to blame us for not delivering. At the time, we even encouraged it.
“Does the VERY BIG company product have an MQ adaptor?”. “Yes! Of course!”
“Can it wash my car?”. “Yes!”
Summing up, be vary wary of that project that appears to be solving EVERYBODY’S problems. It probably won’t. Unless you have very good reason, do not park your key dependencies at someone’s else door and think that is now their problem.
As satisfying as it is to think there is one less thing to worry about, don’t. Unless you are not bothered about delivering anything that is.
And on the flip side, do not let your project turn into someone else’s Problem Solving Bucket. It gets messy with all that stuff in there.
And I never want to work on a middleware project again. The mere sound of the words “message bus” break me out in hives.
Footnote: Sorry for all the capitals.