5 days or 10 days
The TDD bootcamp is an experience-driven workshop, not lecture-driven. The "written" materials of the course are normally a few posters on the wall and the agenda. The workshop may be supplemented with learning aids from the Agile TDD and Refactoring course, or may follow that course.
While it may be possible to lecture on TDD and refactoring for days on end, our observations on TDD adoption is that the primary problems are two-fold:
- Developers have been trained to write the code first and manually debug to test their solutions. Replacing this changed habit with one that requires more forethought, discipline, and more code, cannot be done through lecture. It must be done through practice for an extended period of time. The bootcamp is an alternate approach to “sit side-by-side” instruction (which has a low adoption rate) or the “use consultants for ½ your team” (which has a high adoption rate, along with a high cost).
- Many of the developers are working with large, poorly coded applications and time, advice, and encouragement is needed to overcome the initial obstacles to enabling test-driving modifications to that code.
The design of this bootcamp assumes:
- While lecture is valuable, experience is more valuable.
- While knowledgeable instructors are valuable, encouraging the students to find the knowledge on their own, is more valuable.
The theme of the bootcamp is to dare people to do things differently than they did last week--TDD is just one part of that. They don't think working off the main trunk or a project branch will work? OK, how about we just try it for two weeks? They don't think they can check in every 30 minutes? Ok, just try it. They don't think they can evolve towards the software architecture they have in mind with YAGNI? Maybe, let's try it YAGNI for a while, ruthlessly.
Having at least the shell of a working CI site helps immensely but is not a prerequisite.
Methods of Education
primarily workshop exercises & coaching; some discussion, presentation, Q&A
These sessions are primarily intended for one team of software developers.
Immersive: This bootcamp model leans heavily on the attendees commitment and desire to progress their project work using TDD.
The bootcamp is best done during the first iteration of a significant project. You should be able to work in a common development environment which should be set-up beforehand.
Upon completion of this course, students should be able to:
- test-drive in their existing code-base
- run CI builds
- develop with CI as a key value (as a developer habit, not a tool-set)
- apply basic refactorings and refactoring tools
- transform agile OO models into OO code and tests
- TDD is not unit testing: The deep motivation and benefits of TDD
- Why we’re here
- investment in quality
- current SW not acceptable---you and others
- who is responsible for the quality of the s/w you write?
- What do you do to ensure it?
- What to test?
- Test tools selection
- Test, TDD and refactoring
- Lessons learned
single team, 11