O'Reilly logo
live online training icon Live Online training

Agile Code with TDD and Kata

Stay agile over time by writing agile code

Topic: Software Development
Byron Sommardahl

It’s hard to dispute, anymore, that Agile processes are more effective at producing successful software projects than traditional methods. But more often than we’d like to admit, software projects still fail or miss the mark severely. The problem of software development is complex and must be attacked from many fronts. Agile processes alone are a great start, but they are not a silver bullet.

All code is agile when it is new. But over time code becomes less and less welcoming of change. As a code base grows, its ability to adapt to new features and bug fixes degrades. Large amounts of rigid, unmaintainable code can bring even the most mature agile project to its knees. How can we prevent this? Test-driven development (TDD) might be an effective answer for you and your team. After attending this training, you will have the tools and the knowledge you need to get started with TDD in your team or refresh skills you may have missed along the way. You’ll also have a powerful way to practice TDD with your team to help it stick! Once your team adopts and commits to TDD, you will be on the road to reclaiming agility in your project.

What you'll learn-and how you can apply it

  • Recognize the different types of tests and their appropriate uses
  • Refactor legacy code with tests
  • Apply scientific thinking to coding by writing tests first
  • Write test doubles, mocks and fakes
  • Design better code with tests
  • Handle more advanced testing situations
  • Keep a big picture perspective while coding in the details
  • Learn how to use kata to practice and see TDD working in a tighter feedback loop

This training course is for you because...

  • You are a developer who takes pride in his or her work
  • You have experienced some projects where the code eventually turned on you
  • You can’t stand the thought of another failed or challenged project
  • You want to build code bases that welcome change even as they grow
  • You’re an experienced developer who is new to or skeptical of TDD
  • You want to learn a new way to fight unmaintainable code

Prerequisites

Course Set-up

Recommended Preparation

Recommended Follow-up

About your instructor

  • Byron is a 30+ year veteran in software development and his passion for great code and innovative products has never diminished. In 2010, Byron helped found Acklen Avenue, a software development company in Nashville, TN. Since then, leading as many as 10 simultaneous projects, Byron has gathered a great deal of valuable knowledge in product ownership and agile engineering. Byron's background in quality software development, project management, and expert product ownership has given him the knowledge to lead his teams and his clients to consistent success.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Segment 1: Always Start With “Why” (45 minutes)

  • State of Software Development Industry
  • Everything I touch turns to concrete!
  • Code Agility
  • Scientific Programming (TDD)
  • Implementing where you are
  • Next Segment - Getting our hands dirty!
  • Exercise/activity
  • Q&A

Break (15 min)

Segment 2: Tests First (45 minutes)

  • Scientific Method for Software Development
  • Katas for Learning/Practice
  • Coding the String Calculator
  • Finish the kata
  • Next Segment, going deeper with dependencies
  • Q&A

Break (15 min)

Segment 3: TDD with Dependencies (60 minutes)

  • Types of Tests (Unit, Integration, End-to-end, etc.)
  • Coverage
  • Test Isolation
  • Dependencies and Substitutes (Injecting Dependencies, Hand-rolled Substitutes, Libraries)
  • Practice (Kata with Simple Substitution, Kata with Advanced Substitution)
  • Q&A

Segment 4: Course wrap-up and next steps (15 min)

  • Practice using kata
  • Work with Business, Not Against
  • Q&A