The course is appropriate for individual software developers and testers, as well as development team members who want to experience Agile development for the first time, or to sharpen their skills in Agile.
- Software Development Managers
- Software Development Architects
- Software Developers
- Software Coders
- Software Testers
- Team Leaders.
The candidates for this course should generally be programmers in a programming language such as Java, C#, Swift, C++, Ruby, and so on. The course involves actual programming in a team environment. Some courses offer student slots to testers, who should have some experience with test automation. Some also accommodate Product Owners, who will help direct the iterations that the programmers and testers experience during the course. This notwithstanding, the course is a programming course, not a survey, overview, or discussion. Actual code will be written, tested, and reviewed by the instructors. Students should also arrive at the course familiar with:
- Scrum Guide;
- Agile Manifesto 4 values and 12 principles;
- The Scrum Values;
To achive the certification Certified Scrum Developer (CSD), the student must already be a Certified Scrum Master (CSM).
By the completion of the CSD course, the learner will be able to perform test-driven development, acceptance test-driven development, refactoring, and continuous integration in a course-provided sandbox situation. The learner will be familiar with the terms and practices involved, and with why these practices are important. They will have taken the first steps toward becoming expert in Scrum-style iterative and incremental development. By the completion of the CSD course, the learner will be able to . . .
- Agile Values
- Define simplicity, communication, and feedback (in relation to the Agile Values that drive Scrum).
- Describe “individuals and interactions over process and tools.”
- Describe “working software over comprehensive documentation.”
- Describe “customer collaboration over contract negotiation.”
- Explain, using examples, “responding to change over following a plan.”
- Scrum – Study of Scrum principles and practices, including but not limited to, the following key concepts:
- Define Scrum roles, activities, and artifacts.
- Outline the process of working with a product backlog and a sprint backlog.
- Define a sprint.
- Describe the process of defining “Done.”
- Architecture and Design – Study of architecture and design, focusing primarily on the principles that better enable testability and ease of refactoring, including but not limited to, the following key concepts:
- Outline at least three principles of architecture in an Agile environment.
- Design at least one practice on an Agile team.
- Outline at least two principles that enable testability and ease of refactoring.
- Collaboration – An in-depth look at the way Agile teams work together. This might include, but is not limited to, the following concepts:
- Describe “working together as one team.”
- Describe how to “include the customer” in the process.
- Define pair programming.
- Test-Driven Development – A study of test-first development, including but not limited to, the following concepts:
- Describe Test-Driven Development (TDD) as a design approach.
- Review the steps of the red-green-refactor cycle.
- Explain, using examples, at least three unit testing principles and practices.
- Outline five qualities of a good test.
- Describe how to measure test effectiveness.
- Refactoring – An introduction to the practice of refactoring, including but not limited to, the following concepts:
- Describe when to refactor.
- Outline refactoring for maintainability.
- Define refactoring to patterns.
- Continuous Integration – An introduction to the key practices of continuous integration, including but not limited to, the following key concepts:
- Define a single command build.
- Summarize how to create a build that is automated, self-testing,and fast.
- Describe the importance of a single-source repository.
- Define increasing visibility and automating deployment.
The first day begins with a demonstration of pair-programming and test-driven development and an overview of Fitnesse. After this, we move on to the laboratory project that will be the basis for the rest of the course. After an introduction to the problem and its associated backlog, each team will conduct a Sprint Planning meeting and begin work. At the conclusion of each ninety minute Sprint, each team will review their completed features with the rest of the class and then conduct a Sprint Retrospective. During each Sprint Review, the instructor will review each team’s application and test code. He will focus on two areas, the relationship between a module and its tests, and the design and structure of the code. It has been understood for over forty years that high quality software is composed of loosely coupled modules of highly cohesive code. These attributes are, to the skilled observer, obvious in the source code and will be the basis of most of the discussion during the code review. The course proceeds with planning, sprint execution, review, and retrospective (and a short lecture here and there) until the afternoon of the last day. The course concludes with a course review, retrospective, and plenty of time for questions and answers.