You probably know that story about doctor Joseph Lister — The Farther of Modern Surgery. He invented antiseptics, published his founding in The Lancet, became the president of the Royal Society, was made baronet and then baron by the queen, and then he saved the king with his technique, and everybody lived happily ever after.
The story has its darker side though. Listers method was essentially this:
It seems perfectly reasonable, except that carbolic acid, also known as phenol, is corrosive, toxic and irritative. It’s basically poison.
And as you might guess it was not accepted all that well at the beginning. It’s not because medical society was all that stubborn and ignorant. It’s just that Listers method hurts doctors, nurses and especially patients. It only got appreciated eventually, because it hurts patients a little less than gangrene and death.
Of course with the advances in medicine the method became obsolete. And of course antiseptics didn’t. Every hospital in the world now uses antiseptics, and none of them use specifically carbolic acid. Idea of antiseptic was indeed revolutionary and remains fruitful through the years, while the method only worked within some specific historical context.
In general, this is exactly what’s wrong with methodologies. Every popular methodology is based on some great idea, but is also cluttered with specific details that reduce its applicability to some specific set of problems within some specific time frame. It’s like a precious gift wrapped in layers and layers of yesterdays newspaper.
Ideas are general, inspiring and timeless; methodologies are rigid, boring and short lived. Yet ideas have that one flaw that prevent them from spreading effectively — they are not marketable. You can not sell a book of one page saying “write tests before the code”. You can not make a career in coaching people to “reduce iterations in time, so the problems will show themselves sooner”. You can’t even lecture a semester long course of “write code with less states, states are bad for you”. These things just wouldn’t sell.
What’s interesting, the people who buy methodologies in one form or another are rather happy to play along. We rarely discuss ideas, but we gladly fight over methodologies, practices and paradigms. TDD, or Agile, or FP — these things are in focus right now and the Internet is boiling with discussions. They don’t matter all that much, ideas behind them do, but ideas are no fun to argue about.
You can’t argue that having tests before the code is a good idea. But what kind of tests? Who should provide them? How long should the coding take? Everybody has his own opinion. And everyone is probably right within his own context. Specific things always rely on specific context, although they probably the least ones worth discussion. They are only wrappers for the idea after all.
There will be new things to discuss in couple of years. They will also bring us some great ideas inside them, but we will still fight over how much layers of poisonous lint you should lay over the wound. That is also what’s wrong with methodologies. They distract us from ideas.
I’m not saying it’s all that bad though. Getting new methodologies as “ideas in wrappers” is definitely better than getting no fresh ideas at all. But I would rather suggest to take them all with a grain of salt.
Specifically ferric chloride.