Archive for January 12th, 2009
-
The problem with most TDD trainings is…
… they are too short.
Mark Levison has posted an interesting article, Making TDD Stick, on InfoQ that covers some of my observations about how to sustain test-driven development (TDD) in an organization. I have found the best way to teach TDD is to mentor\pair with an individual one-on-one until they “get it” (about 4 to 6 weeks).
Unfortunately, one-on-one mentoring is not feasible or economic as bigger organizations try to improve their quality with TDD. There are just not that many self-proclaimed TDD experts out there. To solve this scarcity issue, often times big companies bring in a TDD expert to provide classroom training for the 40 or so developers deficient in this skill. Once the trainer has been scheduled, the participants are rounded up, sit in a one or two day class, the consultant gets their check and then nothing happens!
I have not seen the model of flying in a training for a one or two day training ever work. Why? People do not know what to do after the trainer leaves. TDD is hard and makes highly skilled (and highly paid) professionals feel like morons. After a day of flailing about in their IDE, most developers jettison the whole thing and walk away with the idea that TDD only works on “toy projects”. Not surprising since that is all they saw in their training – an easy-to-understand and easy-to-teach example that fits within the confines of a day. Little guidance or no guidance is provided on how to apply the TDD concepts back at your desk.
What is my alternative? Make the class longer – about two to three weeks.
- Week One – Basic TDD training (up to 1 day) followed by 4 days of practical application.
- Week Two – Advanced TDD concepts (up to 1 day) followed by 4 days of practical application.
- Week Three (optional) – Five days of practical application and mentoring.
At the end of each day, I gather all the team members together for an afternoon show-and-tell of all the tests they wrote. Everyone is required to show at least one test. The purpose of the discussion is to learn where people are having trouble, who needs help from the trainer, what is working for the developers and allow people to express their frustrations. The daily retrospective amplifies the learning and allows the teams members (or the trainer) to make mentoring connections among themselves. At least you now have a fighting chance to make TDD succeed instead of people suffering alone at their desk hating life.
Frequent Topics
Agile Agile SD Certified ScrumMaster Coaching Collaboration Communication Conferences Daily Scrum Design Excellence Design for Six Sigma Extreme Programming Games Innovation Games Lean Legacy Code Links of the Week Measures Movies Pair Programming Personal Planning PMI Practices Presentations Product Owner Quality Refactoring Retrospectives Rugby Scrum ScrumMaster SIMSOC Spain Team Test-Driven Development Testing Tools Training Transitions Travel Voice of the Customer
Calendar
Recent Comments
- Kenneth van Rumste on Scrum Roles Defined
- Carlton on Scrum Roles Defined
- Kenneth van Rumste on Scrum Roles Defined
User Groups
Archives
- May 2011 (1)
- February 2011 (1)
- January 2011 (5)
- November 2010 (3)
- October 2010 (6)
- September 2010 (5)
- August 2010 (4)
- July 2010 (6)
- June 2010 (2)
- May 2010 (2)
- April 2010 (5)
- March 2010 (3)
- February 2010 (5)
- January 2010 (7)
- December 2009 (8)
- November 2009 (2)
- October 2009 (6)
- September 2009 (9)
- August 2009 (7)
- July 2009 (4)
- June 2009 (3)
- May 2009 (3)
- April 2009 (5)
- March 2009 (6)
- February 2009 (6)
- January 2009 (7)
- December 2008 (10)
- November 2008 (11)
- October 2008 (10)
- September 2008 (4)
- August 2008 (5)
- July 2008 (5)
- June 2008 (8)
- May 2008 (5)
- April 2008 (3)
