Essential Test-Driven Development

This 3-day course (or five 4-hour live remote sessions) for developers provides hands-on experience with the techniques of Test-Driven Development (TDD). TDD enables incremental and iterative software development, without degrading quality.

Participants learn test-first, refactoring, the use of test-doubles, and other core skills. They learn how TDD provides and maintains a very low defect-count. They will experience how they can work fearlessly, swiftly, and comfortably on new features, design improvements, and bug-fixes.

One topic that sets this course apart from other TDD courses: Participants learn how to update legacy code, by first building characterization test coverage for the code that is changing, while protecting features of the legacy system that do not yet require any alteration.

Your choice of programming languages: C++, C#, Java, JavaScript, Python, Ruby, VisualBasic.Net.

You might want to first jump to all our favorite testimonials for this course.

Objectives

  • Why TDD helps developers work fearlessly, swiftly and comfortably on new features and bug-fixes.

  • How to craft a concise, expressive, repeatable microtest.

  • Using test-doubles to avoid unpredictable dependencies, and to speed up testing considerably.

  • Adding characterization tests for existing legacy code.

  • Refactoring for maintainability and extensibility.

  • How TDD helps preserve sane schedules, work environments, and work/life balance for developers.

  • Collaborative techniques to establish a diligent TDD practice within the team.

Audience

Software developers, software engineers, lead programmers, and architects.

Prerequisites

  • Ability to read and understand the basics of one of the selected programming languages.

  • Familiarity with an Agile framework such as Scrum, XP, or Kanban.

Options

Coaching:

Ask about adding our very popular TDD coaching day, usually scheduled immediately following the course. During this day the course participants and the instructor explore your organization’s particular concerns, code, technologies, and challenges.

Frameworks/APIs:

Typically the course is delivered in a way that is generalized for any software development environment. The course can be taught in multiple programming languages at the same time, as long as developer preferences are known well in advance.

The course can also be oriented towards the following technologies:

  • Amazon Web Services (AWS): Labs will be oriented towards AWS Serverless Application Model (SAM) and ways to develop your Lambda functions test-first.

  • Test-first with React.js or Angular: JavaScript or TypeScript only.



Testimonials

Recent testimonials from courses delivered remotely:

"Rob did a great job, he is engaging and a great story teller, super knowledgeable and did a great job of engaging everyone."

“Rob's thorough theoretical as well as practical knowledge makes him a great teacher and sets him apart from others. It really helps when a teacher could actually look at the production code [during the follow-up coaching] and give suggestions on how/where the system could be improved. Implementing all his suggestions and the techniques that we learnt in the class would definitely make our product quality better.”

"Rob did a really good job hammering home the importance of using TDD. I can see how that would help a ton with keeping system processes clean, make QA's job easier, and more stable product for our customers."

“I appreciated that the class was well taught and well run - especially given the size of the group. No matter how much you read, it's hard to replicate the experience of being able to learn from someone with much greater actual and practical knowledge on a subject. It was a cool class, and I learned a lot.

"Absolutely awesome class."

“Rob, I enjoyed the class and learned a lot. I am amazed at your experience and knowledge. You've helped us clear some hurdles our team has been experiencing for a long time. This may be the first training class I've taken where I feel [that] on Monday we can start implementing what we've learned to make our product better.

"Thanks a lot for your insight and wisdom especially with real life anecdotes to help us learn from the mistakes of others before us."

"I really enjoyed your class. Your extensive knowledge comes across in an easy to digest manner."

"You are a wonderful teacher, thank you for being so committed to helping us learn (and not giving away the answers right away)!"

"Rob is very knowledgeable and his positive attitude benefits the course."

Oldies but goodies:

“Rob brought his Test Driven Development curriculum to a group of software engineers that were hard core unit test experts.  Rob quickly elevated the level of his class to match the expertise of the students resulting in an engaged class that had many break out discussions during breaks, before class and well into the evening hours after class.  Rob’s experience and expertise are world class and this separates his training from the pack by a large margin.” — Sam P., Manager Software R&D, Omnyx, Pittsburg, PA

“The course we received was top-notch—very well designed and expertly delivered. Very strong focus on keeping all our developers engaged and there was a genuine desire to provide instruction that was relevant and meaningful afterward. Some of our developers have taken to TDD adoption more than others, but I would say as Project Manager that there has been a noticeable reduction in rework and improvement in overall code stability as a direct result of the training.” — a Chief Project Manager at a Fortune 100 energy company

“Before the class, I thought I had a handle on what test driven development was in theory. However, going through the class finally let me understand why it works and gave me insight into how to make TDD work for me and our company. The exercises were fun and explored real problems that I ran into when trying to do TDD on my own, and Rob gave us good insight into ways to improve our projects. The software releases since taking this class as a team are much more solid than the ones before it.”  — Kevin H., FMC Technologies Schilling Robotics

“Rob’s class was very helpful to me.  I had been attempting to use unit testing from online training on my own but I wasn’t able to internalize it until after Rob’s class.  His exercises were very enlightening and helped me really understand points that I had been missing.  It also allowed us to level set as a team and make talking about it easier.  He was also very insightful and helped us with real examples in our code.  It was by far one of the most useful trainings I have done in my career.”  — Eirik A., FMC Technologies Schilling Robotics

“The exercises are rich and enlightening. Rob’s easy manner and depth of knowledge allow him to adjust the class to the specific need of the people in the room. Definitely a worthwhile three days!”

“Excellent workshop – clearly lays the foundation for TDD practices that you can easily apply to your day-to-day coding.”

“Very well paced. Informative. Lots of practical exercises. Enjoyable atmosphere. Well planned in every respect.”

“Learning TDD from books or by practice works, but Rob Myers’s class provided quick feedback through direct, well designed practice, with concise and beneficial experience stories and theory. The power of communal learning is realized within the great safe container and the structure of the class helped cover the details and gotchas. It was very helpful to do TDD with legacy code.”

“Perfectly tuned exercises. Plenty of challenge, but not too much. Finding the right balance of difficulty and success is hard to do, and these were just right.”

“A fun, informative, and inspiring course!” — Damien F.

“…got me thinking differently about programming” — Craig H.

“I really enjoyed the experience. I know I was forced to think (and challenged) because I feel mentally…exhausted.”