Agile Design and Patterns Resources

This page has a wealth of materials on design patterns, agile design, object-oriented analysis and design. If you are looking for training in any of these topics please go here.

Good places to start are our design patterns page or our Roadmap to Lean-Agile Programming Competencies for a path to learn about our approach to better design, programming and testing.  Extended XP Engineering Practices is currently being built, but provides another good overview of what is useful to know.

If you are considering taking one of our design courses, and want to know if you're ready
Our Pre-Course Materials page (GUEST ACCESS) includes assessments for you to take to see if your skills are optimal for attending the course, and includes links to study materials that will help you bring them up where needed.

If you have taken one of our design courses, and want to make sure your retention is high
Our Post-Course Materials page (SUBSCRIBER ACCESS) includes an assessment and a large number of resources to help you redress any knowledge points that you don't feel you retained as well as you'd like. Note that you need to be a Subscriber-level user, which means you have taken one of our courses. Available to anyone is the Design Patterns Repository and Bibliography (GUEST ACCESS) of books we recommend and use in the courses.

If you want to understand Net Objectives' approach to technical skill development
Our "Roadmap to Lean-Agile Programming Competencies" (GUEST ACCESS) is your best place to start for this.

If you just completed one of our Lean or Agile courses and want to explore the resources referred to in the course
Our Lean-Agile courses refer to Emergent Design and encourage developers to do some high level exploration of your problem domain before jumping in, as well as attaining skills in Emergent Design. Look at the following for domain analysis:

Note that links marked (REGISTERED ACCESS) require registration. Those marked (SUBSCRIBER ACCESS) require you to have taken a course of ours (which includes registration).

Agile Design and Patterns

