Agile Development Practices

This course is intended to help developers understand what it takes to be effective on an Agile project. There is coverage of the core Extreme Programming (XP) engineering practices, in addition to broader topics such as quality management, iterative and incremental design, and ongoing skill development.

Participants will be working on a single project, driven with real world requirements provided in story form. Practices are introduced gradually, to allow participants to not only learn each individual practice, but also how these practices interact with each other. Upon completion of the course, everybody should be armed with a toolkit of principles and techniques to handle the practical matters of day‐to‐day Agile software development.

Overview

Audience

Software Developers, Quality Analysts, Software Testers, Enterprise Architects,
Technical Managers

Duration

3 days

Pre-requisite

Agile Fundamentals

Objectives
  • Understand the core Agile engineering practices and how they impact the quality function on an Agile team
  • Obtain understanding of Test Driven Design / Development by way of hands on instruction.
  • Obtain understanding of Refactoring by way of hands on instruction.
  • Obtain understanding of Continuous Build and Release practices by way of hands on instruction.

Course Outline

Introduction
  • Introduction of trainers and participants
  • Hopes & Concerns exercise
  • Learning objectives
  • Agile best practices review
Essential Agile Engineering Practices
  • Pairing
  • Refactoring
  • Test Driven Design / Development
  • Functional/Integration Testing - Tools and Practices
  • Continuous Integration
  • Design Patterns
  • Build and Release
Project introduction
  • Overview of the Movie Rental Application
  • Design overview
Pairing Introduction
  • How to Pair
  • Pairing Infrastructure
    • Monitors
    • Keyboard and Mouse
  • Rotation Techniques
  • Work on the Story with a pair
Pairing Continuation and Refactoring Introduction
  • Pairing Styles
    • Driver & Navigator
    • Ping-Pong
    • Ball & Board
  • What is refactoring?
  • Examples
    • Rename
    • Extract Method
    • Split Loop
  • Work on the Story with a new pair, refactoring as needed
Test Driven Development/Design
  • What is TDD?
  • Why TDD?
  • Three laws of TDD
  • Work on the Story with a new pair, written in a TDD style.
Design Patterns
  • What are Design Patterns?
  • Examples of Design Patterns
    • Composite Pattern
    • Strategy Pattern
  • Work on the Story with a new pair
Functional and Integration Testing
  • What is Functional Testing?
  • What is Integration Testing?
  • Introduction to Twist
  • Demo on using a Web Driver in Twist
  • Work on the Story with a new pair. A functional test will be written as well
Continuous Integration
  • What is CI?
  • Introduction to Go
  • Work on the Story with a new pair, using CI to verify everything builds correctly
Deployment Pipeline
  • What is a Deployment Pipeline?
  • Using Go for Automated Deployments