Part 1: Agile Principles & Practices
- We will briefly review the Agile Manifesto and introduce critical Agile engineering practices. Many of the most successful, highly productive Scrum teams commonly leverage Agile engineering practices to achieve a sustainable pace while embracing constant change. Effective Scrum teams must continually evaluate, introduce, and adopt Agile engineering practices to improve continually. 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.
Part 2: Feedback & Planning
- Planning as a result of feedback from the customer and team is a critical component of successful Scrum teams. We will explore the levels at which we plan and how to effectively incorporate feedback into each level to guide the team to success.
- Triple Constraints
- Five Levels of Planning
- User Stories
- Relative Sizing
- Sprint Execution
- Sprint Demo
- Team Retrospective
- Agile Rules
- Exercise: Feedback & Continuous Improvement
- Course participants will work through a set of exercises to reinforce the importance of feedback throughout the lifecycle of an Agile project from requirements to execution.
Part 3: Collaboration
- Collaboration is a critical 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 increase the team’s shared knowledge.
Part 4: Architecture, Design, & Shared Understanding
- Discuss the role of architecture on Scrum projects and how using 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 of 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. The instructor will provide a working software example for the team to evaluate without coding standards. The class will discuss the potential waste of effort without coding standards. Course participants will then work in teams to develop simple coding standards. After applying the agreed-upon coding standards, they will examine the inherent benefits.
Part 5: Agile Testing
- We will introduce Agile Testing Practices, including Unit Testing, Acceptance Testing, Test Driven Development, and Acceptance Test Driven Development. We will also contrast Agile Testing approaches 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
- Acceptance Criteria
- Writing Acceptance Tests
- Acceptance Test-Driven Development
- Exercise: TDD and ATDD
- 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.
Part 6: Refactoring
- 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
- The instructor will provide working software and a test suite of unit tests. Course participants will incrementally refactor the software using refactoring methods and patterns to achieve a simpler design and increase quality and maintainability.
Part 7: Continuous Integration
- Discuss the concept of Continuous Integration and the CI Attitude. Continuous Integration is essential in maintaining a constant 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 fundamental tenants and practices of Continuous Integration and serve as a discussion opportunity on effectively utilizing and leveraging Continuous Integration to support the developer and the team.
Part 8: Adopting Scrum Developer Practices
- Recap Scrum Developer Practices and discuss 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 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 implement these practices. The class will compare and discuss action plans.