Agile Programming Techniques


3 Days


The Agile Design and Development track equips participants with the latest tools and techniques to implement fully tested, cleanly designed software solutions. In addition, courses discuss the agile mindset for software development, which encourages developers to embrace change by developing easily adaptable solutions architected to maximize business value.

Learning Outcomes

  • Create unit tests to test individual classes and modules in isolation.
  • Safely refactor legacy code bases without breaking existing code.
  • Drive design and development with unit tests using TDD and BDD.
  • Write automated specifications/acceptance tests.


  • Unit Testing and Dependency Injection
    Learn about the anatomy of a unit test and create tests in JUnit or NUnit. Use common patterns for creating and structuring tests and fixtures to: create readable and maintainable tests; and avoid duplication. Create test doubles using stubs and mocks to isolate the test fixture and eliminate any dependencies. Apply dependency injection for easy configuration to facilitate the use of test doubles without needing test hooks in production code.
  • Refactoring
    Apply refactoring patterns to safely restructure code into a better design without changing its outward behaviour. Discover code smells identifying code that should be refactored in order to remove technical debt. Look for seams to add unit tests to legacy code in a safe fashion without refactoring the code, even though the code was not designed with testing in mind.
  • Design
    Understand the need for simplicity in design and code. Learn to evaluate design and design principles from the perspective of simplicity and quality. Look at how systems decay over time and discover techniques to monitor the technical debt. Use the principle of simplicity of design and code to avoid or eliminate technical debt.
  • TDD and BDD
    Discover how test-driven development focusses on the design and the desired result. Apply TDD to create a high-quality system. Understand the difficulties of applying TDD. Use behavioural requirements to identify what to do next and what to test.
  • The Build Process
    Understand how Agile collaboration with concepts such as collective accountability and collective ownership. Experience pair programming, identifying the benefits and challenges and understanding the different types of pairing. Look at how build tools provide automation of the build and test process, and how version control provides a source code repository to support multiple developers working on the same system. Learn how continuous integration helps us have confidence regarding the quality of the code in the source code repository and manages integrating the work of multiple developers.
  • ATDD
    Discover how TDD delivers technical quality but not necessarily user quality. Apply ATDD to ensure user quality and drive TDD. Create readable user specifications that can be “executed” as automated acceptance tests, resulting in “living documentation”.