Extreme Programming (XP) is the most prominent of the Agile Software development methodologies. This course will provide you with a working knowledge of the various facets, practices and principals of the Extreme Programming approach. Upon completion, you will have the knowledge and confidence to determine how XP can be utilized in your development environment, as well as the experience to begin programming using XP. This course is a combination of lecture and hands-on workshops that will prepare you for an XP environment.
Three days of intense, real-world experience
This course is an intensive three-day experience for developers, QA personnel, Business Analysts, and Project Managers. The teams participate in the specification, estimating, planning, development, and testing of a real software project. The course is punctuated by lecture, demonstration, and discussion; but the final day is spent completing a project under the guidance of the instructors.
Create a well-defined picture, encompassing requirements, use cases, and acceptable tests
In the end students gain a breadth of understanding sufficient to see the bigger picture, and are ready to begin to gain depth of experience and tutelage. Managers understand the dynamics of coaching an Agile team. Programmers and testers gain practical experience in using Agile practices such as continuous integration and test, test driven development, paired programming, and refactoring. Customers and business analysts learn how to create well-defined requirements, use cases, and acceptance tests.
Complete a Hands-On Extreme Programming Project, live in class
The final day of class will be spent completing a real coding project. You will be using Java to build an event-scheduling application. The hands-on labs will include, but not be limited to:
- Story-driven development
- Estimation
- Understanding Scope
- Interdependencies
- Release Planning
- Stand-up Meetings
- Paired Programming
- Automated Testing
- Acceptance Testing
- Unit Testing
- Refactoring
*Since these labs include live coding, some experience with Java or a similar object-oriented language is required to complete the project.
20 Immediate Benefits of Participating in this Workshop
- Attendees will understand how to organize the responsibilities of a software development project according to the customer, developer, and manager roles
- What kind of authority needs to be allocated among the team roles
- Awareness of the story-driven workflow
- Knowledge of good story characteristics
- How to organize a teams development schedule into iterations
- The rules of the "The Planning Game" in XP
- The goals of release and iteration planning
- How to estimate level of effort at the story and task level
- How to break feature requests (stories) down into development tasks
- A technique for measuring a team's development "velocity"
- How to do load-balancing to prevent overcommitment
- A format for daily communication ("stand-up" meetings)
- The principles of test-driven development
- When to write and run automated tests
- Awareness of what to test and how
- Experience with both roles in a pair programming team
- Techniques for improving code quality by removing duplication and promoting simple designs
- The value of continuous integration
- How demonstrating new features can improve customer confidence as well as find unexpected behaviors
- How to adapt, evolve, and improve a development process to best fit the needs of a software team