Engineering for Agility (Java, .NET, or Python)
Agility is not just for humans. If our software is brittle and inflexible, our ability to pivot with market demands is severely compromised. Whether we are working with new code or old, the agility we need has to be deliberately designed. This course combines the human and technology elements to form a basis for intentional, thoughtful development of high-quality, easy-to-change architecture and code.
The two-day Engineering for Agility course leverages automated testing as a framework for thinking about code — whether legacy or greenfield — and for liberating teams to experiment freely and safely. Students learn patterns and anti-patterns of testing, architecture, collaboration and tooling for making software releases a monotonously frequent and uneventful experience.
Extend the learning experience to include hands-on workshops that expand this course to a deeper dive into areas of particular interest using your own systems, teams, and backlog as the subject matter. Topics include:
- Architecting Socially – Collaborating with Architects and Each Other
- Managing Technical Debt- Maneuvering in Legacy Code and Incremental Modernization
- Effective Usage of Git – Branching Models, Clean History
- Social Programming – Mobbing, Pairing, and Product Owner Collaboration
- Testing Strategies – API, Exploratory, Contract, Performance
- DevSecOps & CI/CD – Pipeline Design, Continuous and Automated Deployment
Each workshop involves assessing areas of concern, exploring the patterns and techniques that may help, and planning out an approach for iterative improvement.
This class and its related workshops emphasize thought and behavioral patterns applied through hands-on exercises to reinforce learning. Concepts are taught progressively, with each layer building upon and reinforcing the previous ones.
Available formats for this course
Duration2 days/16 hours of instruction
Starting at: $1795
Group Rate: $1695
- Recognize and remediate code that will limit future agility
- Understand and practice test-driven development (TDD) as a design tool to create flexible, modular, maintainable software
- Comprehend architectural styles, patterns and principles that design agility into the system
- Iteratively re-engineer and introduce agility into a legacy codebase
- Familiarize with typical tools for supporting agile engineering and how to use them well
- Practice with teaming and social programming concepts and methods including pair programming and mob programming
- Familiarize with the testing pyramid and strategies for testing at each level of it
- Recognize advanced testing concepts for further exploration