
Certified Scrum Developer Training
Program overview
This program introduces Agile Values & Principles, Scrum Framework, Acceptance Test Driven Development, Behavior Driven Development, Test Driven Development, Refactoring, Emergent Design, Agile Architecture, Collaboration, and refactoring techniques to the audience and follows a life cycle approach where participants get to learn how to practice these in real life projects. Participants learn to implement TDD on a project developing in either java, .net, ruby, python or C++ framework. Workshop also covers how to effectively work on legacy code and break dependencies. Expected business outcome is readable, maintainable code going forward as well reduction is defects.
Key Learning Outcomes
- Introduction to Scrum Framework, Elements of Scrum
- Test Driven Development – why, what and how
- TDD Cycle – Red, Green and Refactor
- Drive the development (design and implementation) of a User Story
- Learn concept of Emergent Design and why emergent design
- How TDD helps you design software
- Why testing first is better than testing after
- Overview of Refactoring, Clean Code principle and Refactoring to Patterns
- Software design – going deeper in SOLID design Principles
- How to use mocking frameworks
- Behavior Driven Development using SpecFlow/Cucumber
- Specification by Examples using Gherkin language
- Writing Scenarios and Scenario Outlines
- Preparing Steps using xUnit framework
- Difference between TDD and BDD
- How to setup BDD practices within Scrum team
Key Learning Activities
Hands-on activities (60-70%) and discussion on mentioned topics (30-40%). Hands-on activities include writing unit test, code, writing examples and some group creativity activities.
Target Audience
Development team members including developers, testers, architects, leads and scrum masters.
Prerequisites
Laptops/Desktops with required software and internet connection. Software will be provided by facilitator.
Agenda for 5 days:
The whole workshop will be delivered in 10 Sprints with possible agenda as below:
Day 1: Scrum Essential
Agile and Scrum Framework
- What is time-boxing and why time-boxing?
- What is Empirical Process?
- Scrum Framework – in Brief
Class Project
- Introduction to class project
- Introduction to project infrastructure
- Scrum Roles
- Definition of Done
Product Backlog
- Prepare product backlog
- Refine product backlog
- Identify MVP & MMF
- Ordering product backlog
Day 2: Application Lifecycle Management (ALM) and Scrum Beyond Single Team Scrum
Agile Estimation & Planning
- Why to estimation and how to estimate?
- Relative Estimation
- Estimating Product Backlog
- Preparing Release plan
Sprint Simulation using ALM Tools
- Sprint simulations
- Agile Metrics & Reporting
- Team dynamics and dysfunction
- Introduction to Large-Scale Scrum (LeSS)
Day 3: Agile Requirements and Acceptance Test Driven Development
Specification by Examples Workshop
- Challenges in Collaboration between Business and Development Team
- How to write better Specification
- Why Examples needed for specification
- Writing Examples in Gherkin
ATDD and BDD workshop
- Principles of Acceptance Test Driven Development
- Consequences of ATDD on the Sprint Planning and Sprint Review
- Principles of Behavior Driven Development
- Practicing BDD with Cucumber/Behave/SpecFlow: installation, writing features, testing and reporting
- Role of Product Owner and crew when writing scenarios acceptance
Day 4: Test Driven Development and Agile Design
Test Driven Development
- Test Driven Development (TDD) approach and its benefits
- Improving the quality and design of the code by TDD
- Different types of tests: unit, integration, functional
Unit testing with Unit Testing Framework
- Understand the life cycle of a test in the Unit Testing framework
- Respect of the principle of isolation and control of test results
- The mocks or simulate how the code Device code tested
- Use of simulation frameworks
Organization of test activities
- Methodology of correcting a Bug
- Automate the execution of Unit Test
- Generating reports
- Integration with Build Tool and IDE
Design Frameworks
- Definition and principles of frameworks
- Emergent Design
- Principle of scalability and implementation
Refactoring
- Consequence of technical debt and risk of “breaking” the code
- Where? When? How refactoring?
- 3 stages of refactoring
- Support of TDD and ATDD during refactoring
- Best practices and limitations
- Working with legacy code
Day 5: Continuous Integration and Agile Testing
Introduction to Continuous Integration
- Principles, environment and infrastructure
- Branching strategies and patterns for continuous integration.
- Solutions for Continuous Integration: Hudson, Jenkins, Cruise Control, Bamboo, TeamCity, Apache Continuum
Introduction to Jenkins
- Dashboard and health projects
- Architecture and extension principle
- Installation, configuration and use of Jenkins
- Automated Builds with Jenkins
- Automation Testing with JUnit (TDD) and Cucumber (BDD/ATDD)
Agile Testing
- Importance of Agile testing
- Ensure better quality product sprint by sprint
- Test Automation Frameworks
- Test quadrants and test pyramids
Other topics
- Continuous Delivery and Deployment – Why and How?
- DevOps Introduction
- ALM tools for Development Team such as Jira