Whenever I hear the phrase "You should be using X" or "You shouldn't be using Y", where X and Y could be a certain programming practice, principle or design pattern, I immediately wonder if the person saying that actually knows what he is talking about, or whether he is merely acting as an echo chamber for an outdated idea. In his article How to Screw Up Singletons (in PHP) the author Tim Cotten describes echo chambers as a function of well intentioned ignorance. This is where someone makes an observation which only applies in a particular set of circumstances, but where that observation is perpetuated by others without regard to the original circumstances, which then makes it apparently applicable beyond its original set of circumstances. This is a mistake. If you are one of those people who keeps echoing an observation, principle or practice without understanding the circumstances which gave rise to its inception, then you could be guilty of perpetuating mis-information and leading others astray instead of adding to the pool of knowledege. In other words, you could be turning the knowledge pool into a cesspool because of your crap, out of date information.
In my long experience as a software developer I have been exposed to many theories, guidelines, practices, principles and rules. Some I adopt while others I ignore. I adopt those ideas which show benefits in the applications that I develop, and I ignore those ideas which do not. What I choose to ignore or not ignore is entirely MY choice, and I refuse to be bound by the choices made by others. Sometimes when I implement an idea my implementation may not necessarily be the same as that used by others, but that does not mean that my implementation is wrong, or that my understanding of when the idea should be implemented is wrong. If my implementation works then it cannot be wrong. Someone may say that because my implementation is diferent from theirs then it makes it less maintainable, but then that would be MY problem and not theirs. As I have been building applications with my heretical ideas for over a decade without any maintenance problems then where exactly is the problem? Answer: only in the heads of my muddle-headed critics.
A typical example of this muddle-headed thinking concerns the singleton pattern which a lot of people now consider to be an anti-pattern due to the number of problems which it creates. What these dumb schmucks fail to realise is that these problems are not caused by the pattern itself, but by their faulty implementation of the pattern. My own problem-free implementation is described in singletons are NOT evil.
© Tony Marston
1st December 2017