I tend to come across this decease mostly in the java environment, but I believe it to be a more general problem, occurring in our industry.
The symptoms look a bit like this:
“I started writing that piece of code we need, but I have to satisfy this rules of the Foo-Tool we are using.”, says Karl Coder as he meets his college Brian Brainy around the coffee-machine.
“Well, but at least you are getting some benefit from using the tool, right?” replies Brian, who joined the team only recently and isn’t yet that familiar with the setting. He recognizes the look on Karl’s face and immediately adds: “I mean, why else would you use it, right?”
Karl sighs. “I don’t know. I cannot really say why we use it. It’s clearly the new hot thing, since all the other companies are using it, but I don’t quite see why. I’m shure it’s good for something, but at the moment I have so much pain with it.”
“Well, ok. So we just get rid off it; problem solved.” says Brian who is a bit of a lighthearted guy and smiles. “What’s the big deal?”
Brian can see Karl’s eyes grow bigger in terror. “No, we cannot do that. It is a good tool; every other company uses it. I am simply not intelligent enough, to comprehend it’s full value.“
I do know, that this little scene is a bit exaggerated, but some of you may have spotted the point already, I guess.
The problem stands, that a lot of programmers have to little self-confidence in their values, to question tools, techniques or patterns, that do not benefit them or their teams in a known way. Or, to put it more frankly, they value the promise of a standard tool/method/younameit higher, than the power of their own mind.
I like to think, that ideology is a kind of brain-cancer, that we need to get rid of, wherever we encounter it.
As it stands, your mind as a programmer is your main tool. More precisely, it is your only real value in writing software. Every tool, technique, pattern or wise words some guru said, be they as good as they may be, only hold an additional value, if they can support your brain on getting the job done.
Yes, there are things that have a value that is not immediately apparent. Yes there are some thing that are more trouble then they’re worth, but cannot be removed without a price that’s too big to pay. Those things exist.
But if you do not dare to question them, you stagnate and fall behind. If you do not even dare to seriously asses the value of the tools you are using, especially if they get in your way constantly, there is no way you will ever use them right, or get rid of things, that truly hold no value in your situation.
Of course, I am not proposing, that you blindly rip out any tool and neglect every practice that you used until now, because you cannot make out their value in an instant; but you should go ahead and question them again and again, until you either see the value, or someone explains it to you, or you can, after some careful thought, savely neglect them.
Just to make that a bit more clear: The best you can hope for, if you simply use something without questioning or immediately knowing it’s value is that you are using it wrong and the very real value it might have had, if used correctly, doesn’t apply for you.
Let’s give a, way too simple, example: Imagine, I am trying to fix a nail to the wall in my living room. If I wouldn’t immediately know what it’s value is, I would dare, to ask the question: “Why do I need to use a hammer, to do this? It’s heavy and I always need to search for it in the back of the basement.” Imagine I wouldn’t find a good answer after some thought. Then I would neglect the hammer. I would try to press the nail against the wall with my fingers or any other means and very soon discover, what a hammer is good for.
The worst thing that can happen, when calling things to question, is that you learn from failure and improve your skills. But quite often, you would find that you are better of, without a particular impediment, and cannot see any missing benefits, the tool may have magically provided before.
There is a bit of stinger to this sadly, which is, that every change made to a project has it’s cost. Therefor, in programming, you should think hard about the cost of removing a particular tool or technique before doing so. It is not very pretty, but sometimes, not having to pay that given cost can be enough of a value to you, to keep it.
As a word of parting, remember this though: Your mind is the only real asset, you bring to your team. If you don’t question you don’t grow in mind. If you don’t dare question, you won’t be able to reduce tedium and therefore you will not improve your work in any way. — ALWAY use your brain!
Until next time…