Learn to use a deliberate and disciplined approach to tackle any development challenge and produce reliable, robust, verifiable applications. This three-day Agile engineering workshop provides you with the technical skills necessary to write better code with fewer defects and respond quickly to changing requirements. This is a hands-on agile engineering workshop, so get ready to roll up your sleeves and code! Upon completion, earn your Certified Scrum Developer (CSD) credentials from the Scrum Alliance.
Upon completion of the workshop, participants will have met the core requirement of the CSD track, and those with two prior days of Agile training (CSM) will be eligible for CSD certification by the Scrum Alliance. More importantly, the constructs and techniques taught in the class will be readily applicable by the participants in their enterprise environments.
Participants will work in pairs on laptops configured with the tools necessary to support Agile delivery as we incrementally and iteratively build a simple, yet fully functional working application. The project will adhere to Scrum techniques, leading out with a Discovery/Planning session, with each day being broken into mini-sprints, interspersed with topic discussions/demonstrations of the various engineering practices that are duly reinforced with vigorous hands-on coding exercises.
Study Extreme Programming (XP) practices augment Agile PM framework (e.g. Scrum) in the delivery of software projects. Understand the typical Agile development environment and tools to support Agile engineering practices.
Study the principles of architecture and design practices in an Agile environment, focusing primarily on the techniques that better enable testability and ease refactoring.
Study unit testing principles, TDD as a design approach, Red-Green-Refactor rhythm, collaboration tests vs. isolation tests, and effective use of test doubles.
Study of key refactoring techniques, addressing technical debt, and refactoring legacy code.
An introduction to the key practices of continuous integration, the integration cycle, and creating builds that are automated, self-testing and fast.
Study of agile testing principles, the shifting role of testers in an agile environment, and an introduction to automated acceptance testing and Acceptance Test Driven Development (ATDD) techniques.
Study of architecture and design, focusing primarily on the principles that better enable testability and ease refactoring:
Principles of architecture in an Agile environment
Design practices on an Agile team
Principles that enable testability and ease refactoring
An in-depth look at the way Agile teams work together. This might include, but is not limited to, the following concepts:
Working together as one team
Including the customer in the process
Study of test-first development, including but not limited to the following concepts:
Test driven development (TDD) as a design approach
Unit testing principles and practices
What makes good tests/measuring test effectiveness
An introduction to the key practices of continuous integration, including but not limited to the following:
Single command build
Creating builds that are automated, self-testing, and fast
The importance of a single source repository
Increasing visibility & automating deployment
An introduction to the practice of refactoring, including but not limited to the following concepts:
When to refactor
Refactoring for maintainability
Refactoring to patterns
Refactoring legacy code
Study of agile testing principles and an introduction to the practice of multi-level automated testing,
Automated unit/integration testing
Refactoring for maintainability
Automated acceptance testing
Acceptance Test Driven Development (ATDD)