Difference between revisions of "TDD Bootcamp"

 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
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 3-day Applying TDD and Refactoring course, or may follow that course.
+
== Overview ==
 +
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.
 +
<br>
 +
<br>
 
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:
 
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:
First and foremost, 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).
+
* 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).
Second, many of the developers are working with large, poorly coded (for unit testing at least) applications. Doing TDD to build a Stack simply does not address the issues they'll have when they try to work on their code, nor does simply saying "snip the dependencies".
+
* 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.
 +
<br>
 +
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.
 +
<br>
 +
<br>
 +
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.
 +
<br>
 +
<br>
 +
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
 +
 
 +
 
 +
== Audience ==
 +
These sessions are primarily intended for one team of software developers.
 +
 
 +
 
 +
== Level ==
 +
Immersive: This bootcamp model leans heavily on the attendees commitment and desire to progress their project work using TDD.
 +
 
 +
 
 +
== Prerequisites ==
 +
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.
  
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 web, on their own, is more valuable.
 
You are able to explain the "why" behind your advice.
 
  
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.
+
== Objectives ==
 +
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
  
Having at least the shell of a working CI site helps immensely but is not a prerequisite.
 
  
== Agenda
+
== Outline ==
 
* Intros
 
* Intros
 
* TDD is not unit testing: The deep motivation and benefits of TDD
 
* TDD is not unit testing: The deep motivation and benefits of TDD
Line 22: Line 53:
 
** who is responsible for the quality of the s/w you write?
 
** who is responsible for the quality of the s/w you write?
 
** What do you do to ensure it?
 
** What do you do to ensure it?
* System overview
 
 
* What to test?
 
* What to test?
 
* Test tools selection
 
* Test tools selection
 
* Test, TDD and refactoring
 
* Test, TDD and refactoring
 
* Lessons learned
 
* Lessons learned
 +
 +
 +
== Maximum Participants ==
 +
single team, 11
 +
 +
 +
== Environment - Room, Tools, Texts ==
 +
[[Course Environment - Workshop Style4]]

Latest revision as of 12:47, 23 March 2008

Overview

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


Audience

These sessions are primarily intended for one team of software developers.


Level

Immersive: This bootcamp model leans heavily on the attendees commitment and desire to progress their project work using TDD.


Prerequisites

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.


Objectives

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


Outline

  • Intros
  • 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


Maximum Participants

single team, 11


Environment - Room, Tools, Texts

Course Environment - Workshop Style4