Advanced Certified Scrum Developer [A-CSD] (Central timezone)

January 25-26, 2023

Learn tools, practices, and techniques that support “working software” delivered frequently with technical excellence aligning with Scrum.

Live Online/Instructor-Led Course

Purpose
This Advanced Certified Scrum Developer training course is aimed at software developers (programmers) who are building software in an Agile environment. The goal is to expose students to the most important tools and techniques that need to be applied in order to build good software in the iterative and incremental way. These ideas are central to the entire field of Agile software development.
To understand the value Certified Scrum Developer training in agile technical practices can bring to your team, please watch this conversation between R9 founder Scott Dunn’s and technical coach and trainer Paul Moore.

Format
Our A-CSD technical course is unique in that we spend the second half of the course cycling through online mob programming exercises. Instructor models the XP practices required for strong agile tactical development. Then students pair and group together to practice the collaborative nature of agile engineering teamwork. Our low instructor/student ratio allows for excellent support throughout the class, so no one gets left behind.

Scope
The A-CSD Learning Objectives cover critical skills in Scrum process, coding, testing, refactoring, continuous integration, and other related topics that are needed for successful team software development.
Learning objectives:

1. Lean, Agile & Scrum

Apply a modeling technique to visualize the flow of work.
Describe at least three concepts that help identify improvements to a work system.
Discuss at least three different types of wastes in product development environments and how they could be addressed in a Scrum Team’s Definition of Done.
Practice formulating and iteratively evolving a Definition of Done and identify at least three reasons why and how the DoD should evolve.
Discuss at least three methods Developers could use to address challenges arising when working with multiple teams on one product.
Evaluate at least one improvement you or your team introduced into your way of working as a result of a Retrospective
Discuss at least one business perspective on development work

2. Collaboration & Team Dynamics

Compare and contrast at least three different approaches of working together. Example: Cooperation, collaboration and co-creation (Collective
Apply at least one technique to improve listening and understanding others. Example: Retrospective with story cubes,: (3 Levels of listening, Active Listening)
Practice giving and receiving feedback.
Apply a collaborative development practice.
Describe the differences between Utilization, Efficiency, and Effectiveness
Practice at least one way to size Product Backlog Items so they fit into a Sprint.

3. Architecture and design

Explain at least three differences between up-front and emergent architecture
Explain at least three design principles that inform agile architecture considerations.
Explain at least three approaches how to design for and verify system constraints, and practice one of them.
Compare and contrast at least three code and product quality metrics. Example: Cyclomatic complexity, test coverage, unit length, number of warnings, WTFs per minute, static analysis. Books to go deeper: McConnell’s Code Complete, Clean Code – Martin, Design Patterns – GoF

4. Refactoring

Demonstrate at least one approach to refactor a system for maintainability. Example: Strangulation, Anti-corruption layer
Explain at least three possible code and product smells and demonstrate how to approach one of them during refactoring.
Explain refactoring to a non-technical stakeholder.
Explain technical debt, outline at least three causes that lead to technical debt and discuss how to address one of the causes.

5. Test-Driven Development

Restate at least three guiding principles of TDD and explain why they are necessary.
Demonstrate designing a software or product entity using TDD as a design approach.
Apply at least five unit-testing principles and practices.
Identify at least five measures to improve the quality and effectiveness of tests and apply at least three test refactoring approaches.
Outline at least one concept to categorize testing and assign different methods for testing to the different categories.
List at least three attributes of a test first business facing collaborative approach. Examples: ubiquitous language, fast feedback cycles, business readable, automatable acceptance tests, living documentation
Apply at least one approach to implement a test driven feedback loop with stakeholders and users.
Apply at least one technique to deal with missing or resource inefficient components or subsystems.
Discuss at least three different ways to approach technical excellence by validating and improving the inner quality of a system; and practice at least one of them.

6. Integrating Continuously

Discuss at least five areas of concern that need to be dealt with when integrating continuously.
Practice creating a build that is automated, self-testing, and fast. Example: It is totally fine to work with a framework here. Include optimization of setup, compile, build time.
Apply at least one Continuous Integration approach with a team. Example: Integrate a product with two or more product modules, include unit testing, add acceptance and regression testing. Taking responsibility, that the complete product works for the user.

7. Learning by Delivering Continuously

Define Continuous Delivery and discuss at least three benefits.
Describe at least three technical practices for Continuous Delivery. Examples: Feature flags, automated deployment pipelines, infrastructure as code and dynamic infrastructure, convention over configuration, canary releases
Discuss at least one approach to incorporate feedback about the expected outcome of a delivery.
Outline a continuous deployment approach.