Advanced Certified Scrum Developer Training
Michigan Technology Services offers our instructor-led two-day Advanced Certified Scrum Developer (A-CSD) training, as well as other Agile and Scrum developer courses, through a partnership with Paul Moore and Rocket Nine.
In a pre-Covid world our training would take place at our location in the Farmington Hills/Novi area, 20 miles outside of Detroit, or at your location anywhere around the world. Our Agile developer workshops and coaching sessions are now offered live online/virtually, reducing your need to travel.
Note that while many CST’s fly into metro Detroit to deliver a class, and then leave, we live here and support the local Agile community. We continue to sponsor regional Agile conferences and local Agile and Scrum meetups. We have strong ties to Agile companies in the metro Detroit area. We have successfully run Agile courses for multiple teams in the Great Lakes area.
What is Advanced Certified Scrum Developer (A-CSD) training?
You’ll see A-CSD courses listed with big lists of buzzwords but terms like SOLID won’t help you if you don’t know how to recognize them in the code.
This intensive two-day course will prepare you to take on the Scrum Developer role.
It includes the full Scrum/Agile experience, including planning, guidance, development, and testing. With very little lecture, the course takes development teams through several full iterations of a realistic sample product development. Participants will gain experience with all the central aspects of Agile software development and how to do the basics of Extreme Programming.
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
- 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.
Those things are important to understand. But even more important is how to put them in to practice on real code. How to recognize the most common violations of good coding practice, so called code smells, and what to do about them.
To do this, we will look at some code, some written to demonstrate a point, some found in open-source projects, some written in class, and some you have brought. We will then decide how to improve it.
The class will be formed into teams of developers. Each team will have the option of working in either JAVA/Eclipse or C#/Visual Studio. We will use Fitnesse for automated acceptance testing. Our low instructor/student ratio allows for excellent support throughout the class, so no one gets left behind.
Upon completion, participants will be eligible to apply for the Scrum Alliance’s Certified Scrum Developer designation.
Additional Benefits of taking our A-CSD course
Participants are eligible for Education Hours for the PMI Agile Certified Practitioner application and PMI PDUs (Professional Development Units)
Students should also arrive at the course familiar with:
- An understanding of programming logic
- A willingness to code
- Agile Manifesto (4 values, 12 principles)
A computer with a prepared development environment. Students will be pair programming in this course and we will need at least 1 working computer for every two students.
Course materials will consist of downloadable PDFs and online Mural whiteboards to guide participants through course learning activities. That’s right. Everything is online and simple. Just the way you like it.
Our next two day Advanced Certified Scrum Developer workshop with Paul Moore will be scheduled soon. While we are located in Farmington Hills the our Advanced Scrum Developer workshop will be virtual.
Private classes for groups or companies are available upon request. In fact, most CSD classes are private, corporate classes. As the workshop is instructor-led, live and online, we can offer the workshop globally. Call 248-489-0408 for details.