
Translation of the article "
Uncle Bob ".
OriginalRecently, I have been criticized for linking
TDD with professionalism. I plead guilty and claim a connection.
I’ll say right away that there are quite a few programmers whom I respect, but who either do not practice TDD or do not consider that this affects professionalism. For example,
Jim Coplien (Cope),
Richard Hickey and
David Heinemeyer Hensson (DHH).
- As I have said many times before, Cope is my hero. His writings in the 90s and later had a tremendous influence on my way of thinking and on my career.
- Richard Hickey is the author of Clojure. We talked with him several times in the 90s, when he was still programming in C ++. Now Clojure is my main language, and I try to read as much as possible of Hickey’s writings, and listen to as many of his reports as possible.
- DHH is the author of Rails; a framework that has done more for the Ruby community, the web community, and the entire software industry than any other I can remember. His influence on me and on the industry as a whole is difficult to overestimate.
These are good, respected, professional programmers. I use their workings out. I trust the integrity of their judgments. I was lucky to meet them and learn a lot from them. They proved their professionalism. They do not need my approval at all.
')
So how can I believe that TDD is associated with professionalism when there are professional programmers whose opinions I highly appreciate and who do not agree with this relationship?
First of all, I do not believe that TDD is a prerequisite for professionalism. What I believe in is that he currently plays an important role in professional behavior. I also believe that this will play an increasing role in the future.

I want to tell a story about the Hungarian doctor
Ignace Semmelweis , who in 1847 reached a sixfold reduction in the mortality rate in his maternity ward simply by forcing doctors to wash their hands before examining pregnant women. Semmelweis tried to convince his colleagues from other hospitals to introduce hand-washing as a mandatory procedure. They resisted - more than 60 years. The reasons for their resistance sound similar to the arguments of articles that claim recently that TDD is dead.
Doctors at the time did not wash their hands. They saw no reason to wash their hands. For them, purity and disease were completely unrelated. For us, in the 21st century, this is hard to believe; but just 167 years ago, it was just as hard to believe that washing your hands was not just a fad.
Were these doctors non-professionals? Of course not! They worked their best with the knowledge they had. Their distrust of Semmelweis now seems unfounded, because we now know that Semmelweis was right. But it is difficult to judge those doctors who did not believe everyone who came to them with strange ideas. Much time passed and, unfortunately, a lot of suffering and death occurred before hand washing was accepted as a compulsory medical procedure.
If our doctors do not wash their hands today, we will call them nonprofessionals and demand their dismissal. This behavior is unacceptable. But then the doctors who refused to Semmelweis were respected and professional. They were not evil. They were not even stupid. Their only fault was that they were human.
It may seem that I want to say that I am as important as Semmelweis. I don’t want such a cult status. In the end, I may be wrong. TDD may not be the equivalent of washing hands, no matter how much I believe in it. If so, then my articles and sermons on this topic will disappear in amusing footnotes in articles on the history of software. Footnotes that will delete in ten years. In this case, let it be so.
But patients are dying! Healthcare.gov. Knight Capital. Toyota. This list goes on; and the number of victims increases in progression. Our society as a whole is becoming more and more dependent on the software we produce; and failures every year are becoming more significant.
Something must change ... or we will come to a huge disaster.
If I am right ... If TDD is so significant to the software industry, as washing hands for medicine and saves us from all failing, we will be proclaimed a hero, and using TDD will bear the brunt of the criteria of professionalism. After that, those who refuse to practice TDD will not be accepted into the ranks of professional programmers. And I would not be surprised if one day TDD is obliged to use according to the law.
And now you may not agree with me about TDD. This is normal, and I am ready to discuss this. But I will not call you a layman, and I will not even think that you are a layman. Because at the moment in the history of TDD is not a necessary criterion of professionalism, which, I believe, it will once be.