Yes we do. I view Agile largely as TDD/BDD and the principles in the Manifesto…
And btw I love Dave’s talk. I think part of it is also generational. I was studying Computer Science in the late 90’s when TDD was not really a thaang yet. Two snaaps…
From my experience TDD if done right, gives us an opportunity to think about the problem outside of the problem versus being swamped in all the details and considerations. It allows us to get some separation. If you’ve developed great cognitive muscles to do this without the need for separation than by all means you’re lucky.
I’ve also found that it cuts down on uncertainty because it forces you to think about situations upfront or atleast have a list of things you need to think about potentially. So that when biz/prod dev approaches you for example you don’t have this wide-eyed glare. To which protoyping is also great…
I think the point is not to abuse agile but stay true to its spirit, its principles. Generally most people would agree that flexibility, clarity, good design and trust but verify are all worthwhile.
When I was learning Elixir and OTP sort of at the same time. (LOL). I intentionally performed some constraint relaxation - in the form of Lagragian Relaxation. Meaning I focused on a simpler problem while incurring a bit of a penalty which I would resolve later.
I clearly had a lot to learn, and so I deferred doing some of the tests upfront until I was more comfortable with the platform. I did incur a bit of a penalty to focus on perhaps a “simpler” problem by reducing the number of things to learn.
However now its quite easy for me to TDD with Elixir and then drive code…
Sometimes you have to pick your battles and I’ve found agile generally very helpful.