4 ms·
This is so not new, it has been covered in religions for thousands of years. Buddhist teachings tell that there are three forms of understanding. The first is
by curun1r 10y ago
This is so not new, it has been covered in religions for thousands of years. Buddhist teachings tell that there are three forms of understanding.
The first is devotional understanding. Martin Fowler is a wise and learned programmer and says that TDD is the best way, so One believes that.
The second is intellectual understanding. TDD is good because it codifies the programmer's intentions for what the code should do, makes refactoring easier, prevents regressions and all the other logical reasons that TDD proponents talk about.
The third kind, and the only one that's true understanding, is experiential understanding. TDD is good because you've experienced development with and without it and feel how different they are. Once you get to this point, there's no dogma about writing tests first or anything of that nature. The practice becomes natural and you're free to deviate when it feels wrong.
See also: Shu Ha Ri
- itamarst 10y agoThe interesting thing about this model is that it maps pretty directly to current research on learning. In this context, experiential understanding (when you're an expert) is the point where you start suffering from Expert Blind Spot. And there's a bunch of research that suggests the best teachers (by default) are the people at middle point, intellectual understanding, precisely because the understanding is less automatic and integrated. The book "How Learning Works" (which I review at https://codewithoutrules.com/2016/03/19/how-learning-works/ https://codewithoutrules.com/2016/03/19/how-learning-works/) talks about this at length.
- steveklabnik 10y agoOr, arguably, the interesting thing about current research on learning is that it maps pretty directly to things Buddhists have been saying for thousands of years. (I know nothing about Buddhism or learning research, just making a point about chronology.)
- wpietri 10y agoInteresting. For me, teaching when I'm an expert means I must begin another path of learning. I'm at Ri in understanding the material, but at Shu at understanding how novices see the material. But I could well believe people at the middle point will always be better than me. For those who want a good example, I strongly recommend Julia Evans, aka @b04k: http://jvns.ca/ http://jvns.ca/ She writes a lot of novice-focused material on technology. She does a much better job at explaining things than I would. And she does it with an excitement for the material that is infectious. Even for those who know the technical details, I recommend following her; I always walk away saying, "Wow, she's right! I had forgotten how cool that is!"
- davorb 10y agoBuddhism also talks a lot about purity. It doesn't necessarily follow that those practices should be abandoned or even avoided, just because parallels can be drawn with religion. Let's say that I spent some time brewing your favorite tea and that I did everything right so that the tea was ~perfect~. And then I took a pin and dipped it in feces, and then dipped the tip of that pin into your tea. Would that in any way have any effect on your enjoyment of the tea? Could programming, and perhaps many other things, work the same way? Maybe we would all be creating better software if we were a little more religious with our code?
- Bartweiss 10y agoThe old Unix koans were funny, and probably a bit gauche to real Buddhists, but they did a good job of capturing this. The growth of programming as an abstract, professional business has seen a lot of growth in cargo cult practices. There's a lot to be said for respecting the system you describe, where no one is a master of a system unless they can clearly understand when to disregard that system.