TDD

5 views
Skip to first unread message

cisco

unread,
Mar 10, 2008, 11:35:06 AM3/10/08
to agileh...@googlegroups.com

 During the last meeting there was a mention of a TDD lab of some sort.  Is this still being planned or considered?  I was in a hurry in the last meeting so i left right after the speaker was done.

cisco

Javid Jamae

unread,
Mar 11, 2008, 10:35:54 AM3/11/08
to agileh...@googlegroups.com
I have a few ideas:

1) Run a one or two-day long hands-on introduction to TDD workshop. All participants would learn the basics of TDD by working on a mini-project and continuously integrating into the same shared code base. I would need help organizing and running this based on the number of participants.

2) Run a refactoring workshop where we take a hunk of nasty code each session, identify smells, and start working through refactorings and discussing design decisions as we go along. Perhaps the code would have no unit tests, so we would have to write those first. We could run these sessions in a fishbowl fashion.

3) Start an extreme-programming open-source project where code is only contributed by attendees in a once-a-week 4-6 hour long weekend session. The goal would be to deliver working software in a real XP environment, but with no schedule pressures. This would allow it to be a great learning experience for those who are involved. If we have enough interest and enough participation, the project could actually be developed in multiple languages simultaneously, using the same user stories and acceptance tests.

The difficulty with all of these would be choosing the language that we would proceed in. I have done all of these in Java, and could probably pull off something in Ruby with a bit of help.

Here's a little questionnaire:

1) Which of these three do you like the best?

2) Do you have any ideas for different workshop formats?

3) What language would you prefer for any workshop?

4) Could you help organize or lead a workshop?

Javid

Sam Larbi

unread,
Mar 11, 2008, 10:55:17 AM3/11/08
to agileh...@googlegroups.com
On Tue, Mar 11, 2008 at 9:35 AM, Javid Jamae <javid...@gmail.com> wrote:
I have a few ideas:

1) Run a one or two-day long hands-on introduction to TDD workshop. All participants would learn the basics of TDD by working on a mini-project and continuously integrating into the same shared code base. I would need help organizing and running this based on the number of participants.

2) Run a refactoring workshop where we take a hunk of nasty code each session, identify smells, and start working through refactorings and discussing design decisions as we go along. Perhaps the code would have no unit tests, so we would have to write those first. We could run these sessions in a fishbowl fashion.

3) Start an extreme-programming open-source project where code is only contributed by attendees in a once-a-week 4-6 hour long weekend session. The goal would be to deliver working software in a real XP environment, but with no schedule pressures. This would allow it to be a great learning experience for those who are involved. If we have enough interest and enough participation, the project could actually be developed in multiple languages simultaneously, using the same user stories and acceptance tests.

The difficulty with all of these would be choosing the language that we would proceed in. I have done all of these in Java, and could probably pull off something in Ruby with a bit of help.

Here's a little questionnaire:

1) Which of these three do you like the best?

I like the 3rd one the best.  I'd really enjoy something like that, since I've not had many chances to effectively pair, and I'd like to see how that really works. 

However, it's a pretty big commitment to do that.  Would it work past the first week?  At this point, I'm in school and it's doubtful I could make it weekly, but I'd really like to see it work and join up occasionally after May.

The problem for the first two single-day items, at least from my own experience at the JUnit workshop, is that we spent a lot of time setting up (or, at least I did).  So, it may be workable, but the environment should be known in as much detail as possible beforehand, with attendees being encouraged to set-up before coming in.

 

2) Do you have any ideas for different workshop formats?

I have no input on that.

 

3) What language would you prefer for any workshop?

I prefer Ruby, but for the sake of expediency and focusing on the parts that matter, I'd suggest going with a language that most of the people attending know very well.  Ruby may do a nice job of removing boilerplate from the more widespread languages, but I don't know how useful the session would be if most of the attendees were learning it as the day went along.  It seems like there'd be too much focus on the language, and less on the "people over process".

 

4) Could you help organize or lead a workshop?

At some point in the future that sounds interesting, but I'm not even sure I could commit to attending one in the near future.


Hope that helps,
Sam


 

Jim Bethancourt

unread,
Mar 11, 2008, 11:12:34 AM3/11/08
to agileh...@googlegroups.com
One thought for having a multi-language project would be to use Maven 2 -- I know it's got JRuby and Groovy plugins (and it looks like jython and Scala plugins too) and should allow for cross-compilation, so developers could write code in the language they are comfortable and most productive in while being able to leverage other people's work.  I can experiment with it if enough folks are interested and report back.  Write back to the list and let me know what languages you'd be interested in.

Cheers,
Jim

Javid Jamae

unread,
Mar 11, 2008, 11:05:20 PM3/11/08
to agileh...@googlegroups.com
Agreed, any workshop would have to have detailed setup beforehand. Perhaps there would even be a small online tutorial that you would have to do before attending, which would force you to have the right environment set up.

With the project, I'm guessing the team size would shift from week to week, but hopefully there would be enough interest to keep the project moving. If we built the same project in multiple languages, there could be language-learning benefits as well. For example, a group of people that cranked out a set of user stories in Java one week, might find benefit in doing the same features for the Ruby or C# version the next week, giving them a chance to try out a new language, or brush up on their skills. One idea might be to have different weeks that are dedicated to different languages. We could also dedicate certain weeks to doing workshops, borrowing from the project code as a starting point. For example, we could take some smell in the project code base and do a refactoring workshop for it.

Javid

On Tue, Mar 11, 2008 at 9:55 AM, Sam Larbi <sla...@gmail.com> wrote:

Javid Jamae

unread,
Mar 11, 2008, 11:25:22 PM3/11/08
to agileh...@googlegroups.com
Another idea is to have a regular Coding Dojo (http://codingdojo.org/cgi-bin/wiki.pl?WhatIsCodingDojo). This is where the group practices "TDD katas"--short exercises in TDD that you are meant to memorize and practice by repeating over and over again. See: http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata ... This would be nice because:

- There are several existing katas that could carry us for several sessions
- Participants can practice katas in whatever language they want
- Participants can create there own katas based on situations they encounter at work.
- It requires less preparation time to organize than a TDD workshop or starting an open-source project
- Participants don't have to ramp up on a project to participate

Javid
Reply all
Reply to author
Forward
0 new messages