A few weeks ago, as part of my preparation of my talk on Clean Architecture and TDD, I re-read Uncle Bob’s blog posts on Clean Architecture…
“… I’ve been surprised by the reactions to these ideas. I understand that people naturally resist change; and that lots of programmers aren’t used to the ideas of decoupling (read that clause several times and weep). But this is not some new idea that occurred to me out of the blue. These ideas are old…”
— from Uncle Bob’s blog post titled “Clean Architecture”
That hurts! I mean, the “decoupling” thing. But it is true. And we, programmers, have to do something about it.
Okay, back to my title…
“People naturally resist change.”
I’m not sure if that statement is always true… Maybe it’s not.
But I think there is something more fundamental than the statement above, and which is always true:
“People naturally hate it when someone tells them that what they did, or are doing, is wrong.”
I think this is the reason why Uncle Bob was criticized when he introduced “Screaming Architecture”, even though it was already an old idea.
It’s because we do not like being told that we are wrong. (I do not like being told that I am wrong. )
But sometimes it is necessary to be told that we are wrong. Sometimes, it is necessary to tell others that they are wrong.
If we have to tell others that they are wrong, how then are we going to tell it to them without hurting their feelings?
In his talk on Mob Programming, Woody Zuill said that in the past, he would tell people that their code is bad and it has to be fixed. And everybody hated him because of that.
So he changed his approach. In his next clients, he did not tell the programmers that their code is bad; instead, he taught them what bad code looks like and what good code looks like; and he let the programmers identify by themselves if their code is bad or good.
Wow!
I remember something I read from “How to Win Friends and Influence People” about letting people think that the idea was theirs.
[googling…]
“People inherently like ideas they come to on their own better than those that are handed to them on a platter. Ideas can best be carried out by allowing others to think they arrived at it themselves.”