Software Engineer
Francesco has changed the way I work, and more.
Struggling to understand how to have a good design emerge by developing one test after another while applying Test-Driven Development (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
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.
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 mistaken for 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.
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.
This seminar is ideal for developers, coaches, team leaders. Both junior and senior profiles can benefit from it. And generally for anyone interested in learning more about Agile practices.
Francesco has worked at the forefront of the software industry for more than 30 years.
In a career spanning startups, corporations and freelance consulting, he has mentored thousands of professionals, developers, managers and software teams.
In the 1990s he worked as a Senior Consultant and Mentor for Sun Microsystem, expert in Software Architectures and Software Development Processes and Java and Object-Oriented Evangelist.
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.
He created the Anti IF Campaign in 2007 to raise awareness in the international community of developers to apply good design principles.
He has been running the Software Design School since 2019.
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.
Software Engineer
Francesco has changed the way I work, and more.
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.
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
Are you ready to take your software design skills to the next level?
MORELearn how to effectively apply design patterns, Anti IF practices, Refactoring, CRC, TDD, User Stories.
MORELearn how to apply software design to make the construction of your sofware system effective and enjoyable
MORE