Past Webinar
past webinar
(guest access)
This presentation is actually a practical demonstration of refactoring a legacy system to improve its testability.
Past Webinar
past webinar
(guest access)
This presentation investigates the general design advice promoted by the authors of "Design P
Article
article
(guest access)
In this featured article, its author Amir Kolsky, Senior Consultant, Agile coach and trainer at Net Objectives, discusses the reasons for the emergence of the myth that Agile teams do not write documentation and the place documentation does take within an Agile process.
Article
article
(guest access)
This featured article is a continuation of the article appearing in the October 2007 Ezine by Amir Kolsky, Senior Consultant, Agile coach and trainer at Net Objectives.
Past Webinar
past webinar
(registered access)
This presentation teaches two patterns, the Analysis Matrix and the Abstract Factory, using a single example to demonstrate them both.
Article
article
(guest access)
This article, by Alan Shalloway, CEO and Founder of Net Objectives, shares his approbation that Test-Driven Development is rapidly becoming a standard of good software development teams.
Article
article
(subscriber access)
This is about using asserts and their relationship to unit testing. These techniques could be used for different, synergistic, purposes.
Past Webinar
past webinar
(registered access)
The Bridge Pattern is one of the most common and useful patterns from the book "Design Patterns, Elements of Reusable Object-Oriented Software," by Gamma, Helm, Johnson, and Vlissides. However, it can be a little tricky to understand.
Article
article
(guest access)
It depends...on what you think patterns are. By the end of the article, you will have the answer.
Past Webinar
past webinar
(registered access)
This presentation provides an argument in favor of developer unit testing, and illustrates the advantages this brings.
Article
article
(registered access)
This featured article, Chapter 15 from the Second Edition of Design Patterns Explained: A New Perspective on Object-Oriented Design, shows how to find variation using CVA, then follow the lessons of design patterns to create designs that are flexible and easily testable.
Past Webinar
past webinar
(guest access)
This presentation illustrates the Commonality-Variability Analysis technique, which helps us to find the strong abstractions that can enable good design.
Past Webinar
past webinar
(registered access)
This presentation examines The Composite Pattern, and demonstrates its value and its variations with a concrete example.
Past Webinar
past webinar
(registered access)
See descriptions/recordings of the Day Of SAFe webinars
Article
article
(registered access)
These are some code examples from our course: Design Patterns Explained.
Book
book
(guest access)
Design Patterns ExplainedA New Perspective on Object-Oriented Design
Past Webinar
past webinar
(guest access)
This webinar discusses how design patterns can be used to improve the entire software development process - not just the design aspect of it. Design patterns are usually thought of as being limited to solving local design/implementation problems. However, they can be very useful in:
Article
article
(registered access)
The Design Patterns Matrix is a nice summary of the Gang of Four Patterns and others.
Book
book
(guest access)
Training and Resources For: Emergent Design: The Evolutionary Nature of Professional Software Development by Scott L. Bain
"I was expecting this to be yet another book on Design Patterns, but it really isn’t. This book attempts to look deeper into questions that cannot be easily answered and...
Past Webinar
past webinar
(guest access)
Read Richard Sharpe's Blog, and see an Interview with Scott about his book: 'Emergent Design: The Evolutionary Nature of Professional Software Development'.
Past Webinar
past webinar
(guest access)
Watch an interview with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development' at Blip/EnerjyTV
Past Webinar
past webinar
(guest access)
Watch an interview for OnSoftware: 'Emergent Design, Part 1', with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development'
Past Webinar
past webinar
(guest access)
Watch an interview for OnSoftware: 'Emergent Design, Part 2', with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development'
Podcast
podcast
(guest access)
Listen to Emergent Design, Part 1 and Part 2 podcasts of the OnSoftware By InformIT interviews of Scott Bain in iTunes Preview. Search for 'Bain' in the list.
Article
article
(guest access)
Presents Encapsulation as a First Principle which implies (or leads one to) the other principles of Object Orientation.
Past Webinar
past webinar
(registered access)
This presentation investigates and compares the Adapter, Proxy, and Facade patterns as a way to demonstrate that patterns are best considered as collections of forces, rather than reusable solutions.
Book
book
(guest access)
Essential Skills for the Agile Developer
Article
article
(registered access)
Object-Oriented techniques are rooted in the best practices that were discovered by procedural programmers in years past. This article examines design patterns in terms of their procedural analogs as a way of understanding them in a familiar context.
Article
article
(guest access)
Our view of eXtreme Programming (XP): a methodology we like even as we recognize its strengths and weaknesses.
Presentation
presentation
(subscriber access)
At Net Objectives we believe object factories are a good thing, but once you have decided to create one, there is more to the question. How does a factory decide what to build?
Article
article
(guest access)
This featured article focuses on one, perhaps surprising way we can sometimes identify the appropriate patterns for a given problem.
Presentation
presentation
(guest access)
Developing software is hard, and we often fail. In this article the software problem is outlined and an integrated solution proposed.
Past Webinar
past webinar
(guest access)
This presentation introduces the discipline of Refactoring: behavior-preserving change to a software system that improves design.
Book
book
(guest access)
Lean-Agile Acceptance Test-Driven DevelopmentBetter Software Through Collaboration
Book
book
(guest access)
Lean-Agile Software Development: Achieving Enterprise Agility

Software Design

