Have you ever had a conversation with another developer that started off with you talking about one of the SOLID design principles or a design pattern only to have them dismiss you entirely with “yeah, but that will only add more classes to my project” or “that is over engineering the code”? Why are some developers so resistant to these ideas? I would suggest that it is due, in part, to fear.
Fear of what you ask. It is in three general areas: lack of knowledge (ignorance), lack of skill (laziness), Genius Developer Syndrome (exposure). So let us look deeper into the mindset of the “fearful developer”.
Ignorance is the lack of knowledge of something. When a fearful developer is presented with something they do not know or understand, they become defensive and dismissive. Rather than admit they do not know something, they will use baseless arguments that sound important such as, “that will potentially cause a proliferation of classes in my domain which will have a negative impact on the overall performance of the system”. If you examine arguments like this, you will often find them to be devoid of any substance and based solely on conjecture.
Class proliferation can occur, and is often a side-effect of poor design. The fearful developer is by and large a lazy one. The fearful developer does not feel obligated to educate themselves or to put in the time, effort, energy, and erudition necessary to acquire the requisite skills. They stick to a well worn path, even if that path leads to a dead-end piled high with technical debt or what I refer to as “spaghetti in a haystack”.
And then there is the deific ivory colored cocoon that some developers have made a career out of shrouding themselves in. They are more devoted to keeping alive the illusion that they are the infallible genius developer than admitting they are not perfect. This is the most egregious fear of all because it is the most self-serving.
The path of Zen Coding teaches us to always carry an empty cup, to never be satisfied with where we are, and to always look for ways to improve ourselves. It is our responsibility as professionals to constantly challenge ourselves so that we may avoid the hazards of the fearful developer.
If ever worked on a project with a fearful developer you have, or with their technical debt on a codebase dealt, then you know what suffering is.