Software Design School

SDE#002: Ready to TDD

Struggling to understand how good design could emerge by developing one test after another while applying the TDD? Are you uncertain about how TDD can be able to reduce the complexity of your software system?

Course Info

Date

Time

Course

Trainer

Location

Language

Price

Length

May 6th
09:30 am
Online
English
€275.00
3 hours

TDD is not a testing practice!, TDD is an emergent design technique to grow software by reducing its complexity

Participants to this seminar will learn the original TDD defined in XP by seeing it applied live. TDD is the technical key to offer your client/product owner the ability to change requirements at will. Yet TDD is often confused with a form of testing.

Francesco is one of the pioneers of Extreme Programming, he has been applying TDD since 1999. He will show you how he applies it in a concrete case.

You will learn to identify a series of tests capable of incrementally implement a user story and, at the same time, able to elicit a design capable of reducing the complexity of the current software system.

WHAT IS EMERGENT DESIGN? ISN'T TDD, UNIT TESTING? WHAT IS THE PROCESS BEHIND TDD? HOW TO CHOOSE THE NEXT TEST?
Software Design Explained

In this seminar, Francesco shows the participant how to apply TDD, the key practice to offer the benefits of Agile Methods and to give your clients the opportunity to change requirements at any time.

ABOUT THIS SEMINAR
Software Design Explained

In TDD you incrementally develop features, one end-to-end test at a time. TDD has an exploratory nature. The final design of objects and classes is not known ex-ante but emerges as a result of a series of end to end tests. You let your software surprise you. You make design decisions by looking at the code you developed to fulfill your incremental end-to-end tests. That's why TDD is a key technique in emergent design.

Developers are often very uncertain and skeptical about TDD. Sometimes they mistake TDD for a form of unit testing in which you test the methods of a class before writing their code. Although writing unit tests in test-first mode has its advantages, this practice should not be confused with TDD.

The goal of TDD is to make the design of your software system easy to change: malleable. In this way every change requested by your client can be delivered at low cost in a short time.

Software Design Explained

In TDD you continuously refactor the design structures of your software system. Developers often think refactoring is useful because it allows you to rename methods and variables and to extract code into new methods - actually, many teams manage to complicate their design by extracting methods! - In fact, the most relevant use of refactoring is to emerge new and simpler combinations of design structures and patterns by injecting new objects into the system.

By attending this seminar you will be able to learn what TDD really is. Understand the TDD process and how to make effective decisions about how to choose the test path to incrementally grow your system by simplifying its design structure.

WHO IS IT FOR?

This seminar is ideal for developers, coaches, team leaders - junior or senior. And generally to anyone interested in learning more about agile practices.

ABOUT THE LECTURER

Francesco Cirillo is a Senior Software Designer, an expert in emerging and traditional design with more than 30 years of experience.

Francesco is one of the pioneers of agile methods. He started working on XP and TDD in 1999. He was chosen by Kent Beck as reviewer of the second edition of the book Extreme Programming Explained.

Francesco has worked at the forefront of the software industry for more than 30 years. In a career spanning startups, multinationals and freelance consulting, he has mentored thousands of professionals, developers, managers and software teams.

He created the Anti IF Campaign in 2007 to raise awareness in the international community of developers to apply good design principles.

Francesco created the Pomodoro® Technique, a renowned time-management tool used by millions of people all over the world, while a university student looking for a way to get more done in less time.

He has been running the Software Design School since 2019. A training school for Software Designers

Read the Francesco Cirillo's complete profile.

  • 1 PERSON REGULAR
    €275.00
    included VAT, if applicable
  • REQUEST INFORMATION
  • DETAILED PROGRAMME
  • LANGUAGE
    English
  • LENGTH
    3 hours
  • WHEN
    May 6th, 2020
  • TIME
    09:30 am
    Berlin, Germany time
  • WHERE
    Online meeting with Zoom
  • COURSE SIZE
    Min 4, max 20 people
  • EASY TO ATTEND FROM
    Europe
    Asia
    Africa
  • TERMS OF SERVICE
Testimonials

Marco Isella

Software Engineer

Francesco has changed the way I work, and more.

Simone Casciaroli

Senior software developer (Contractor) at Nutralete

Since attending this program with Francesco Cirillo, and learning his approach to software design, I have realized that my previous understanding of the topic was not as effective as I once thought. By understanding his approach, I have been able to significantly improve my own software design, benefiting both my team and myself. Despite the fact that my course was focused solely on software design, it has helped me become an all-around better software developer.

Matteo Regazzi

Agile Coach at inspearit Italy

Having experienced Francesco’s work and methodology in the past, I wanted to study with him again and try his mentoring program. Amazingly, I was able to regain immediate momentum, motivation, and obtain astonishing results, even though working remotely. This was also due in part to the organization of the sessions, which were always efficient and productive. One of the best investments I have ever made in myself. Thank you!

MORE RECOMMENDATIONS FOR YOU

Software Design Mentoring with Francesco

Software Design Mentoring with Francesco

Are you ready to take your software design skills to the next level?

MORE
Software Design Explained

Software Design Explained

Learn how to effectively apply design patterns, Anti IF practices, Refactoring, CRC, TDD, User Stories.

MORE
Software Design Adventures

Software Design Adventures

Learn how to apply software design to make the construction of your sofware system effective and enjoyable

MORE