Presentation
presentation
(registered access)
12:30pm-1:30pm. Friday, March 16Kanban & Developer Track
Past Webinar
past webinar
(guest access)
This webinar is part of the Scaling Scrum to the Enterprise with Lean Software Development series.
Past Webinar
past webinar
(guest access)
This webinar is part of the Scaling Scrum to the Enterprise with Lean Software Development series.
Article
article
(guest access)
Explores one of the more innovative language elements of C#: Delegates, in the hope of investigating some of the opportunities they present as well as some of the dangers to which they expose us.
Article
article
(guest access)
For each quality we will describe it generally, mention any principles that it adheres to or promotes, suggest practices that will help you to enhance the quality, note any indicators that might tell you that your code is lacking in the quality (pathologies), and any testing issues that might help y
Past Webinar
past webinar
(guest access)
This presentation explores the fundamental Code Qualities that help to make systems more maintainable.
Article
article
(guest access)
See an interactive program that illustrates connections between good OO qualities and practices.
Article
article
(guest access)
Download a printable pdf file containing the content of this interactive program.
Book
book
(guest access)
Training and Resources For: Emergent Design: The Evolutionary Nature of Professional Software Development by Scott L. Bain
"I was expecting this to be yet another book on Design Patterns, but it really isn’t. This book attempts to look deeper into questions that cannot be easily answered and...
Past Webinar
past webinar
(guest access)
Read Richard Sharpe's Blog, and see an Interview with Scott about his book: 'Emergent Design: The Evolutionary Nature of Professional Software Development'.
Past Webinar
past webinar
(guest access)
Watch an interview with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development' at Blip/EnerjyTV
Past Webinar
past webinar
(guest access)
Watch an interview for OnSoftware: 'Emergent Design, Part 1', with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development'
Past Webinar
past webinar
(guest access)
Watch an interview for OnSoftware: 'Emergent Design, Part 2', with Scott Bain about his book 'Emergent Design: The Evolutionary Nature of Professional Software Development'
Podcast
podcast
(guest access)
Listen to Emergent Design, Part 1 and Part 2 podcasts of the OnSoftware By InformIT interviews of Scott Bain in iTunes Preview. Search for 'Bain' in the list.
Past Webinar
past webinar
(guest access)
The webinar examines the principles, practices, and disciplines which allow you to evolve a design over time.
Article
article
(guest access)
Encapsulation is a word that’s been with us in software development for a long time; but if you asked people what it means, many would say something like “hiding data”. In fact, there are quite a few books and websites that would use that as the definition of the word.
Past Webinar
past webinar
(guest access)
This presentation is about the 'Magic Consulting Card' in design, and how it can be used to find design patterns in problem domains.
Past Webinar
past webinar
(guest access)
This presentation investigates a technique which helps to prepare a design for complexity, without adding the complexity now. This makes it easier to evolve a design when requirements change.
Article
article
(guest access)
Presents Encapsulation as a First Principle which implies (or leads one to) the other principles of Object Orientation.
Past Webinar
past webinar
(guest access)
See a description of the Lean-Agile at Scale and at the Team: The Value Stream Series
Book
book
(guest access)
Essential Skills for the Agile Developer
Competency
competency
(guest access)
NOTE: This site is intended to become part of the Scaled Agile Framework(tm) It is currently in the process of being built.
Competency
competency
(guest access)
Extended XP engineering practices is a set of practices building on XP, but extended for teams that are part of larger organizations.  XP’s history was mostly with small teams.  As such, it should not be surprising that many of its practices are oriented around the dynamics of small teams.  Give
Presentation
presentation
(guest access)
2:15pm-3:15pm. Tuesday, February 21Agile Mini-Conference for Microsoft Session
Presentation
presentation
(registered access)
10:30am-11:30am. Friday, March 16Kanban & Developer Track
Presentation
presentation
(registered access)
5:30pm-8:30pm. Wednesday, March 21A Free Seminar Event Sponsored by AltaSource Group and Net ObjectivesHosted by Holland America
Presentation
presentation
(guest access)
An Event For Microsoft Employees Only (Contractors not eligible)
Book
book
(guest access)
Prefactoring
Presentation
presentation
(registered access)
Scott Bain's presentation of Software Craftsmanship at the monthly meeting of the Seattle Software Craftsmanship Com
Past Webinar
past webinar
(guest access)
Watch Scott's talk at SeaJug about Sustainable TDD
Presentation
presentation
(registered access)
12:30pm-1:30pm. Friday, March 16Kanban & Developer Track
Presentation
presentation
(registered access)
3:45pm-4:45pm. Tuesday, February 21Agile Mini-Conference for Microsoft Session
Book
book
(guest access)
Past Webinar
past webinar
(registered access)
This webinar is for Agile developers who want to improve their design and coding methods as well as those who are just undertaking Agile and feel they need some help designing and coding in an Agile environment. You will learn:

Database Agility

Past Webinar
past webinar
(registered access)
This presentation explores the critical aspects of developing a database incrementally.

Design Patterns

