Adaption SoftwareThere is a revolution going on.
 . Home . Contact .   
5-Day Course:
Test-Driven Development and Refactoring

Get Test-Infected!

TDD and refactoring can help you write cleaner, clearer code, faster. You can produce nearly bug-free code that is much easier to extend and maintain. As useful as this is for new code, it can be a lifesaver for legacy code.

Once you get the hang of it, TDD is also more fun. It is, as they say, infectious. But don't take our word for any of these claims. Take the course and see for yourself.

Format and Contents

Our 5-day course gives you soup-to-nuts exposure to tools and techniques for doing TDD in Java, using JUnit and a good refactoring Java IDE (the on-site version of the course is also available in other languages). Short morning lectures are followed by hands-on programming sessions. You start using TDD as soon as possible, and for as long as possible each day.

You'll learn to write good tests, organize them clearly, and work in tiny increments of design/test/code/refactor. You'll learn to retrofit tests into legacy code without destroying pressing production schedules.

The special fourth day introduces you to pair-programming, frequent code integration, and a common codebase, so that you can see what a difference these other practices make to team productivity and knowledge sharing.

Note: Course contents are subject to improvement without notice. :-)

Course Outline and Schedule

Day

Time

Contents

Day 1

09:00 - 09:30

Brief Intro
· TDD: How can this possibly work?
· Refactoring
· A New Way of Working
· New Code vs. Old Code

09:30 - 12:00

· JUnit Basics
· Write tests for the "Trivia Game" example

12:00 - 13:00

Lunch

13:00 - 13:30

Refactoring
· Refactoring in baby steps
· Code "smells" in initial exercise
· Fixtures and Test Suites
· The Rhythm: a little test, a little code, a little refactoring.

13:30 - 14:00

Refactor code from test-last exercise, using fixtures and test suites.

14:00 - 17:00

Use full-up TDD/refactoring to extend the trivia game example.



Day 2

09:00 - 10:00

Taking it Deeper
· Fakes and Mocks
· Static vs. Dynamic Mocks
· Interfaces Are Key

10:00 - 12:00

Next Steps for The Trivia Game
· Persisting to a Flat File
· Mocking a Flat File Statically
· Mocking a Flat File Dynamically
· Additional Features (as time permits)

12:00 - 13:00

Lunch

13:00 - 16:00

Applying Mocks to the Trivia Game
· Persisting to a DB
· Mocking the DB
· Additional Features (as time permits)

16:00 - 17:00

Retrospective
· Static vs. Dynamic experiences
· Cost-benefit analysis
· Lessons learned



Day 3

09:00 - 10:00

Dealing With Legacy Code
· Duplication and Dependencies
· Retrofitting Tests
· Bite-sized Chunks
· Go Straight for the Pain

10:00 - 12:00

Writing Tests for Your Own Code
(in-house courses)

· Break into teams
· Select local production code
· Each team gets different code

12:00 - 13:00

Lunch

13:00 - 16:00

Continue With Legacy Code Exercise

16:00 - 17:00

Retrospective
· Team leaders present results
· Brief code reviews
· Lessons learned



Day 4

09:00 - 10:00

More practices!
· Pair Programming
· Shared codebase
· Frequent integration
· Resolving source diffs/conflicts

10:00 - 12:00

Setting up for Shared Code
· Preparing the infrastructure
· New Example Code; New Requirements
· Break into Pairs!

12:00 - 13:00

Lunch

13:00 - 16:00

· Start with one pair
· Add one new pair each half-hour.

16:00 - 17:00

Retrospective
· Pair leaders present results
· Review one pair's code
· Lessons learned



Day 5

09:00 - 16:00

Flexible Day! Options:
· More work in pairs, -- or --
· More legacy code work, -- or --
· Testing GUIs and Test Analysis Tools

16:00 - 17:00

Retrospective
· Meet with managers
· Lessons learned
· What worked? What didn't?
· Next steps?



    - TDD Courses
    - XP Courses
    - 3-Day TDD Course
    - 5-Day TDD Course
    - 3-Day Adv. TDD
    - XP Programmer Wk
    - XP Team Week