Agility is not just about process. You must also attend to code quality.
Most team-level training focuses on the frameworks that people will work within. We have found that focusing on their actual work is not only more useful, but overcomes resistance. Frameworks should be used to guide an organization and provide an agreed upon method of collaboration and focus. But understanding how to the work in an Agile way is still required and actually more important. By spending less time on the framework and more on basic Agile skills first enables immediate improvement. It does require, however, an effective way to fill in the rest of the framework. But people will learn this more readily because now they will better understand its purpose. Click the image to learn about the Net Objectives roadmap for technical agility.
Sustainable Test-Driven Development
Sustainable Test-Driven Development teaches participants the skills of unit testing, refactoring, and incremental development. We take it farther than this. Unless developers are trained about which tests to write, how to write them, when to refactor code, and the techniques for breaking dependencies, testing can become unsustainable as projects mature. We teach how to make Test-Driven Development sustainable with a focus on deriving maximum value (technical and business) from minimal effort and cost.
Foundations of Sustainable Development (online)
Sustainable Software Development: Foundations of Sustainable Design is an online course that teaches the fundamental principles of software design. There are choices a developer can make that will make the software they write harder to maintain or extend and choices that will make it easier. This course helps developers make better choices for more longevity and flexibility in their code without introducing undue complexity. 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.
Design Patterns Thinking
Design Patterns Thinking 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.
We teach high-quality object-oriented design using design patterns in our course, Agile Software Development with Design Patterns. We also teach good design as part of our course, Sustainable Test-Driven Development. People might consider these two approaches to be in opposition to each other having come from different eras in the history of our industry. We disagree. We believe there is tremendous synergy between them and in fact find great value in teaching them together through our course, Emergent Design.