JB has been around the XP community for a very long time, and he is one of the most experienced Test-Driven Development practitioners that I know. He is the author of the 2004 book, JUnit Recipes, which I found to be incredibly useful even while doing C#. He spends the majority of his time now traveling the world and doing agile coaching/training at companies.
JB's thoughts around programming have had a huge influence on me over the years, but the conversations that we've had about life, in general, have changed my thoughts and direction. I remember several times sitting with him and dreaming about traveling around, programming with people in exchange for room and board.
While up on PEI, JB and I had many conversations, and I asked if he'd be interested in recording some of them. One of the first was a conversation we had stimulated by Brian Marick's talk on "Artisinal Retro-Futurism crossed with Team-Scale Anarcho-Syndicalism." We had a conversation about the fact that the 'TDD is about testing vs TDD is about design" debate that keeps popping up, especially now in the Ruby community. As usual, he's a lot more diplomatic than I am; I guess that is what comes from having years more experience coaching than I do. :) Enjoy!
If you'd like to contact J.B., you can through his website.
If you'd like to contact J.B., you can through his website.
Part 1
Part 2


Kitty reveals itself at 15:26 (part 1)! Oh another hairy cat at 3:00 (part 2)!
ReplyDeleteSorry I guess I care more about cats then I do about TDD's academic definition :-)
Basically it can be both, start as one and end up being the other also etc. Some good points.
I do think the design bit is an artifact/symptom and the testing part is not necessarily always the most effective way to test.
If you want to test if your internet connection is working, do you point your browser to google.com and see if it work, or do you check your computer's power plug first? Integration testing at a high level can sometimes remove the need for all other forms of finer grained testing.
Thanks for this; thought it was interesting.
ReplyDeleteI have had the same thoughts about the model/scale of developing a TDD mindset - from "Testing - isn't that what testers are for?" to full-blown TDD... I'd also add that I'm pretty sure it's a logarithmic scale. Each step up seems to be an order of mag harder than the last. No wonder people give up, right? That's why I feel so strongly about trying to educate others. Your standard vocational programmer can learn it with aptitude, guidance and pairing in their 9-5 commitment, but they need help and motivation from others.
Where are these "TDD like you mean it" exercises. They sound interesting. Would be neat to do something similar to Ruby Koans for TDD.
I found a "TDD Like You Mean It" writeup here: http://tinyurl.com/cun68c
ReplyDelete@J.B. - Appreciate it! Thanks again...
ReplyDeleteJB talked about ignoring design and just writing tests early on in learning TDD. But if you do that, doesn't it make the tests really hard to write and result in brittle tests?
ReplyDeleteI think I just became clearer about TDD and TF in this short videos than I have reading multiple articles and forums. Thanks for taking the time to record and share these.
ReplyDeleteRobin,
ReplyDeleteIt isn't a matter of ignoring design, as much as ignoring some of the messages that the tests are trying to tell you. If you aren't ready to hear them and react to them, they can end up confusing the situation.
Tests can become harder to write and more brittle, but the closer you write them to the actual code, the better.
Mark,
ReplyDeleteThanks for the nice comment. I was very lucky to get the opportunity to spend time with JB and record the results of some of our conversations. There are a couple more videos with him on the way.
Corey - thanks for two great vids. I liked the "humblying" ideas of J.B. :)
ReplyDeleteAlso thanks for all other of your videos, I've seen several and it is a really good initiative to show these discussions openly.
I liked the idea of not getting too much hung up with design/testing at early cycles of TDD, because whenever I mention tdd is about designing nobody gets it at the beginning. Thanks for the great video.
ReplyDeleteGreat conversation. I miss getting to chat with JB at the Agile conferences. He always brings a humble and humbling viewpoint to any conversation, and these videos certainly demonstrate that characteristic. Great stuff.
ReplyDelete