Course DescriptionDesign Patterns for Agile Developers helps participants learn to use design patterns to support Agile development. Design patterns enable the emergent design that is needed on Agile projects. Although patterns at one time were thought of as a “design up-front technique, they can be used in Agile projects to encapsulate variations that are discovered over time. For development organizations to thrive in an Agile environment, it is critical that the systems they create are not vulnerable to changing requirements, business priorities, technologies, or market pressures. This course addresses key questions in modern development such as how to design systems that have changeability as a fundamental quality and how the team can communicate effectively when a design is in a constant state of change.
The resources on this page help students of Design Patterns for Agile Developers explore the topics in the course more deeply.
This page has a wealth of materials on design patterns, agile design, object-oriented analysis and design.
Code Quality Practices: Flash-based interactive or PDF
The practices involved in code quality including write tests first, code by intention, write clearly, encapsulate by convention and reveal by need, avoid redundancy, do not do more than needed, pull out things that vary, treat conceptually similar things the same way, favor composition over class inheritance, design to interfaces, separate use from construction, refactor code as needed, limit yourself to one perspective in a class or method.
The Design Patterns Matrix is a nice summary of the Gang of Four Patterns and others
Exercises and Solutions
Design Patterns coding exercise and solutions the purpose of this document is to provide a hands-on coding experience in implementing design patterns, and to show how patterns can emerge throughout the life-cycle of a software project, as requirements change, grow, and become clearer.
The OOPSLA DesignFest Problem Collection is about design and creativity. It was created to give OOPSLA attendees the opportunity to learn more about design by doing it. DesignFest is not about passively sitting and listening to experts talk about design. DesignFest is about sharpening your design skills by rolling up your sleeves and working on a real problem with others in the field.
The competencies required for Lean-Agile Programming: Professional, code qualities, principles, practices, wisdom, patterns, and discipline.
The purpose of this repository is to serve as a central clearing house for patterns in software. You are free to use this material for your edification and study.
A LinkedIn group for all conversations relating to supporting Net Objectives courses including both technical agility, process, portfolio management. This LinkedIn group was formed by Net Objectives trainers and coaches who are active in the group.
The Paradigm to Practices poster presents a list of qualities, practices, principles, guidance and more for developing code well.
Videos and Streamzines
Here is a list of videos and "streamzines" (short training videos) that were mentioned during the course.
The following books in the Net Objectives Effective Software Development Series relate to this course and offer online excerpts.
This book answers the question many developers have after taking some initial Agile/Scrum training – “OK, how do I write code now that we are building our software in iterations?” This book provides over a dozen proven practices that help developers improve their coding practices and make their code more easily changeable and maintainable in Agile projects.
As software continues to evolve and mature, software development processes become more complicated, relying on a variety of methodologies and approaches. This book illuminates the path to building the next generation of software. Drawing on patterns, refactoring, and test-driven development, Scott L. Bain offers a blueprint for moving efficiently through the entire software life-cycle, smoothly managing change, and consistently delivering systems that are robust, reliable, and cost-effective.
Design Patterns Explained provides the reader with a gentle yet thorough introduction to design patterns and recent trends and developments in software design.