The World’s Best Intro to TDD: Level 1
Test-driven development (TDD) helps programmers increase their capacity to deliver features, build effective work habits, and improve their understanding of the principles of good software design. In addition to basic TDD training, this course unlocks some of the secrets of modular design from one of TDD’s master practitioners.
If you’d like to start the self-study version of this course, then get started here!
Audience
You have had professional experience on at least one software project. You would like to know how to design software incrementally with test-driven development.
Objectives
In this course, you will learn…
- the various objectives of TDD: fewer bugs, clearer design, and delaying “project heat death”
- two central strategies for evolving designs and why you need both
- using test doubles (also known as “mock objects”) effectively as design tools
- how to guide designs and architectures to evolve safely
- how TDD helps groups decentralize design decisions with confidence
- how to balance delivering features with maintaining the health of the design
- safe, effective refactoring
- the secrets of truly modular software design
- how do to TDD even when it’s hard: databases, frameworks, HTML… everywhere
Topics
- An introduction to TDD: what it is and what it is not
- Using Theory of Constraints to help you learn TDD effectively
- The Simple Design Dynamo: a few simple rules for evolving great designs
- The two fundamental SOLID principles (and how the other three just happen)
- The two central styles of TDD: “London school” and “Detroit school” (you need both)
- Client-First Design with Test Doubles (also known as “mock objects”)
- test && commit || reset
- The differences between evolutionary design in FP and OOP
- How evolutionary design integrates with Design Patterns
- Universal Architecture and how to avoid the integrated tests trap
- Integrating TDD into your overall software development process
Preparation
Participants will need the following to attend this course.
- A working software development environment in your preferred programming language, including a personal version control system, such as git.
- Something to write with, and something to write on. I suggest index cards or sticky notes and a notebook.
Remote Training Preparation
Please do the following at least one day before the course is scheduled to start.
- Upgrade Zoom to the most recent version.
- Check audio, video, and screen sharing on Zoom.
Delivery Options
Live/Remote Private Course
The standard course is available as 6 sessions of 1/2 day each scheduled within a 2-week period. The course is suitable for groups up to 20 people. Larger groups should run the course multiple times.
Add team working sessions to your course in order to better support teams working together during the course. During the 1/2-day team working sessions, we practise the techniques of the course using ensemble/mob programming.
It is also recommended to add follow-up working sessions to be scheduled 1 month, 3 months, and 6-12 months after the course ends, as a way to support the group as they apply what they’ve learned to their daily work.
Start the booking process for your live/remote course.
Self-Study
This course is available for online self-study, with bulk-purchasing options available if you’re purchasing on behalf of a group.
Live Support Package
Some clients use the online self-study course to learn the fundamentals on their own, then schedule live working sessions with me for guided practice, design review, and to get their questions answered. This schedule gives you an idea how you might use this approach with your group:
- Week 1: participants complete the course individually or as a group
- Week 2: question and answer session plus 1 or 2 team working sessions in the style of ensemble/mob programming
- 2 weeks of regular work
- Week 5: question and answer session plus 1 or 2 team working sessions in the style of ensemble/mob programming
- 1-2 months of regular work
- question and answer session plus 1 or 2 team working sessions in the style of ensemble/mob programming
After this point, the group schedules additional live working sessions as needed.
Request a quote for your self-study live support package.