The value comes because learning good design is an essential part of learning to use design patterns in the course (the focus of Design Patterns Thinking) and in Test-Driven Development (the focus of Sustainable Test-Driven Development).


Course Objectives: 

This course is conducted over five days. In the first three days, we focus on the qualities. principles, and practices of good object-oriented analysis and design using the patterns as guidance. Exercises are done at tables and whiteboards. In the final two days, we teach the sustainable process of TDD through lecture and hands-on coding exercises. Through this process the students learn how TDD leads to patterns, how patterns lead to testability, and how they, together, empower the team to create high-quality software in an efficient and sustainable manner.


Learning Objectives: 

A the end of this course, you will understand the following:

  • What patterns are

  • How patterns lead to testability

  • How TDD leads to patterns

  • How patterns and TDD work together to empower teams

  • How patterns and TDD combine to realize high-quality software efficiently and sustainably


Days 1-3: Design patterns

  • Qualities, principles, and practices of good object-oriented analysis and design using design patterns

  • Exercises in design


Days 4-5: Sustainable Test-Driven Development

  • Sustainable approach to TDD

  • How TDD leads to patterns

  • Coding exercises

Full Description

Net Objectives has been teaching courses on design patterns, agile software development, and sustainable Test-Driven Development for many years. We believe in the value they bring to the practice of software development. Emergent Design shows how to incorporate these complementary approaches powerfully for more effective design and development.


Design Patterns

The traditional view of the design patterns movement is that they represent reusable design elements; in reality, they deliver value at a much deeper level. There is a reason that certain particular patterns in design have been singled out, named, and focused upon. When you study the patterns, you are in fact studying the DNA of good design: how to create flexibility, extensibility, and maintainability without creating excessive complexity and over-design. Not every good design is a pattern but every design should reflect the level of quality of a pattern. Patterns provide a deep and rich language that improves the fidelity of communication and collaboration across the team. Also, patterns are not limited to design; there are patterns in every part of development including analysis, implementation, and testing.

Sustainable Test-Driven Development


Test-Driven Development (TDD) is a very powerful tool for developers to create high-quality software solutions. By using tests as both analysis and design tools, we can increase the velocity of work and improve the confidence of the team, allowing for a more aggressive pursuit of maximum business value. However, it is easy to create sustainability problems as the suite of tests becomes large.


If the team is not properly trained then the test themselves can become a maintenance burden especially in an Agile environment where new requirements are constantly flowing into the work. This is such a common problem that it has led many to conclude that TDD is not inherently sustainable. We disagree. We believe sustainability comes from what you think TDD is, how you do it, and how you integrate it with the development process overall.


Emergent Design

This is a bundle of two courses: Design Patterns Thinking and Sustainable Test-Driven Development into a powerful five-day course. By bundling the courses, students save a day of training over taking the two courses separately.


Knowledge of an object-oriented language (Java, C#, C++, etc.) is important in order to understand the various implementation options we investigate. Net Objectives has online assessments for students who are uncertain about their knowledge level, and online training tools that can help prepare you to get the most out of the course. In particular, the participant must be familiar with inheritance, polymorphism, encapsulation, abstract classes and composition.


For the final two days, students should have computers with a working IDE installed on them.

Max class size



5 Days




Emergent Design Bundle