Past Webinar
past webinar
(guest access)
This presentation investigates the general design advice promoted by the authors of "Design P
Past Webinar
past webinar
(guest access)
This webinar is part of the Scaling Scrum to the Enterprise with Lean Software Development series.
Past Webinar
past webinar
(registered access)
The Bridge Pattern is one of the most common and useful patterns from the book "Design Patterns, Elements of Reusable Object-Oriented Software," by Gamma, Helm, Johnson, and Vlissides. However, it can be a little tricky to understand.
Past Webinar
past webinar
(guest access)
This 'streamzine' features Senior Consultants Scott Bain and David Bernstein reviewing the mechanics of Object-Oriented programming to help prospective students prepare for the course Design Patterns Explained.
Article
article
(guest access)
It depends...on what you think patterns are. By the end of the article, you will have the answer.
Past Webinar
past webinar
(registered access)
This presentation examines The Composite Pattern, and demonstrates its value and its variations with a concrete example.
Article
article
(registered access)
These are some code examples from our course: Design Patterns Explained.
Book
book
(guest access)
Design Patterns ExplainedA New Perspective on Object-Oriented Design
Past Webinar
past webinar
(guest access)
This webinar discusses how design patterns can be used to improve the entire software development process - not just the design aspect of it. Design patterns are usually thought of as being limited to solving local design/implementation problems. However, they can be very useful in:
Past Webinar
past webinar
(guest access)
This webinar is part of the Scaling Scrum to the Enterprise with Lean Software Development series.
Article
article
(registered access)
The Design Patterns Matrix is a nice summary of the Gang of Four Patterns and others.
Book
book
(guest access)
Training and Resources For: Emergent Design: The Evolutionary Nature of Professional Software Development by Scott L. Bain
"I was expecting this to be yet another book on Design Patterns, but it really isn’t. This book attempts to look deeper into questions that cannot be easily answered and...
Past Webinar
past webinar
(registered access)
This presentation investigates and compares the Adapter, Proxy, and Facade patterns as a way to demonstrate that patterns are best considered as collections of forces, rather than reusable solutions.
Past Webinar
past webinar
(guest access)
See a description of the Lean-Agile at Scale and at the Team: The Value Stream Series
Book
book
(guest access)
Essential Skills for the Agile Developer
Article
article
(guest access)
This featured article focuses on one, perhaps surprising way we can sometimes identify the appropriate patterns for a given problem.
Article
article
(guest access)
An anti-pattern is a commonly occurring activity that is counter-productive to the company doing it. A "Lean" anti-pattern is an anti-pattern that goes against Lean principles. That is, it violates the company’s attempts to be following Lean methods.
Presentation
presentation
(registered access)
5:30pm-8:30pm. Wednesday, March 21A Free Seminar Event Sponsored by AltaSource Group and Net ObjectivesHosted by Holland America
Past Webinar
past webinar
(registered access)
This presentation recommends the Memento Pattern for those occasions one needs to remember the state of an object without violating the encapsulation of the object.
Past Webinar
past webinar
(registered access)
This presentation illustrates use of Mock Objects to eliminate some of the dependencies that can hamper unit testing, and also points out the specific relationship between Pattern Oriented Design and Mocks.
Article
article
(guest access)
This featured article, Chapter 22 from the Second Edition of Design Patterns Explained: A New Perspective on Object-Oriented Design, focuses on a project done by following the guidelines of Design Patterns, Agile Development, and Refactoring to show how these ideas can inform each other.
Past Webinar
past webinar
(registered access)
This presentation describes a real world project which was approached in an iterative, incremental, integrated fashion, and which resulted in the use of the Object Pool Pattern.
Past Webinar
past webinar
(subscriber access)
This presentation explains two patterns -- Decorator and Chain of Responsibilty -- and investigates the lessons they teach us about encapsulation.
Article
article
(registered access)
How Design Patterns may participate in the maturation of Software Development into a true Profession.
This article became part of Chapter 2 in Scott Bain's book Emergent Design: The Evolutionary Nature of Professional Software Development.
Presentation
presentation
(guest access)
Patterns are very powerful constructs in software design, but we think of them more as collections of forces than as pre-rendered solutions. Thus, the implementation of a pattern is not prescribed by the pattern, and each pattern can have many implementations.
Article
article
(registered access)
This article explores the relationship between patterns and the forces in the problem domain. In particular, how paying attention to key forces can lead to good decisions in design.
Past Webinar
past webinar
(registered access)
This presentation explores the relationship between patterns and the forces in the problem domain. In particular, how paying attention to key forces can lead to good decisions in design.
Past Webinar
past webinar
(registered access)
This presentation examines the contextual forces that can help you to see which pattern to apply to a problem, and how these forces work together. This Streamzine assumes you know the Strategy, State, Template Method, and Abstract Factory patterns.
Article
article
(subscriber access)
This featured article, Chapter 14 from the Second Edition of 'Design Patterns Explained: A New Perspective on Object-Oriented Design', discusses key principles and strategies which are the cornerstones of design patterns to help you to learn their essential mechanisms in order to improve your abi
Past Webinar
past webinar
(guest access)
This talk is about the notion that your perspective on what can and cannot be done often creates its own reality.
Presentation
presentation
(registered access)
Scott Bain's presentation of Software Craftsmanship at the monthly meeting of the Seattle Software Craftsmanship Com
Past Webinar
past webinar
(registered access)
This presentation examines the State Pattern, showing how it can be used as an alternative to traditional event handling in modal systems.
Presentation
presentation
(registered access)
3:45pm-4:45pm. Tuesday, February 21Agile Mini-Conference for Microsoft Session
Article
article
(registered access)
This featured article, Chapter 19 from the Second Edition of Design Patterns Explained: A New Perspective on Object-Oriented Design, shows how the Template Method Pattern allows for the selective override of a defined sequence of steps based on the likelihood of change and how it can eliminate re
Past Webinar
past webinar
(registered access)
Patterns have been known as “Solutions to Recurring Problems in a Context.” However, they are really more than just that.
Past Webinar
past webinar
(registered access)
This webinar is for Agile developers who want to improve their design and coding methods as well as those who are just undertaking Agile and feel they need some help designing and coding in an Agile environment. You will learn:

