Certified ScrumDeveloper Track
Hands-on Agile Engineering
All courses on the Certified Scrum Developer track are taught by Registered Education Providers. For more information on the curriculum for the CSD credential, visit http://www.scrumalliance.org/pages/certified_scrum_developer.
- This course fulfills the technical skills requirement on the Certified Scrum Developer track.
Approved course for the Certified Scrum Developer (CSD) Certification from the Scrum Alliance.
In this course, you will learn how to:
- Apply Agile testing strategies based on unit and acceptance testing, and create a bottom-up confirmation to verify that your software works correctly
- Utilize technology available today to support continuous integration of software, automated builds, self testing and self reporting build processes
- Maintain high levels of product quality and code integrity, even throughout large and complex efforts
- Embrace continuous planning at five different time horizons, recognizing the value of continuous planning over simply following a plan
- Find and support the key ingredient for consistent and reliable software development projects for any industry and any team size
- Use Scrum fundamentals to plan and deliver complex software products as efficiently as possible
- Explore the benefits of utilizing Test Driven Development to build quality into the product before it is released to testing
Go Beyond Just the Principles
After teams have been exposed to the principles of Scrum, they are left wondering about the more technical aspects of software development and delivery and how these areas fit into an iterative approach. This Scrum training course extends important Scrum principles to their logical applications in several technical, foundational areas of software development:
- Product foundation planning; architecture and design patterns
- Effective execution through collaborative efforts
- Building quality into the product; reduce testing cycles late in the project
- Reducing technical debt early and often
- Building a product that will remain viable for years rather than months
- Automating the supporting build and test processes to reduce overhead
Discover the Strengths Across the Various Methodologies
Borrowing from a variety of Agile disciplines, the course will introduce and explain a wide range of available tools and techniques that can offer team flexibility in their Agile approach. Each subject area is accompanied by real world examples of how they have been used in the past, and the success criteria for each instance.
Move Beyond Simple Theory
Based on the understanding that theory and principles solidify into practices and habits through experience, the course is comprised of numerous hands-on exercises that demonstrate the use and benefit of each practice area and technique. You will not only understand the mechanics of each technique, but will participate in the discovery and discussion of how to ensure the creation of value in your organization. The goal of this Scrum training workshop is to put to use what you learned through books and lectures to determine how to utilize that knowledge, including how to ensure that your team is improving over time. With this proven approach, you will leave the class with practical knowledge and a clear roadmap for your team's success.
In-Class Hands-On Group Exercises
Your classroom is set up in pods/teams. Each team looks like a real-world development unit in Agile with project manager/ScrumMaster, business analyst, tester and developer. The teams will work through the Agile processes and their technical implementation equivalents discussing and developing architecture plans, design patterns, test plans and processes, and a mechanism to ensure each is meeting the organization's expectations.
Specifically you will:
- Identify the most appropriate architecture and design practices to suit your product, team, and organization
- Learn how to apply the principles of Test Driven Development to build products that require shorter testing cycles
- Invest in your product's lifespan through ruthless refactoring; creating products that are cheaper to maintain, require less feature recycling, and suffer less downtime
- Adapt to your customer's evolving understanding of their needs and wants, without adversely affecting delivery
- Minimize the handoffs between development silos that result in longer cycle times and organizational constraints
- Learn how to benefit from today's continuous integration and testing automation software packages that enable shorter product development cycle times
- Explore techniques of source code management without hindering collaboration and change responsiveness
- Use the experiential data of team's efforts to benefit subsequent design and development decisions
Immediate Benefits of Participating in this Workshop
- Implement Test Driven Development to minimize the possibility of defects reaching the production environment
- Develop the correct technique for continuously integrating your newly developed code into the existing code base
- Apply Agile and Scrum principles and best practices to form the best mix for your team's success
- Learn the different approach to Agile architecture and design that supports a more incremental and emergent project
- Transform your development processes to reflect the most efficient approach given your organization's constraints
- Identify the pitfalls that poorly disciplined Agile teams fall into – contributing to failed Agile adoption and implementation attempts
- Learn how to adopt Agile practices effectively within the context of your existing software development framework
- Utilize refactoring to ensure a longer lifespan of your software
- Gain practice in organizing your group into a self-managed team
- Develop the correct technique for continuously integrating your newly developed code into the existing code base
- Conduct exercises in a real-world Agile development unit, see first hand how the roles mingle together to get the work done through collaboration
- Discover how continuous, incremental improvement will allow your team to continue growing long after the conclusion of the course
- Using Scrum as the backdrop, acquire techniques for successfully scaling Agile across your teams and the enterprise
- Using the provided working examples of code, dive into Agile Engineering practices no matter what development framework you use.
- Learn how the appropriate level of planning will reduce rework and waste in your architecture designs
- Learn the pattern of behavior for Agile engineering excellence, you will not get lost in the code
- Learn how to adapt from a plan-driven approach to continuous planning, starting with the inclusion of actual velocity-driven aspects into your planning, scheduling and tracking
- Practice the coaching and communicating skills of a ScrumMaster and understand the differences between what a ScrumMaster does compared to a traditional Project Manager
- Run multiple iterations using real-life scenarios
- Make your first hands-on experience with Agile a classroom experience, not a production experience
*Virtual sessions are not approved by the Scrum Alliance to award CSD certification.
I. Agile Principles & Practices
We will briefly review the Agile Manifesto and introduce key Agile engineering practices. Many of the most successful, highly productive Scrum teams commonly leverage Agile engineering practices to achieve a sustainable pace while embracing the constant change. Effective Scrum teams must continually evaluate, introduce and adopt Agile engineering practices in an effort to continually improve. This course is designed to introduce many of these practices and the benefits they provide. A series of thoughtful, hands-on exercises will further solidify and enhance the understanding of these practices.
EXERCISE: Defining Our Challenge Course participants will openly discuss challenges facing their current development teams. We will discuss common myths and misperceptions of both the Agile discipline and the Agile developer.
II. Feedback & Planning
Planning as a result of feedback from the customer and team is a key component of successful Scrum teams. We will explore the levels at which we plan, and how to effectively incorporate feedback into each of these levels to guide the team to success.
• Triple Constraints
• Five Levels of Planning
• User Stories
• Relative Sizing
• Sprint Execution
• Sprint Demo
• Team Retrospective
EXERCISE: Feedback & Continuous Improvement
Course participants will work through a set of exercises aimed at reinforcing the importance of feedback throughout the lifecycle of an Agile project from requirements to execution.
Collaboration is a key element of Scrum teams. We will discuss forms and forums for collaboration with the team, in the team, and with the customer. Paring will be introduced and used continually throughout the remainder of the course.
• Customer Collaboration
• Team Collaboration
• Pair Programming & Pairing
EXERCISE: Self-Organizing Teams
Through a series of interactive exercises, course participants will experience the chaos created by individuals without common goals. Ultimately the team will be allowed to self-organize with minimal direction and experience the harmony and balance of a self-organized team.
Using the techniques introduced by pair programming, course participants will solve a problem in pairs. This exercise will demonstrate the value and effectiveness of pairing to develop better solutions and to increase shared knowledge of the team.
IV. Architecture, Design, & Shared Understanding
Discuss the role of architecture on Scrum projects and how the use of design principles can lead to simple, flexible designs and systems. We will introduce the shared aspects of design and code quality. Testability is a driving concern in Scrum teams and we will discuss the reasons and benefits from focusing on testability.
• Architecture as a Concern
• Design Principles
• Coding standards
• Collective code ownership
• Simple design
• System metaphor
• Testability as a Driving Concern
EXERCISE: Coding Standards
Course participants will discuss thoughts and current practices regarding coding standards. Instructor will provide a working software example for the team to evaluate in the absence of coding standards. The class will discuss the potential waste effort that can exist in the absence of coding standards. Course participants will then work in teams to develop a simple set of coding standards. After applying the agreed upon coding standards they will look at the inherent benefits.
V. Test Driven Development (TDD)
We will introduce Test Driven Development and contrast to the traditional test last approach. Discuss the benefits and process of TDD and how it can lead to better overall design and simplicity.
• Test First vs. Test Last
• TDD Rhythm: Red, Green, Refactor
• TDD influence on Design
• Unit Testing Principles
EXERCISE: Test Driven Development
Using Test Driven Development (TDD), course participants will develop a Test List and follow the TDD Red, Green, Refactor cycle to develop software and meet the instructor's requirements. Course participants will experience the cadence and rhythm of the TDD process.
There is a symbiotic relationship between good tests and the refactoring process. We will discuss why, when and how teams should consider refactoring.
• Safety Net of Tests
• Refactoring Patterns
• Refactoring for Maintainability
Instructor will provide working software and a test suite of unit tests. Using refactoring methods and patterns, course participants will incrementally refactor the software to achieve a simpler design and increase quality and maintainability.
VII. Continuous Integration
Discuss the concept of Continuous Integration and the CI Attitude. Continuous Integration provides an essential role in maintaining a continuous process for providing feedback to the team.
• Discuss the Attitude of Continuous Integration
• Discuss how and why you must develop a single command line build
• Automating the Build
• The 10-minute build
• Benefits & Practices of Continuous Integration
EXERCISE: Continuous Integration
Participants will define and execute a Continuous Integration process using a popular open-source Continuous Integration product. This exercise will reinforce the key tenants and practices of Continuous Integration and serve as a discussion opportunity on how to effectively utilize and leverage Continuous Integration to support the developer and the team.
VIII. Testing Practices
Various levels & types of testing and the benefits they provide Scrum teams will be reviewed. Additional discussion focuses on how and what to automate in order to shorten feedback cycles.
• Testing Quadrants
• Unit Tests
• Integration Tests
• Acceptance Tests
• Functional Tests
IX. Acceptance Testing
The discipline of Acceptance Testing can lead to better collaboration with both the customer and the team. Automating Acceptance Tests can provide an invaluable tool to support the creation of higher quality software and continue to support the team from story to story and sprint to sprint.
• Acceptance Criteria
• Writing Acceptance Tests
• Acceptance Test Driven Development
• Automating Acceptance Tests
EXERCISE: Acceptance Testing
Course participants will develop a set of Acceptance Tests (Story Tests) from a sample set of User Stories containing Acceptance Criteria. Using Acceptance Test Driven Development (ATDD), course participants will use these Acceptance Tests to drive development of the sample User Stories.
X. Adopting Scrum Developer Practices
Recap Scrum Developer Practices and have an open discussion about how to introduce, adopt, and expand Practice use within Scrum teams.
• Recap Essential Scrum Developer Practices
• Team ground rules to start off on the right foot
• Develop a roadmap leveraging Scrum Developer Practices
EXERCISE: Create a Roadmap and Action Plan
Course participants will prioritize the Agile engineering practices that they might want to introduce to their current projects, teams, and organizations. Using the three highest priority concepts, course participants will create a plan to bring these practices into action. The class will compare and discuss action plans.
Because this is an immersion course and the intent is to engage in the technical practices every Agile team will employ, this course is recommended for all team members responsible for delivering outstanding software. That includes, but is not limited to, the following roles:
The Certified Scrum Developer Workshop is a perfect place for cross functional, technical "teams" to become familiar with Agile methods and learn the how to make the process work technically together.