Cargo Cults and Dharma Transmission

Here’s a pattern I see a lot in discussions of development practices:

Skeptic:
I’ve tried practice X, and it doesn’t work
Believer:
What do you mean it doesn’t work? It works for me and everyone I know. You must be doing it wrong.
Skeptic:
Nonsense. I did it exactly the way the book says to do it. You’re just a blinded by the kool-aid.
Believer:
Unprofessional lout.
Skeptic:
Deluded imbecile.
Believer:
I know you are, but what am I?

You get the idea.

I highlighted what I think is the key point n this conversation: the fact that the Skeptic learned about Practice X from a book. It could just as well have been a Wikipedia article or a series of blog posts. The point is that our Skeptic tried to put into practice something which he had never witnessed first-hand, and was disappointed at the results.

It strikes me that there is a form of cargo-culting going on here. Only in this case, when the cargo planes fail to arrive, the cultists experience an understandable crisis of faith. Sometimes followed by a period of angry backlash against the”faithful”.

In some Buddhist traditions the concept of “Dharma transmission” is held to be central. A Dharma transmission is the direct person-to-person teaching from master to student. A teaching is regarded as true and authentic if a lineage of direct transmissions can be traced, teacher to teacher, all the way back to Sakyamuni Buddha himself.

Dharma transmission cannot occur through reading holy books. It must occur in person. I think this may sometimes be true of software development practices as well. We have a wealth of books and articles on best practices. You can learn everything there is to know about Test-Driven Development or Separation of Concerns without ever leaving your desk. But without sitting down with a master and working through a real-world problem, you risk missing that moment of enlightenment when everything clicks into place.

I’m usually quick to say “you’re doing it wrong; read more and try again” when I see people complaining about practices that I find profoundly beneficial. But maybe that isn’t helpful. Maybe some understandings can only be effectively passed by direct transmission.

5 comments

  1. This reminds me of Chad Fowler's “try to be the worst guy in whatever band you're in” – if you work somewhere with people that are more experienced than you, you are likely to get more dharma transmissions…

  2. “Maybe some understandings can only be effectively passed by direct transmission.”

    I think that's exactly what the software craftsmanship guys are doing. BTW I would like to see more “Coding dojos” out there, all around the globe, proliferating this kind of person-to-person practices.

  3. I never really got the SOLID principles until I started working on my current project. I'd drunk the kool-aid, but it was pure dogma. This project is huge, and it's incredibly easy to write horrible code. The techniques we use to avoid brittle, cumbersome code turn out to be the SOLID principles. Go figure.

    Direct transmission is good, but direct transmission through object lesson is even better.

  4. I never really got the SOLID principles until I started working on my current project. I'd drunk the kool-aid, but it was pure dogma. This project is huge, and it's incredibly easy to write horrible code. The techniques we use to avoid brittle, cumbersome code turn out to be the SOLID principles. Go figure.

    Direct transmission is good, but direct transmission through object lesson is even better.

Leave a Reply

Your email address will not be published. Required fields are marked *