Developer/Programming (General)

Competency
competency
(guest access)
NOTE: This site is intended to become part of the Scaled Agile Framework(tm) It is currently in the process of being built.
Competency
competency
(guest access)
Extended XP engineering practices is a set of practices building on XP, but extended for teams that are part of larger organizations.  XP’s history was mostly with small teams.  As such, it should not be surprising that many of its practices are oriented around the dynamics of small teams.  Give

Technical Writing

Article
article
(guest access)
In this featured article, its author Amir Kolsky, Senior Consultant, Agile coach and trainer at Net Objectives, discusses the reasons for the emergence of the myth that Agile teams do not write documentation and the place documentation does take within an Agile process.
Article
article
(guest access)
This featured article is a continuation of the article appearing in the October 2007 Ezine by Amir Kolsky, Senior Consultant, Agile coach and trainer at Net Objectives.

TDD

Presentation
presentation
(registered access)
12:30pm-1:30pm. Friday, March 16Kanban & Developer Track
Article
article
(guest access)
This article, by Alan Shalloway, CEO and Founder of Net Objectives, shares his approbation that Test-Driven Development is rapidly becoming a standard of good software development teams.
Article
article
(subscriber access)
This is about using asserts and their relationship to unit testing. These techniques could be used for different, synergistic, purposes.
Past Webinar
past webinar
(guest access)
This webinar is part of the Scaling Scrum to the Enterprise with Lean Software Development series.
Past Webinar
past webinar
(registered access)
This session is about how proper use of acceptance testing can avoid many problems instead of merely finding them at the end. It redefines the role of QA to one of avoiding errors and improving our system of development.
Past Webinar
past webinar
(registered access)
This presentation provides an argument in favor of developer unit testing, and illustrates the advantages this brings.
Article
article
(guest access)
With the advent of agile methods, Test-Driven Development (TDD) has been gaining momentum. A mantra of agile is that stories are completed, not merely written, every iteration.
Book
book
(guest access)
Training and Resources For: Emergent Design: The Evolutionary Nature of Professional Software Development by Scott L. Bain
"I was expecting this to be yet another book on Design Patterns, but it really isn’t. This book attempts to look deeper into questions that cannot be easily answered and...
Past Webinar
past webinar
(guest access)
See a description of the Lean-Agile at Scale and at the Team: The Value Stream Series
Book
book
(guest access)
Essential Skills for the Agile Developer
Competency
competency
(guest access)
NOTE: This site is intended to become part of the Scaled Agile Framework(tm) It is currently in the process of being built.
Competency
competency
(guest access)
Extended XP engineering practices is a set of practices building on XP, but extended for teams that are part of larger organizations.  XP’s history was mostly with small teams.  As such, it should not be surprising that many of its practices are oriented around the dynamics of small teams.  Give
Article
article
(guest access)
Most of the software quality improvement practices proposed over the years have focused on helping testers find defects in code rather than to prevent the defects in the first place. Product quality has suffered from this approach.
Presentation
presentation
(guest access)
2:15pm-3:15pm. Tuesday, February 21Agile Mini-Conference for Microsoft Session
Presentation
presentation
(guest access)
Lean Software Development has deep roots. Lean jumped into the software world about a decade ago but has still mostly been considered an extension of the main body of Lean, which is rooted in manufacturing.
Book
book
(guest access)
Lean-Agile Acceptance Test-Driven DevelopmentBetter Software Through Collaboration
Presentation
presentation
(registered access)
5:30pm-8:30pm. Wednesday, March 21A Free Seminar Event Sponsored by AltaSource Group and Net ObjectivesHosted by Holland America
Book
book
(guest access)
Lean-Agile Software Development: Achieving Enterprise Agility
Article
article
(registered access)
This featured article, explores the differences between Mock Objects, Fake Objects, and Stub Objects in order to make these terms more specific and therefore more useable.
Presentation
presentation
(guest access)
An Event For Microsoft Employees Only (Contractors not eligible)
Book
book
(guest access)
Prefactoring
Past Webinar
past webinar
(registered access)
This streamzine features a discussion between Senior Consultants Scott Bain, David Bernstein, Amir Kolsky, facilitated by Jim Trott. They describe what is meant by the term "Programming by Intention", and provide a concrete example.
Past Webinar
past webinar
(registered access)
This presentation defines the Open-Closed Principle and shows how refactoring to the Open-Closed reduces over-design and enables low-risk change which is inevitable in all systems which will change during their life cycles.
Article
article
(guest access)
This is an excerpt of Alan Shalloway, Guy Beaver, and Jim Trott's book – "Lean-Agile Software Development: Achieving Enterprise Agility".
Presentation
presentation
(registered access)
Scott Bain's presentation of Software Craftsmanship at the monthly meeting of the Seattle Software Craftsmanship Com
Past Webinar
past webinar
(guest access)
Watch Scott's talk at SeaJug about Sustainable TDD
Presentation
presentation
(registered access)
12:30pm-1:30pm. Friday, March 16Kanban & Developer Track
Presentation
presentation
(registered access)
3:45pm-4:45pm. Tuesday, February 21Agile Mini-Conference for Microsoft Session
Book
book
(guest access)
Past Webinar
past webinar
(registered access)
As Test-Driven Development has gained in momentum and popularity, it has also been called into question as a viable development strategy past the first 3-4 iterations in Agile projects.
Past Webinar
past webinar
(registered access)
This webinar is for Agile developers who want to improve their design and coding methods as well as those who are just undertaking Agile and feel they need some help designing and coding in an Agile environment. You will learn:
Past Webinar
past webinar
(registered access)
This webinar introduces Acceptance Test-Driven Development (ATDD), an essential practice for Lean-Agile software development. You will learn:
Past Webinar
past webinar
(registered access)
This webinar is for Lean-Agile teams who want to understand what makes for effective stories, how to write them, and how big they should be. You will learn:
Past Webinar
past webinar
(registered access)
Engaging in agile software development requires us to rethink what software design is.
Article
article
(registered access)
This featured article investigates the unit testing wisdom which can be found in design patterns.
Presentation
presentation
(guest access)
A great paper on how to get control of legacy code on a project by Michael Feathers.

Tooling

Article
article
(registered access)
The After Action Review is a simple and powerful tool to help a team learn from their experiences in order to gain immediate, concrete improvements in performance. It is a more general and widely useful approach than the retrospection.

Upcoming Events