This is not a pattern but rather an anti-pattern, actually I’d say it’s The Anti-pattern, which does not mean that, at the same time, is not well spread all over the Map.
My disclaimer: this article does not go down to technical details of BBM, the Internet is rich in materials debating this subject. I’d rather put ethical issues on the table and open a discussion framework out of it.
I love the term “re-utilize”, I’m seriously a great fan, here comes the disclaimer: as long as it’s used properly, when i say properly the copy-cat avoidance is not enough.
So, let’s throw a little bit of context into the basket.
The Dunning Kruger Effect
I was told once that the worst mistake you can ever make is to think you’re doing things the right way whatsoever your doings are. There should be no room for overindulgence and self-contentment, this is a struggle we must fight against that part of ourselves pretending being more out of misleading notions and mindsets that lead to dead-end.
This idea was reinforced when I, recently came across this term, that kept me drifting around for a while, called Dunning-Kruger effect and turned out to be the trigger of this post.
According to this article of Psychology Today:
The Dunning-Kruger effect is a cognitive bias in which people wrongly overestimate their knowledge or ability in a specific area. This tends to occur because a lack of self-awareness prevents them from accurately assessing their skills.
In general the phenomena could be seen attached to terms like incompetence or lack of capacity for performing something, that’s why I’d like to settle a small parenthesis on this regard and provide a different approach when analyzing this human behavioral pattern. From my stand point it’s not about narrowing the term down to specific areas of human developing but the mindset underlying to those areas.
In my personal experience, specifically in Software Engineering field, i have met many good professionals all along my career, as well as bad ones, smarter and less clever people but this is not the point. It’s about the idea, lurking deep down, telling us we are doing great, persisting to our very bones that we are high skilled because of we have gotten some knowledge on some specific area and we need no deeper understanding of it.
The journey to mastering something just starts when we get a workaround to using it.
With that being said we can not assume that just because we know how doing things, it implies we can do such a things the proper way so we are high skilled on the matter. This is a common mistake coming out of ignorance and lack of education. We become specialists in doing things but that does not turn us into gurus in the subject itself and this is when things start twisting up.
I maybe am a bit biased by the fact that all this fits profoundly to Computer Science which is the ocean i swim in, ye it’s probably true but it’s also true what this bias shows up, in the long run this is what this Blog is about, the human factor on Technology.
I grew up with the idea that in this world nothing comes effortless, you have to work really hard to get the things you dream of, so the foundations to this is Education, in all its expressions.
It’s a matter of Education to understand the principles and standards behind every human expression, and of course when it comes to Software Engineering the humility to recognize where the great systems, platforms, software in general, come from and what they represent brings you closer to those eternal principles dwelling behind such a great solutions.
I think this is what really matters. Google, Angular, React, Graphql, and an endless set of technologies are great if we look through the mirror of our current world, but we must(as moral obligation) and have the historical commitment to be aware of where all these technologies come from.
It’s really nice working with modern technologies and frameworks but we can’t afford ourselves to be kept away from acting shift agents on this; i really get pissed off when developers and designers give up to think beyond the constraints and policies of a Framework, playing thus the ant role obeying the whims of the Colony, going with the crowds instead of breaking through out of resistance and self determination.
The character of a real artist is put under proof quite often out of isolation and rules disobedience. Honesty i think this might be the key to success, being consistent with your believes, value-system and remaining humble enough to recognize when you are wrong. This is what i call Education. I often have a bad time trying to find such a values on people going through Dunning Kruger effect.
So this is the point to me, it’s more a philosophical issue than just coming down to technical or human capacity grounds.
Mud based Architecture
At this point you, reader, might be wondering what does this soliloquy have to do with Big ball of Mud Architecture, well i would say that a lot and very few at the same time.
It turns out that if as software architect, i don’t take care of my self and let my ego fly away as a bird, very likely i could fall into the jaws of auto-indulgence hence my commitment to those good Design Principles being compromised out of this. The result, an inextricable system pretty much like the image head-lighting this post.
Of course this Waooo comes mostly when dealing legacy software that, of course, you did not build and trying to come to grips of how it was figured out, the old spaghetti design hits you right in the face and you can’t think of a worse way to write code than this one. Of course that nobody gets outraged with it’s own coding because we tend to think we are great developers and never ever could do things that bad, but watch out my friend… folks Dunning and Kruger are watching you even when you can’t see them and silently remind us that there is always a chance to lose the perspective and forget asking ourselves the pristine question: Am i doing it the right way?
If you found this article interesting, please drop off your comments down here.